Skip to content

Commit

Permalink
Update the mouse cursor in a couple more cases
Browse files Browse the repository at this point in the history
  • Loading branch information
jscipione committed Jan 25, 2013
1 parent 65b9235 commit 5a0b5a5
Showing 1 changed file with 51 additions and 8 deletions.
59 changes: 51 additions & 8 deletions src/servers/app/decorator/DefaultWindowBehaviour.cpp
Expand Up @@ -265,21 +265,37 @@ struct DefaultWindowBehaviour::DragState : MouseTrackingState {

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
// management state.
fBehavior._NextState(new(std::nothrow) ManageWindowState(
fBehavior, where));
} else
} else {
if ((fWindow->Flags() & B_NOT_RESIZABLE) == 0
&& fBehavior._IsControlModifier(modifiers)) {
fBehavior._SetBorderResizeCursor(where);
} else
fBehavior._ResetCursor();

fBehavior._NextState(NULL);
}
}

virtual void ModifiersChanged(BPoint where, int32 modifiers)
{
// Exit if user lifted window management 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);
}
}

virtual void MouseMovedAction(BPoint& delta, bigtime_t now)
Expand Down Expand Up @@ -465,21 +481,36 @@ struct DefaultWindowBehaviour::ResizeBorderState : MouseTrackingState {

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
// management state.
fBehavior._NextState(new(std::nothrow) ManageWindowState(
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);
}
}

virtual void ModifiersChanged(BPoint where, int32 modifiers)
{
// Exit if user lifted window management 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);
}
}

virtual void MouseMovedAction(BPoint& delta, bigtime_t now)
Expand Down Expand Up @@ -1006,11 +1037,12 @@ DefaultWindowBehaviour::MouseMoved(BMessage* message, BPoint where,
if (fState != NULL) {
fState->MouseMoved(message, where, isFake);
} else {
if (_IsWindowModifier(message->FindInt32("modifiers"))) {
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(message->FindInt32("modifiers"))) {
&& _IsControlModifier(modifiers)) {
_SetBorderResizeCursor(where);
} else
_ResetCursor();
Expand All @@ -1033,6 +1065,17 @@ DefaultWindowBehaviour::MouseUp(BMessage* message, BPoint where)
{
if (fState != NULL)
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();
}
}


Expand Down

0 comments on commit 5a0b5a5

Please sign in to comment.