From cd4692196cc78c025a6ef453611e6d93a852b288 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Wed, 1 Sep 2010 02:52:33 +0000 Subject: [PATCH] Revert my last changes for now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38486 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/Desktop.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index aea9913fc8..240d32c74a 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -1032,7 +1032,7 @@ Desktop::SendWindowBehind(Window* window, Window* behindOf) // TODO: should the "not in current workspace" be handled anyway? // (the code below would have to be changed then, though) - if ((behindOf == NULL && window == BackWindow()) + if (window == BackWindow() || !window->InWorkspace(fCurrentWorkspace) || (behindOf != NULL && !behindOf->InWorkspace(fCurrentWorkspace))) { UnlockAllWindows(); @@ -1047,21 +1047,18 @@ Desktop::SendWindowBehind(Window* window, Window* behindOf) // might be dirty after the window is send to back BRegion dirty(window->VisibleRegion()); + Window* backmost = window->Backmost(behindOf); + CurrentWindows().RemoveWindow(window); - CurrentWindows().AddWindow(window, behindOf - ? behindOf : BackWindow()); + CurrentWindows().AddWindow(window, backmost + ? backmost->NextWindow(fCurrentWorkspace) : BackWindow()); BRegion dummy; _RebuildClippingForAllWindows(dummy); - // if we send a window to the bottom mark everything dirty that is no - // longer visible, if behindOf is not NULL the window may has rose so - // include the visible region + // mark everything dirty that is no longer visible BRegion clean(window->VisibleRegion()); - if (!behindOf) - dirty.Exclude(&clean); - else - dirty.Include(&clean); + dirty.Exclude(&clean); MarkDirty(dirty); _UpdateFronts();