Commit Graph

1731 Commits

Author SHA1 Message Date
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
Stephan Aßmus
cf91c9e850 * some disabled code that was supposed to reveal more info on why
it can happen that a view's background region is outside the
  framebuffer... for some weird reason, it doesn't get triggered
  though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-25 18:20:03 +00:00
Stephan Aßmus
ff85245718 * fixed the crashing result of bug #634, check if the supplied region
falls within the frame buffer bounds. This should not happen, and
  I am going to search for the cause next, but at least app_server
  dosn't crash anymore in this context. Left a comment on my findings
  so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-25 15:11:58 +00:00
Stefano Ceccherini
09a4122e4c Moved initialization of the system color map from AppServer to Desktop
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22661 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-22 14:07:26 +00:00
Stefano Ceccherini
37b83b1a2d The system palette was defined in two files. Moved to a private header,
included by the two.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22660 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-22 13:44:37 +00:00
Axel Dörfler
9db35b6825 Revised named configurations a bit:
* Named settings are only overwritten if they were an exact match (ie. it's
  the very same monitor).
* The unnamed settings retrieval now has two passes, on the first it will
  now ignore named settings. It will also only remove unnamed settings now.
* Added some TODO commments.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22632 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-21 11:00:30 +00:00
Axel Dörfler
4ee81443c3 * The app_server now stores the whole display_timing structure of a mode, not
just the frequency.
* Previously saved modes are no longer supported, though.
* Screen modes are now stored with the monitor info it belongs to, IOW the
  app_server will now choose a mode from the settings that fit your monitor
  description. Driver support is required for this to work as intended.
* The changes are completely untested at this point, though, sorry (shouldn't
  harm anyone, though) :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-19 16:47:06 +00:00
Axel Dörfler
dd84f111b9 Fixed a few potential deadlocks:
* in r22410 the unlock/relock was removed accidently from ServerWindow::_Hide()
  before calling a desktop method.
* Desktop::ActivateWindow() no longer calls SetWorkspace() with the window lock
  held.
* WorkspacesLayer::MouseUp() now uses the asynchronous version of SetWorkspace().
* AFAICT AS_HIDE_WINDOW, AS_SHOW_WINDOW, and AS_MINIMIZE_WINDOW don't need the
  all window lock, reverted to standard single window lock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-18 13:49:36 +00:00
Axel Dörfler
643801426c As the commit says, don't do this at this place.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22613 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-18 13:41:18 +00:00
Axel Dörfler
89d522a443 AccelerantHWInterface should no longer rely on GetModeList() being called before
working with it. The app_server would have crashed before if a graphics driver
could directly return a preferred display mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22595 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-17 14:20:58 +00:00
Axel Dörfler
f6e4cbb952 * Rewrote BeBuild.h which had "a few" consequences (got rid of all those class
definitions).
* Minor cleanup here and there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22577 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-15 20:13:55 +00:00
Axel Dörfler
c278448653 * Introduced a monitor_info structure and means to let it be filled by the
accelerant (or the app_server via EDID info). It's still experimental
  API, and opinions are welcome.
* Moved BPrivateScreen into the BPrivate namespace.
* Rewrote Screen.h.
* Introduced a BScreen::GetMonitorInfo() method, and implemented it in the
  app server as well (ie. AS_GET_MONITOR_INFO).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-15 11:41:47 +00:00