From ae883c5f1597be8a7098bfab659b43251839998f Mon Sep 17 00:00:00 2001 From: John Scipione Date: Fri, 25 Jan 2013 01:27:46 -0500 Subject: [PATCH] Reset cursor if kAcceptKeyboardFocusFlag is set. This basically affects menus which are not movable, and not resizable but have that flag set because they take input anyway. This change shows the regular cursor over menu windows even in window management mode when ctrl+alt are held down. Also rename _SetNowAllowedCursor to _SetNotAllowedCursor, typo. --- .../app/decorator/DefaultWindowBehaviour.cpp | 18 ++++++++++++------ .../app/decorator/DefaultWindowBehaviour.h | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/servers/app/decorator/DefaultWindowBehaviour.cpp b/src/servers/app/decorator/DefaultWindowBehaviour.cpp index 7166aff92f..dd16b5cbac 100644 --- a/src/servers/app/decorator/DefaultWindowBehaviour.cpp +++ b/src/servers/app/decorator/DefaultWindowBehaviour.cpp @@ -702,8 +702,10 @@ DefaultWindowBehaviour::ManageWindowState::EnterState(State* previousState) // Update the mouse cursor if ((fWindow->Flags() & B_NOT_MOVABLE) == 0) fBehavior._SetMoveCursor(); + else if ((fWindow->Flags() & kAcceptKeyboardFocusFlag) != 0) + fBehavior._ResetCursor(); else - fBehavior._SetNowAllowedCursor(); + fBehavior._SetNotAllowedCursor(); _UpdateResizeArrows(fLastMousePosition); } @@ -730,8 +732,10 @@ DefaultWindowBehaviour::ManageWindowState::MouseDown(BMessage* message, if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0) { fBehavior._NextState(new (std::nothrow) ResizeBorderState( fBehavior, where, fHorizontal, fVertical)); - } else - fBehavior._SetNowAllowedCursor(); + } else if ((fWindow->Flags() & kAcceptKeyboardFocusFlag) != 0) + fBehavior._ResetCursor(); + else + fBehavior._SetNotAllowedCursor(); } return true; @@ -745,11 +749,13 @@ DefaultWindowBehaviour::ManageWindowState::MouseMoved(BMessage* message, // Update the mouse cursor if ((fDesktop->WindowAt(where)->Flags() & B_NOT_RESIZABLE) != 0 && (message->FindInt32("buttons") & B_SECONDARY_MOUSE_BUTTON) != 0) { - fBehavior._SetNowAllowedCursor(); + fBehavior._SetNotAllowedCursor(); } else if ((fDesktop->WindowAt(where)->Flags() & B_NOT_MOVABLE) == 0) fBehavior._SetMoveCursor(); + else if ((fWindow->Flags() & kAcceptKeyboardFocusFlag) != 0) + fBehavior._ResetCursor(); else - fBehavior._SetNowAllowedCursor(); + fBehavior._SetNotAllowedCursor(); // If the cursor is still over our window, update the borders. // Otherwise leave the state. @@ -1182,7 +1188,7 @@ DefaultWindowBehaviour::_SetMoveCursor() void -DefaultWindowBehaviour::_SetNowAllowedCursor() +DefaultWindowBehaviour::_SetNotAllowedCursor() { fDesktop->SetManagementCursor( fDesktop->GetCursorManager().GetCursor(B_CURSOR_ID_NOT_ALLOWED)); diff --git a/src/servers/app/decorator/DefaultWindowBehaviour.h b/src/servers/app/decorator/DefaultWindowBehaviour.h index 7021a0bffb..593cc417f4 100644 --- a/src/servers/app/decorator/DefaultWindowBehaviour.h +++ b/src/servers/app/decorator/DefaultWindowBehaviour.h @@ -96,7 +96,7 @@ private: int8 vertical); void _SetMoveCursor(); - void _SetNowAllowedCursor(); + void _SetNotAllowedCursor(); void _SetResizeCursor(int8 horizontal, int8 vertical); void _SetBorderResizeCursor(BPoint where);