[haiku-commits] haiku: hrev45199 - src/servers/app/decorator

  • From: jscipione@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 25 Jan 2013 07:03:22 +0100 (CET)

hrev45199 adds 1 changeset to branch 'master'
old head: 65b9235d19ff2d85e3a7a20c0661e8813d9a7da0
new head: 5a0b5a5d521e8d4b3e106f98198d0c27132a9ddc
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=5a0b5a5+%5E65b9235

----------------------------------------------------------------------------

5a0b5a5: Update the mouse cursor in a couple more cases

                                     [ John Scipione <jscipione@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev45199
Commit:      5a0b5a5d521e8d4b3e106f98198d0c27132a9ddc
URL:         http://cgit.haiku-os.org/haiku/commit/?id=5a0b5a5
Author:      John Scipione <jscipione@xxxxxxxxx>
Date:        Fri Jan 25 06:02:35 2013 UTC

----------------------------------------------------------------------------

1 file changed, 51 insertions(+), 8 deletions(-)
.../app/decorator/DefaultWindowBehaviour.cpp     | 59 +++++++++++++++++---

----------------------------------------------------------------------------

diff --git a/src/servers/app/decorator/DefaultWindowBehaviour.cpp 
b/src/servers/app/decorator/DefaultWindowBehaviour.cpp
index b1f13f5..7166aff 100644
--- a/src/servers/app/decorator/DefaultWindowBehaviour.cpp
+++ b/src/servers/app/decorator/DefaultWindowBehaviour.cpp
@@ -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)
@@ -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)
@@ -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();
@@ -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();
+       }
 }
 
 


Other related posts:

  • » [haiku-commits] haiku: hrev45199 - src/servers/app/decorator - jscipione