From 52d2c710bf6a8ee844ef4b306bfc25ac2d8d6f20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 9 Dec 2005 16:19:18 +0000 Subject: [PATCH] * Workspace offsets weren't correct (only for the first workspace). * No longer draws hidden windows. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15450 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/WorkspacesLayer.cpp | 15 +++++++++++---- src/servers/app/WorkspacesLayer.h | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/servers/app/WorkspacesLayer.cpp b/src/servers/app/WorkspacesLayer.cpp index 7a8b7057ad..f2c6500d89 100644 --- a/src/servers/app/WorkspacesLayer.cpp +++ b/src/servers/app/WorkspacesLayer.cpp @@ -64,15 +64,14 @@ WorkspacesLayer::_WorkspaceAt(int32 i) BRect rect(column * width, row * height, (column + 1) * width, (row + 1) * height); + rect.OffsetBy(Frame().LeftTop()); + // make sure there is no gap anywhere if (column == columns - 1) rect.right = Frame().right; if (row == rows - 1) rect.bottom = Frame().bottom; - BPoint pt(0,0); - ConvertToScreen(&pt); - rect.OffsetBy(pt); return rect; } @@ -103,7 +102,7 @@ WorkspacesLayer::_DrawWindow(DrawingEngine* drawingEngine, const BRect& workspac const BRect& screenFrame, WindowLayer* window, BPoint windowPosition, BRegion& backgroundRegion, bool active) { - if (window->Feel() == kDesktopWindowFeel) + if (window->Feel() == kDesktopWindowFeel || window->IsHidden()) return; BPoint offset = window->Frame().LeftTop() - windowPosition; @@ -305,3 +304,11 @@ WorkspacesLayer::MouseDown(BMessage* message, BPoint where, int32* _viewToken) } +void +WorkspacesLayer::WindowChanged(WindowLayer* window) +{ + // TODO: be smarter about this! + BRegion region(Frame()); + Window()->MarkContentDirty(region); +} + diff --git a/src/servers/app/WorkspacesLayer.h b/src/servers/app/WorkspacesLayer.h index c7b5778928..a8453ff57d 100644 --- a/src/servers/app/WorkspacesLayer.h +++ b/src/servers/app/WorkspacesLayer.h @@ -26,6 +26,8 @@ class WorkspacesLayer : public ViewLayer { bool deep = false); virtual void MouseDown(BMessage* message, BPoint where, int32* _viewToken); + void WindowChanged(WindowLayer* window); + private: void _GetGrid(int32& columns, int32& rows); BRect _WorkspaceAt(int32 i);