From dc2dd40caa19cf5e504b5d8684482be5bb9c2437 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Thu, 2 Dec 2010 20:51:38 +0000 Subject: [PATCH] Fix #6925 and #6935. - If the event window was set the window was moved also if the moveFocusWindow flag was not set. - Use ProcessDirtyRegion to redraw the dirty region. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39707 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/DefaultWindowBehaviour.cpp | 13 +------------ src/servers/app/Desktop.cpp | 10 +++++++--- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/servers/app/DefaultWindowBehaviour.cpp b/src/servers/app/DefaultWindowBehaviour.cpp index 4e7f8c9686..478744bfd9 100644 --- a/src/servers/app/DefaultWindowBehaviour.cpp +++ b/src/servers/app/DefaultWindowBehaviour.cpp @@ -1123,18 +1123,7 @@ DefaultWindowBehaviour::_SetBorderHighlights(int8 horizontal, int8 vertical, } // invalidate the affected regions - dirtyRegion.IntersectWith(&fWindow->VisibleRegion()); - BRect dirtyRect(dirtyRegion.Frame()); - - if (dirtyRect.IsValid()) { - DrawingEngine* engine = decorator->GetDrawingEngine(); - engine->LockParallelAccess(); - engine->ConstrainClippingRegion(&dirtyRegion); - - decorator->Draw(dirtyRect); - - engine->UnlockParallelAccess(); - } + fWindow->ProcessDirtyRegion(dirtyRegion); } } diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 82c2fc7915..04b8d7fe65 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -3357,9 +3357,13 @@ Desktop::_SetWorkspace(int32 index, bool moveFocusWindow) int32 previousIndex = fCurrentWorkspace; rgb_color previousColor = fWorkspaces[fCurrentWorkspace].Color(); bool movedMouseEventWindow = false; - Window* movedWindow = fMouseEventWindow; - if (movedWindow == NULL && moveFocusWindow) - movedWindow = FocusWindow(); + Window* movedWindow = NULL; + if (moveFocusWindow) { + if (fMouseEventWindow != NULL) + movedWindow = fMouseEventWindow; + else + movedWindow = FocusWindow(); + } if (movedWindow != NULL) { if (movedWindow->IsNormal()) {