From 8689fe066ac0ad684ed0fba314b85e1ef47a2ce0 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 26 Nov 2010 20:25:57 +0000 Subject: [PATCH] Added method SetManagementCursor() that allows to set a cursor that overrides the normal cursor set with SetCursor(). Intended for window management interactions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39653 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/Desktop.cpp | 23 +++++++++++++++++++++-- src/servers/app/Desktop.h | 4 ++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 9b1e3f03ed..82c2fc7915 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -9,6 +9,7 @@ * Andrej Spielmann * Brecht Machiels * Clemens Zeidler + * Ingo Weinhold */ @@ -605,14 +606,32 @@ Desktop::SetCursor(ServerCursor* newCursor) if (newCursor == NULL) newCursor = fCursorManager.GetCursor(B_CURSOR_ID_SYSTEM_DEFAULT); - HWInterface()->SetCursor(newCursor); + if (newCursor == fCursor) + return; + + fCursor = newCursor; + + if (fManagementCursor.Get() == NULL) + HWInterface()->SetCursor(newCursor); } ServerCursorReference Desktop::Cursor() const { - return HWInterface()->Cursor(); + return fCursor; +} + + +void +Desktop::SetManagementCursor(ServerCursor* newCursor) +{ + if (newCursor == fManagementCursor) + return; + + fManagementCursor = newCursor; + + HWInterface()->SetCursor(newCursor != NULL ? newCursor : fCursor.Get()); } diff --git a/src/servers/app/Desktop.h b/src/servers/app/Desktop.h index e6182b0f5f..077c60d0fe 100644 --- a/src/servers/app/Desktop.h +++ b/src/servers/app/Desktop.h @@ -91,6 +91,8 @@ public: void SetCursor(ServerCursor* cursor); ServerCursorReference Cursor() const; + void SetManagementCursor(ServerCursor* newCursor); + void SetLastMouseState(const BPoint& position, int32 buttons, Window* windowUnderMouse); // for use by the mouse filter only @@ -330,6 +332,8 @@ private: BLocker fWorkspacesLock; CursorManager fCursorManager; + ServerCursorReference fCursor; + ServerCursorReference fManagementCursor; MultiLocker fWindowLock;