* finally nailed that much hated bug where the
wrong background underneath the cursor was restored.
I always looked for this in the wrong place -
of course, you cannot blit regions on top
of the cursor and expect the backup of the
background to be magically valid still... ;-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15461 a95241bf-73f2-0310-859d-f6bbb57e9c96
to avoid any confusion with MarkContentDirty()
* hopyfully fixed all drawing defects that could be
observed with CopyBits()ing and ScrollTo()ing, the fix
is definitely valid, and I cannot see any more problems
in Tracker either... hopefully this is it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15458 a95241bf-73f2-0310-859d-f6bbb57e9c96
* prevents the target view from being scrolled out of range
* handles Trackers completely confused usage of scrollbars
There is just one problem with Tracker's horizontal scrollbar
scrolling the title view much further than it should, which I
will look into tomorrow...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15457 a95241bf-73f2-0310-859d-f6bbb57e9c96
* When switching workspaces, usually the focus switches to the front window.
This no longer happens in case a floating window had focus and is still visible
in the new workspace - in that case, focus is kept with the floating window.
* SetFocusWindow() now chooses the topmost window in case the specified window
has either a modal or there is no front window.
Desktop::RemoveWindow() now makes sure the window is hidden before removing it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15447 a95241bf-73f2-0310-859d-f6bbb57e9c96
x86 the Haiku image still builds, so it is apparently not used. I
guess it would be best to abandon our posix_math.o completely and
use the glibc math implementations instead.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15446 a95241bf-73f2-0310-859d-f6bbb57e9c96
added a generic implementation using atomic_test_and_set().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15444 a95241bf-73f2-0310-859d-f6bbb57e9c96
* when changing feel, the original flags are now restored.
* added B_SAME_POSITION_IN_ALL_WORKSPACES to valid flags, so that they can be
set by the user.
* fixed masking out invalid flags (actually all but the valid flags were kept...)
* everytime B_SAME_POSITION_IN_ALL_WORKSPACES can be set (either in SetFlags()
or in SetFeel() the position is propagated to all window lists.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15441 a95241bf-73f2-0310-859d-f6bbb57e9c96
* added B_SAME_POSITION_IN_ALL_WORKSPACES for the build under Haiku (and libbe_test)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15437 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Desktop::SetWindowFeel() is now working, but doesn't respect the window
position yet (ie. floating windows would have to be moved to front).
* WindowLayer::Workspaces() now always reflects exactly the lists it's in
(at least after Desktop::AddWindow() has been called). WindowList::AddWindow()
and RemoveWindow() now update this flag to be correct at all times.
* Fixed Desktop::_ChangeWindowWorkspaces() to not set the current workspace
for windows that are not on the current workspace, and vice versa.
It also would hide windows that were already hidden, and tried to show
windows that actually were hidden (did no other harm than triggering
a rebuild of the global clipping).
* Floating windows now work as expected.
* Desktop::SetFocusWindow() won't give a window focus that has a modal.
* Renamed OnWorkspace() to InWorkspace().
* ServerApp::InWorkspace() now works correctly, added ServerApp::Workspaces()
as well.
* WindowLayer::SubsetWorkspaces() returns the workspaces mask this modal or
floating window should be in.
* New window flag B_SAME_POSITION_IN_ALL_WORKSPACES should work as well.
* Floating and modal windows now have always set this flag.
* Added a WindowList::HasWindow() method.
* Desktop windows (windows with the desktop feel) can now have focus again
(I accidently broke that before).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15434 a95241bf-73f2-0310-859d-f6bbb57e9c96
Desktop::_ChangeWindowWorkspaces() and SetWorkspace() didn't lock the window list,
but should have.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15421 a95241bf-73f2-0310-859d-f6bbb57e9c96
* ShowWindow() and HideWindow() now also work correctly for windows not
on the current workspace.
* Reverted WindowList::RemoveWindow() - if it is used wrongly, it should
better crash the server for now, so that we can iron out the bugs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15420 a95241bf-73f2-0310-859d-f6bbb57e9c96
Now hides the window before removing itself to prevent a superfluous drawing update.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15410 a95241bf-73f2-0310-859d-f6bbb57e9c96