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);