Update the mouse cursor in a couple more cases

This commit is contained in:
John Scipione
2013-01-25 01:02:35 -05:00
parent 65b9235d19
commit 5a0b5a5d52
@@ -265,21 +265,37 @@ struct DefaultWindowBehaviour::DragState : MouseTrackingState {
virtual void MouseUp(BMessage* message, BPoint where) virtual void MouseUp(BMessage* message, BPoint where)
{ {
if (fBehavior._IsWindowModifier(message->FindInt32("modifiers"))) { int32 modifiers = message->FindInt32("modifiers");
if (fBehavior._IsWindowModifier(modifiers)) {
// If the window modifiers are held return to the window // If the window modifiers are held return to the window
// management state. // management state.
fBehavior._NextState(new(std::nothrow) ManageWindowState( fBehavior._NextState(new(std::nothrow) ManageWindowState(
fBehavior, where)); fBehavior, where));
} else } else {
if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& fBehavior._IsControlModifier(modifiers)) {
fBehavior._SetBorderResizeCursor(where);
} else
fBehavior._ResetCursor();
fBehavior._NextState(NULL); fBehavior._NextState(NULL);
}
} }
virtual void ModifiersChanged(BPoint where, int32 modifiers) virtual void ModifiersChanged(BPoint where, int32 modifiers)
{ {
// Exit if user lifted window management modifiers // Exit if user lifted window management modifiers
fBehavior.fLastModifiers = modifiers; fBehavior.fLastModifiers = modifiers;
if (!fBehavior._IsWindowModifier(modifiers)) if (!fBehavior._IsWindowModifier(modifiers)) {
if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& fBehavior._IsControlModifier(modifiers)) {
fBehavior._SetBorderResizeCursor(where);
} else
fBehavior._ResetCursor();
fBehavior._NextState(NULL); fBehavior._NextState(NULL);
}
} }
virtual void MouseMovedAction(BPoint& delta, bigtime_t now) virtual void MouseMovedAction(BPoint& delta, bigtime_t now)
@@ -465,21 +481,36 @@ struct DefaultWindowBehaviour::ResizeBorderState : MouseTrackingState {
virtual void MouseUp(BMessage* message, BPoint where) virtual void MouseUp(BMessage* message, BPoint where)
{ {
if (fBehavior._IsWindowModifier(message->FindInt32("modifiers"))) { int32 modifiers = message->FindInt32("modifiers");
if (fBehavior._IsWindowModifier(modifiers)) {
// If the window modifiers are still held return to window // If the window modifiers are still held return to window
// management state. // management state.
fBehavior._NextState(new(std::nothrow) ManageWindowState( fBehavior._NextState(new(std::nothrow) ManageWindowState(
fBehavior, where, fHorizontal, fVertical)); fBehavior, where, fHorizontal, fVertical));
} else } else {
if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& fBehavior._IsControlModifier(modifiers)) {
fBehavior._SetBorderResizeCursor(where);
} else
fBehavior._ResetCursor();
fBehavior._NextState(NULL); fBehavior._NextState(NULL);
}
} }
virtual void ModifiersChanged(BPoint where, int32 modifiers) virtual void ModifiersChanged(BPoint where, int32 modifiers)
{ {
// Exit if user lifted window management modifiers // Exit if user lifted window management modifiers
fBehavior.fLastModifiers = modifiers; fBehavior.fLastModifiers = modifiers;
if (!fBehavior._IsWindowModifier(modifiers)) if (!fBehavior._IsWindowModifier(modifiers)) {
if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& fBehavior._IsControlModifier(modifiers)) {
fBehavior._SetBorderResizeCursor(where);
} else
fBehavior._ResetCursor();
fBehavior._NextState(NULL); fBehavior._NextState(NULL);
}
} }
virtual void MouseMovedAction(BPoint& delta, bigtime_t now) virtual void MouseMovedAction(BPoint& delta, bigtime_t now)
@@ -1006,11 +1037,12 @@ DefaultWindowBehaviour::MouseMoved(BMessage* message, BPoint where,
if (fState != NULL) { if (fState != NULL) {
fState->MouseMoved(message, where, isFake); fState->MouseMoved(message, where, isFake);
} else { } else {
if (_IsWindowModifier(message->FindInt32("modifiers"))) { int32 modifiers = message->FindInt32("modifiers");
if (_IsWindowModifier(modifiers)) {
// Enter the window management state. // Enter the window management state.
_NextState(new(std::nothrow) ManageWindowState(*this, where)); _NextState(new(std::nothrow) ManageWindowState(*this, where));
} else if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0 } else if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& _IsControlModifier(message->FindInt32("modifiers"))) { && _IsControlModifier(modifiers)) {
_SetBorderResizeCursor(where); _SetBorderResizeCursor(where);
} else } else
_ResetCursor(); _ResetCursor();
@@ -1033,6 +1065,17 @@ DefaultWindowBehaviour::MouseUp(BMessage* message, BPoint where)
{ {
if (fState != NULL) if (fState != NULL)
fState->MouseUp(message, where); fState->MouseUp(message, where);
else {
int32 modifiers = message->FindInt32("modifiers");
if (_IsWindowModifier(modifiers)) {
// Enter the window management state.
_NextState(new(std::nothrow) ManageWindowState(*this, where));
} else if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& _IsControlModifier(modifiers)) {
_SetBorderResizeCursor(where);
} else
_ResetCursor();
}
} }