Commit Graph

1519 Commits

Author SHA1 Message Date
Axel Dörfler
6edab6011e We must not have the font manager locked when locking the desktop (no matter
if read or write); there are some methods that cause a locking of the font
manager (like ServerFont::SetFamilyAndStyle()).
This fixes bug #885.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19051 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-12 12:34:19 +00:00
Stefano Ceccherini
c585b1f46d GetEscapements() didnt' take the font spacing into account. Looks like the spacing is ignored by the font backend, though, am I correct?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-03 11:46:55 +00:00
Stephan Aßmus
fd49bce12e * For DrawBitmap(), the bitmap rect needs to be aligned onto pixels
just like the view rect. This fixes bug 721.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-17 11:55:23 +00:00
Stephan Aßmus
d39634ce4d * on R5, the meaning of B_CONSTANT_ALPHA is a bit different
with regards to drawing bitmaps with alpha channel, instead
  of ignoring the bitmap alpha channel, it is further multiplied
  with the high color alpha channel, so basically, you can
  use the high color alpha as a "global" alpha value to
  draw the bitmap with
* removed some duplicate code


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18843 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-14 18:07:02 +00:00
Stephan Aßmus
846cc588f2 * a fix for the bug where clicking a window decor button drew
over the mouse cursor. The problem is actually something else:
  non-straight lines extend a little past the calculated rectangle 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18842 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-14 18:03:39 +00:00
Stephan Aßmus
ae540011ed * when the layout branch was merged, the same problem
got fixed twice, any unoptimized lines were drawn at
  a (0.5, 0.5) offset


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18841 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-14 18:00:09 +00:00
Stephan Aßmus
a907e70198 * a hack to support transparent CMAP8 color in bitmaps
(this would fix the white background on disabled looking
   icons if Tracker would still use B_CMAP8 icons)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18840 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-14 17:57:37 +00:00
Stephan Aßmus
af957c251b * don't read the frame buffer a second time when no
blending has to take place


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18839 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-14 17:55:55 +00:00
Stephan Aßmus
4423855cbd This is the kind of bug you can search for hours. At first, I suspected
a concurency problem in the DrawingEngine, so there is some debugging
stuff added, as well as some unnecessary locking removed there. The
problem was in Painter though, in that certain functions adjusted clipping
at the "rasterizer level", while some other functions didn't care about
that. Now the clipping is consistently set at the rasterizer level (rough
estimate to avoid scanline generation outside real clipping region bounds).
There are a number of bugs fixed by this, I'm going to find out later,
what their ticket numbers are... Mouse preflet draws the mouse now,
Backgrounds preflet draws the screen reliably... probably more, anything
to do with bitmaps, round rects and possibly ellipses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18828 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-13 20:02:00 +00:00
Ingo Weinhold
9ecf9d1c1d Merge from layout management branch.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-26 16:21:15 +00:00
Axel Dörfler
a17c3a48b8 Changed the way DesktopSettings work:
* Removed the DesktopSettings lock itself - it's not really needed at all,
  and causes some trouble with a clean locking design. This may even have
  fixed bug #757, at least I couldn't reproduce it anymore.
* There is now a class for read-only access that requires you to have locked
  the desktop (either read or write).
* There is now another class LockedDesktopSettings that allows you to set
  settings (and only that) - when you're changing the settings, you must not
  have read locked the desktop (ie. hold the single window lock). The class
  will obtain a write lock, but write locks can be nested.
* Moved SetWorkspacesCount() into the Desktop class.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-26 15:13:08 +00:00
Axel Dörfler
17c6d00009 Parameter "window" is now allowed to be NULL (this fixes a crashing bug I introduced earlier).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18617 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 20:45:22 +00:00
Stefano Ceccherini
1ff0b28a93 Uncommented invalidation of the area occupied by the views when they are added/removed from the tree. This fixes a couple of problems, I can't say the bug # because bugzilla is down ATM. Why was this code commented out? Stephan ?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 14:09:15 +00:00
Axel Dörfler
5c87242ea3 Improved the fake mouse-moved mechanism quite a bit:
* EventDispatcher now adopts the cursor position from the HWInterface upon
  assignment, so that even the initial cursor reports match the on screen
  visuals.
* The message was never sent because "target" in Desktop::_SendFakeMouseMoved()
  was never set.
* EventDispatcher::SendFakeMouseMoved() now accepts an EventTarget and no
  longer a BMessenger (fits better to the rest of the API).
* EventDispatcher::SendFakeMouseMoved() now sends out the exit transit message
  to the previous target directly (doesn't wait until the next actual mouse
  move), and updates the previous target as well, so that scrolling now
  works in that new window.
* This only partially fixes bug #762, though, as GetMouse() can still steal
  this mouse message (BTextViews do that in WindowActivated()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 08:49:21 +00:00
Axel Dörfler
524c811b5d Renamed HWInterface::GetCursorPosition() to CursorPosition() to match
the usual style.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18595 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 08:40:44 +00:00
Axel Dörfler
d479fa7ae4 Floating windows no longer flicker when moving a window to another workspace
using the shortcut keys (Alt-Fn).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18593 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-23 21:49:59 +00:00
Axel Dörfler
6474795008 SetWorkspace() now also move the subset windows of the mouse event window to
the new workspace - this fixes bug #755. Unlike floating windows, they aren't
even redrawn :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18592 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-23 21:21:45 +00:00
Axel Dörfler
85e2542930 Shouldn't try to move windows to top that aren't yet in the workspace
(a.k.a. floating windows) in SetWorkspace().
This fixes bug #211.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-23 20:11:36 +00:00
Axel Dörfler
258d8a3380 When building the update region on workspace switch, the mouse event window was
ignored even if it was not visible on the previous workspace (only normal windows
can be moved this way).
This fixes bug #765.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-23 12:20:28 +00:00
Axel Dörfler
93d0415885 * If a BView::SetMouseEventMask() arrived in the app_server after the mouse buttons
have already been released again, the temporary listener was still added.
  This fixes bug #727.
* No longer removes temporary listeners if there are mouse buttons left pressed; ie.
  if you press two buttons at once, the listeners are now only removed after you've
  released them both. This is not only more logical, it's also how BeOS behaves :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-11 14:24:42 +00:00
Jérôme Duval
c8bb68e11b when drawing a line, we check if the line is only one point, to even draw a line
this fixes bug #709, but it's not quite good in my opinion (Stephan, please could you review?)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18050 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-06 18:58:47 +00:00
Jérôme Duval
38f9b78d6c seems I was wrong here : no overflow happens since the comparison is done on the fly
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18041 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-05 13:09:44 +00:00
Jérôme Duval
63e9b45d9d tentative fix for B_OP_ADD
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18039 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-05 12:56:25 +00:00
Jérôme Duval
98662fad6d apply the changes to the viewRect with the right scale
this fixes the scale bug I had


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18020 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-03 23:37:38 +00:00
Jérôme Duval
ae3b2d5af2 reverting part of previous change, this was breaking the working part of scaling, still some bugs though
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-03 22:51:57 +00:00
Jérôme Duval
b8fc177d9c * default source BRect is now offset to B_ORIGIN because Bitmap bounds lefttop could be something else than (0,0). This caused some bugs in Haiku SoundRecorder app
i* thus the NOTE in Painter isn't valid anymore
* in Painter::_DrawBimap() moved scale computation after potential changes to BRects
* fix typo : right => bottom. This caused a bug in Haiku Mouse preferences app


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18017 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-03 19:49:51 +00:00
Jérôme Duval
4894b87045 updated freetype to 2.2.1, tested ok, please forgive me for possible left issues :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-27 11:34:35 +00:00
Axel Dörfler
3a44e6e37d Fixed a big race condition in the server code:
* ServerApp was accessing ServerWindow::Window() (while having the app window
  lock held), but in fact, there was no guarantee it already existed, or was
  added to the Desktop.
* Therefore, the Window() semantics have changed to only return a window in
  case the window exists *and* has been added to the desktop (the latter
  constraint might be lifted again, though). Therefore, it doesn't work
  for offscreen windows, and should not be used within ServerWindow code
  anymore.
* This fixes bug #686 and maybe others as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-19 23:42:22 +00:00
Stephan Aßmus
e39da397f5 * long overdue update to AGG 2.4
* removed the useless parts of AGG (which are only needed for the
  interactive examples)
* make sure to jam -a libagg.a to solve any linking issues


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17838 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 14:30:17 +00:00
Axel Dörfler
c29875897d Reduced the upper limit of ellipsis divisions as suggested by Stephan.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-14 10:49:27 +00:00
Axel Dörfler
66e114c429 BView::SetEventMask() had no effect when called before AttachedToWindow().
This also fixes bug #620.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17802 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-12 21:54:24 +00:00
Axel Dörfler
82584ab9c2 * Implemented AS_DIRECT_WINDOW_SET_FULLSCREEN so that it sets kWindowScreenFeel
when enabled, and B_NORMAL_WINDOW_FEEL when disabled. IOW when enabled, no
  other windows can interfere.
* Therefore, it's no longer necessary to have the screen_blanker window
  use kWindowScreenFeel - it will set its window to full screen as long
  as the blanker runs.
* Added a AS_APP_CRASHED notification in the app_server that will remove
  all kWindowScreenFeels from the windows of the crashed app.
* This is now used by the debugger to ensure that the debugger alert will
  be visible.
* Factored out a DesktopLink class out of the BRoster::_ActivateApp()
  method. This class is now also used in the new BRoster::_ApplicationCrashed()
  method as used in the debug_server (via BRoster::Private).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-09 21:46:40 +00:00
Axel Dörfler
1434300528 As Stephan pointed out, I accidently misread the previous max_c() construct.
Apparently, there was an integer overflow of some kind with BePYRO, but this version
if safe as well, and should look much better.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-03 22:30:15 +00:00
Axel Dörfler
a17be10094 * "divisions" could be lower than 1. This fixes bug #510.
* Moved expensive computation out of the max_c() macro.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17709 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-03 14:14:59 +00:00
Stephan Aßmus
86f902c3ed save and restore menu and mouse settings, fixes bug 607
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17676 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-31 19:23:26 +00:00
François Revol
f428e7ad4a Don't use a tab size that we might just later enlarge when calculating maxTabPos...
Fixes bug #643


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 15:03:02 +00:00
Axel Dörfler
bc201ef914 This fixes a possible broken placement of the tab - always happened with Magnify, for example.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17650 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 11:51:27 +00:00
Axel Dörfler
2815b65b04 This should allow you to switch into workspaces that are occupied with a BWindowScreen
by clicking into the workspace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17649 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 11:50:11 +00:00
Axel Dörfler
1cffe232de Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-29 23:58:45 +00:00
Axel Dörfler
0480cf1a60 * The (right-most moved) tab no longer goes away when resizing the window to a size
smaller than the tab size. This fixes bug #642.
* There are remaining issues while resizing the window, though.
* Fixed warning.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17637 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-29 19:00:20 +00:00
Axel Dörfler
fa3c08f073 The workspaces window is now updated when a tab is moved - this fixes bug #641.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-29 18:41:16 +00:00
Stephan Aßmus
d35ed1a6db fixed some remaining issues with tab sliding:
* the tab keeps the relative position when the
  window is resized (could be done nicer though,
  now it uses two members)
* tab offset is no longer reset in _DoLayout(), ie
  when any aspect of the decorator changes...
one issue that is left is sliding the vertical tab
of kLeftTitledWindowLook windows, but there might
be more... like when the look changes or stuff like
that


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17600 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-26 21:26:35 +00:00
Stephan Aßmus
b30e90211e added a way for BWindow to store and restore arbitrary decor settings,
currently those include only the tab location


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-25 12:01:28 +00:00
Stefano Ceccherini
a7dc54697c The drawstate is now synched when the recording of a BPicture starts. Some reordering of the function calls, implemented B_PIC_SET_BLENDING_MODE, some other cleanups
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-24 19:10:15 +00:00
Stephan Aßmus
46fb2d73be sorry, I couldn't resist...
* added a few very small changes to make the tab sliding work perfectly
* added a comment on the purpose of WindowLayer::fLastMousePosition and
  how it is supposed to be used to have the mouse cursor stick to what
  is being dragged
* TODO: the tab offset doesn't necessarily have to be on [0..1], as long
  as we update it during window resizing to keep the relative position


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17577 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-24 11:05:25 +00:00
François Revol
382084bd0a The return of the long awaited for Sliding Tabs, that even Linux users envy!
Needs some cleanup, passed values should be inside [0:1].
Need to make sure changing the title doesn't reset the tab to left.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17571 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-24 00:42:34 +00:00
Stephan Aßmus
a7f936aa14 * cleanup
* fixed SetViewColor() - I have no idea why it compiled before
* changed SetHidden() to make less of a difference between
  the top view and other views, the clipping is now always
  rebuilt


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 10:05:17 +00:00
Stephan Aßmus
8dc6e23650 cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17526 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 10:03:24 +00:00
Axel Dörfler
b0bc48fbd3 Some more GCC 4 and PPC fixes.
* Mesa doesn't compile yet, as some PPC specific stuff seems to be
  missing, Philippe?
* Cortex and some other stuff has been marked x86-only, although
  it's more of a "GCC 2.95.3"-only.
* I'm not sure if it's a bug in GCC 4, or if that's what the C
  standard demands, but sizeof(some_type::some_field) is not
  valid anymore :-/


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-19 15:52:21 +00:00
Stephan Aßmus
75b7acdac8 * commented out the code to invalidate a view when
it is added our removed to another view, this is
  taken care of in View.cpp until we find something
  better


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17511 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-19 09:55:56 +00:00