Commit Graph

1742 Commits

Author SHA1 Message Date
Stephan Aßmus
8a1c136e47 Use the front buffer for screenshots always, otherwise we don't get the contents
of BDirectWindows for setups where the app_server uses double buffering mode.
I didn't test the change, but the way the cursor is optionally copied into
the bitmap (which might now be not 32 bpp) looks very flexible.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-10 15:32:01 +00:00
Stephan Aßmus
417889ced8 * Handle clearing to white on the client. This also makes sure that bitmaps are
cleared which have no app_server link (B_BITMAP_NO_SERVER_LINK).
* Check the allocation of the BWindow in BBitmap for view accepting bitmaps.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24344 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-10 10:51:56 +00:00
Stephan Aßmus
582b3d5a72 * When allocating a new Window, check the allocation of the DrawingEngine
instance by introducing Window::InitCheck(), use new (nothrow).
* Window is responsible for the DrawingEngine instance, but forgot to delete
  it.
* OffscreenWindow is no longer special, every Window owns a DrawingEngine,
  no need to delete it anymore, but since it already deletes the HWInterface
  instance, it needs to detach the DrawingEngine from it.
* Use new (nothrow) in OffscreenWindow as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 17:41:24 +00:00
Stephan Aßmus
f875a78340 RenderingBuffer returns IntRect in Bounds() now. Should have been
part of an earlier commit...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24307 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 17:36:15 +00:00
Axel Dörfler
c7a77521ff Renamed all *LAYER* constants to *VIEW*.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 16:44:18 +00:00
Axel Dörfler
437b19277f * Removed severly outdated DebugInfoManager.
* More "layer" cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 15:28:31 +00:00
Axel Dörfler
953d895e02 * Got rid of the "Layer" part of WindowLayer, ViewLayer, WorkspacesLayer
(now WorkspacesView), OffscreenWindowLayer.
* Renamed ServerScreen.cpp/h to Screen.cpp/h (the class was already called
  Screen).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24303 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 12:45:54 +00:00
Axel Dörfler
b0121f5117 AccelerantHWInterface::_DrawCursor() did not override its parent method, but
hide it (because of different argument types, BRect vs. IntRect).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24302 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 12:26:59 +00:00
Axel Dörfler
2c184b20ed * The Desktop is now maintaining a list of workspaces views, and supports
more than one of them at the time.
* Changed ViewLayer::FindView() to FindViews() that collects all views
  with the given flag set, not just the first one.
* Made ViewLayer::AttachedToWindow() and DetachFromWindow() virtual,
  WorkspacesLayer now overloads them to register itself with the window and
  the desktop.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24300 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 11:42:20 +00:00
Axel Dörfler
e0d6d2fe80 Fixed warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24299 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-08 11:36:10 +00:00
François Revol
9fb2c0f239 Fix tracing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-06 14:27:18 +00:00
Axel Dörfler
6ec72e838c * In normal mouse mode, the focus list is no longer used to find the
next window to get focus after the current one is gone. This fixes the
  strange behaviour when using right-click to send the current window to
  the back.
* When FFM is active, Desktop::SendWindowBehind() will now choose the 
  new focus window to be the one under the mouse, overriding the focus 
  list.
* Desktop::SendWindowBehind() will now also call _SendFakeMouseMoved()
  if necessary.
* Removed Desktop::fFocusFollowsMouse; it was not used or 
  maintained anywhere.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24269 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-06 12:55:41 +00:00
Stephan Aßmus
cebfa7dc45 I was trying to fix Firefox redraw problems, but this change does not
help. However it appears I might have fixed the GL apps drawing over
other windows. Cannot reproduce this problem anymore, but it may be
that this bug doesn't show on my new setup (32bit double buffered VESA).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24267 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-06 11:15:09 +00:00
Axel Dörfler
d01879e5a6 * Added a separate focus list that will contain all windows in the order
of the last focus.
* When choosing a new focus window, this list is now used to find the
  new focus window instead of just choosing the next window in the
  workspace list.
* With the normal mode mouse, this shouldn't change anything, but with
  focus follows mouse turned on, this will behave much better if you 
  don't actually move the mouse - and it also fixes bug #1886.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24234 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-04 12:47:34 +00:00
Rene Gollent
676308a602 App Server now saves/restores ui_color settings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-04 01:19:04 +00:00
Axel Dörfler
a4de7fa0fa * Do not trust the client! ServerFont::GetEscapements() now takes a
parameter for the length of the arrays, so that even if the char/byte
  counts do not match, no memory is overwritten anymore.
  This fixes bug #1862; .canna obviously contains invalid UTF-8 
  characters, or there is a bug in StyledEdit (or deeper) and it doesn't 
  call BFont::GetEscapements() correctly.
* Fixed some cases of unchecked allocations in the font handling methods
  of ServerApp, added TODOs to all other ones.
* Improved error code when creating a window fails.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-28 00:22:48 +00:00
Stefano Ceccherini
10da43ea2e Use DejaVu as default fonts, instead of Bitstream Vera. DejaVu is
just like Vera, but it has some more glyphs. Actually we could get rid 
of Vera completely.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24143 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-26 15:59:17 +00:00
Stephan Aßmus
c8d785a71d Cursor frame can be expressed using IntRect. Saves a few lines of code too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24099 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 16:43:50 +00:00
Stephan Aßmus
4d1dd3bcfe Use the AutoFloatingOverlaysHider in the remaining cases where overlays were
hidden regardless of the affected area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24098 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 16:08:57 +00:00
Stephan Aßmus
b1ab9b5f07 * ReadBitmap() could mess up the software cursor locking, since it
used the BRect version of HideSoftwareCursor() but then called
  ShowSoftwareCursor() unconditionally.
* Renamed Hide/ShowSoftwareCursor() to Hide/ShowFloatingOverlays().
* Removed no longer needed FontLocker.
* Implemented AutoFloatingOverlaysHider and got rid of a lot of
  code duplication this way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24095 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 15:31:12 +00:00
Axel Dörfler
f9bbab8848 * First steps towards a more flexible workspaces view handling: the
workspaces view can now be any view in the hierarchy.
* Added private view flag kWorkspacesViewFlag that identifies such a
  view - note though, that you must not remove a view before closing or
  hiding its window for now (and that you still need to set the 
  kWorkspacesWindowFlag, too).
* Fixed Workspaces check for valid screen coordinates; after a crash, it
  managed to open its window offscreen for me.
* Added a ViewLayer method FindView() that finds a view with the 
  specified flags set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24090 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 11:18:52 +00:00
Stephan Aßmus
f8cb1f478c * Always use the double buffered implementation if running in VESA mode. It
was not used in case of 32 bit VESA modes. Gives a huge performance boost
  for 32 bit VESA mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24084 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-23 19:39:42 +00:00
Stephan Aßmus
d755e1c073 Implemented Enable/DisableUpdates again on the app_server side. Untested. It
should prevent the app_server to send any update messages to the client. It
should just keep adding to the pending update sessions region until the client
enabled updates again. If anything is already in the pending session, an
update request will be send immediately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24029 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-20 00:56:45 +00:00
Michael Lotz
94fec641a7 Implemented a small kernel debugger add-on that triggers a redraw of the
entire screen when exiting the kernel debugger. It sets up a thread that sends
a message to the (currently hardcoded) desktop message looper. The desktop then
does mark the whole screen dirty which causes a full redraw.
Since interrupts need to be enabled I went with an asynchronous thread and
releasing a request sem in the add-ons' exit hook.
Added the add-on to the image as it shouldn't hurt to have it for now.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24025 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-20 00:40:07 +00:00
Jérôme Duval
a0c4a29faf added B_RGBA15 colorspace, and explicitly print which colorspce is unsupported
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23938 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-09 18:08:34 +00:00
Axel Dörfler
41d99cab60 * SetDragMessage() could be called when the mouse button was already released.
* Since it didn't check if any mouse button was pressed at the time it was
  called, it would still initiate a drag, and thus caused bug #1710.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23782 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-29 15:14:39 +00:00
Stefano Ceccherini
511c231b35 remove unnecessary code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-24 13:45:59 +00:00
Axel Dörfler
2d0687ae9e * B_AVOID_FOCUS windows never got mouse clicks. This fixes bug #1652.
* Our behaviour differs a bit from how BeOS handles those windows, added a
  comment to the code which explains that, and how we could change it if we
  really wanted to.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-22 19:08:28 +00:00
Stephan Aßmus
9d4fa2c12b * Appearantly, we are calling ScreenClipping() on some views who's parent
views don't have a valid screen clipping yet. If then later we want
  to invalidate the clipping of an entire hierarchie, the traversal stops
  before reaching some of the child views, because the assumption was that
  for any views with invalid screen clipping, their child views have invalid
  screen clipping as well. Though this might cost a little performance, we
  always invalidate the screen clipping of all child views, ignoring the
  flag of the current view. Fixes ticket #1198 (garbled screen clipping of
  E-Mail prefs and WonderBrush tool area when switching tabs).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23688 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-21 16:58:06 +00:00
Axel Dörfler
89ba97ea24 * ViewLayer::ViewAt() must not use the screen clipping to find the view
in question as it used to find the view that is under the mouse (found
  during a short phone session with stippi :-)). This fixes bug #1714.
* The local view clipping is still not correctly maintained by the 
  app_server, but that only affects the drawing now. I've added some
  commented out code that give you some visual feedback on this problem
  (ViewLayer::MarkAt()).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23663 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-20 16:49:58 +00:00
Stefano Ceccherini
ebdedf9bbf disallow importing/exporting big pictures, since the Link* api doesn't allow sending more than 64 kb through it. At least printing via ShowImage doesn't hang the app anymore
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23554 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-16 08:27:11 +00:00
Axel Dörfler
45d0ea5605 Fixed two dirty region problems of the workspace switching code:
* If two intersecting windows didn't change their position but their 
  order, the dirty region wouldn't contain the region that would need
  to be updated because of that order change. This fixes bug #827.
* When a hidden window was on the new workspace (but not on the old one),
  its region would be included in the dirty region, but shouldn't have
  been. This caused the app_server to update a larger region than 
  necessary.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23398 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-11 14:04:53 +00:00
Axel Dörfler
737ce1c03c * The keyboard target was always the first menu in the window list - no matter if that was hidden or not.
This fixes the bug described by Stefano in r23343.
* Therefore, I enabled cached menu windows again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-10 21:26:55 +00:00
Stephan Aßmus
826ea6b6f1 * the change to support B_DRAW_ON_CHILDREN broke ViewLayer::ViewAt(), ie
mouse events would not be passed to the correct children of views with
  B_DRAW_ON_CHILDREN flag set -> fixed. (fixes #1673)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23300 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-09 11:37:05 +00:00
Stephan Aßmus
052ae287b0 * made transfering the pending to the current update session a bit faster
by toggling pointers instead of assigning/transfering regions


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-06 20:20:37 +00:00
Stephan Aßmus
c177064158 * removed no longer valid TODOs
* cleanup the code in a few places
* fixed a bug where the border region would not be made empty if there
  was a decorator previously, but there is no new one
* slight improvement for memory footprint of WindowLayer by using bit fields
  for more of the flags


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-06 20:09:55 +00:00
Stephan Aßmus
1c05a4100f patch by Anthony Lee:
* fixed bitmap fonts for real (applied the wrong patch last time)

* some cleanup for coding style by myself (in other places)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23269 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-06 18:01:47 +00:00
Stephan Aßmus
0e4fdb4f97 applied patch by Anthony Lee:
* fixed rendering of certain chinese fonts

(I think it fixes rendering of bitmap fonts in general, but it should not
support rotated text AFAIKT, since that is only supported for vector fonts)

Nice work, Anthony, thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23261 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-05 16:46:53 +00:00
Axel Dörfler
9a2d0cf6ff Applied patch by Anthony Lee: the user was attached to the font manager too
late, therefore, the DesktopSettings couldn't access user fonts. This fixes
bug #1691, thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23230 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-03 10:13:21 +00:00
Stephan Aßmus
a4d578c4cb * small cleanups for more coding style consistency
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23159 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-26 14:12:12 +00:00
Stephan Aßmus
099fb2d3be * removed declarations for methods which are not used/implemented in View.h
* improved naming of some private BView functions and used our underscore
  prefix
* added a _DrawAfterChildren method to BView which does the necessary setup
  and calls the DrawAfterChildren hook
* call the new _DrawAfterChildren method in the BWindow implementation, this
  was easy since the view tokens are already hierachically sorted
* implement support for B_DRAW_ON_CHILDREN in the app_server's ViewLayer, it
  simply means that children are ignored for the views clipping region, any
  drawing methods will paint over children (therefor the B_DRAW_ON_CHILDREN
  flag is even properly named)

With these changes, support for B_DRAW_ON_CHILDREN and the DrawAfterChildren()
hook are implemented and behave exactly as on R5 as far as I can tell, also
for the view background painting.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23154 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-25 14:47:06 +00:00
Stephan Aßmus
48882cec96 * lock pattern drawing to the true view origin, independend of the views
position on screen (fixes drawing glitches in patterns when the view
  was moved on screen (for example because the parent window got moved))


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23089 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-08 22:59:04 +00:00
Stefano Ceccherini
46f29e60b4 Also update the ui_color for menu backgrounds, when using set_menu_info.
Update the menu_info neverthless, when setting the ui_color for menu 
backgrounds. Fixes bug #550.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-12-06 21:09:35 +00:00
François Revol
2e3233d74e Propagate set_ui_color() up to the DesktopSettingsPrivate class.
Still needs code to save the values.
Also needs a way to access them from Decorator::UIColor(), but the DesktopSettings passed to the ctor can't be cached.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23024 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-30 01:21:19 +00:00
Axel Dörfler
349ba1a53c * IsDoubleBuffered() was not correct - fModeList has nothing to do with the
back buffer. This fixes bug #1631.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22971 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-21 15:45:12 +00:00
Axel Dörfler
1dec1e5786 display_mode::[hv]_display_start fields were not set when using a certain
Screen::SetMode() method, thanks to Gerald Zajac for reporting this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22967 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-20 21:34:59 +00:00
Axel Dörfler
5b1f301a11 * _FindBestMode() can now also take the aspect ratio into account.
* Reduced rating of the color space - after all, the resolution is more
  important.
* The EDID detailed modes are now scanned for the best mode available, this
  could be done in various ways, so please report any problems you have with
  it.
* Ignore resolutions below 640x350 - this should also fix bug #1615.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-12 11:44:55 +00:00
Axel Dörfler
b289dec88c * Factored out a _FindBestMethod() from _SetFallbackMode() - it now also takes
the timing of the original mode into account (I haven't tested if the computed
  score makes that much sense, though).
* GetPreferredMode() now also works correctly for EDID data): it now returns
  the correct status, and also constructs the mode correctly. Furthermore, it
  will now search for the mode in the mode list, instead of using that mode
  directly (so that it can take hardware limits into account).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-31 14:05:24 +00:00
Axel Dörfler
6ae06ef86a Implemented AS_IDLE_TIME, this closes bug #1593.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22758 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-29 09:11:25 +00:00
Stephan Aßmus
42a2db3602 * track the fact if Painter is attached to a frame buffer, incorporate
this information in the fValidClipping flag... which should prevent
  any drawing code to run if Painter is not attached properly


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-26 15:31:27 +00:00