Ken Thomases : winemac: Extract application-level handling of mouse move events to a separate method .

Alexandre Julliard julliard at winehq.org
Tue May 7 15:54:05 CDT 2013


Module: wine
Branch: master
Commit: 76691853f527fe799a05f0d8cb75a4f2abfec4a8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=76691853f527fe799a05f0d8cb75a4f2abfec4a8

Author: Ken Thomases <ken at codeweavers.com>
Date:   Tue May  7 03:00:35 2013 -0500

winemac: Extract application-level handling of mouse move events to a separate method.

---

 dlls/winemac.drv/cocoa_app.m |   94 ++++++++++++++++++++++--------------------
 1 files changed, 49 insertions(+), 45 deletions(-)

diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m
index 7a304a8..7f2ec7c 100644
--- a/dlls/winemac.drv/cocoa_app.m
+++ b/dlls/winemac.drv/cocoa_app.m
@@ -1134,6 +1134,54 @@ int macdrv_err_on;
         return TRUE;
     }
 
+    - (void) handleMouseMove:(NSEvent*)anEvent
+    {
+        WineWindow* targetWindow;
+
+        /* Because of the way -[NSWindow setAcceptsMouseMovedEvents:] works, the
+           event indicates its window is the main window, even if the cursor is
+           over a different window.  Find the actual WineWindow that is under the
+           cursor and post the event as being for that window. */
+        if ([anEvent type] == NSMouseMoved)
+        {
+            CGPoint cgpoint = CGEventGetLocation([anEvent CGEvent]);
+            NSPoint point = [self flippedMouseLocation:NSPointFromCGPoint(cgpoint)];
+            NSInteger windowUnderNumber;
+
+            windowUnderNumber = [NSWindow windowNumberAtPoint:point
+                                  belowWindowWithWindowNumber:0];
+            targetWindow = (WineWindow*)[NSApp windowWithWindowNumber:windowUnderNumber];
+        }
+        else
+            targetWindow = (WineWindow*)[anEvent window];
+
+        if ([targetWindow isKindOfClass:[WineWindow class]])
+        {
+            BOOL absolute = forceNextMouseMoveAbsolute || (targetWindow != lastTargetWindow);
+            forceNextMouseMoveAbsolute = FALSE;
+
+            // If we recently warped the cursor (other than in our cursor-clipping
+            // event tap), discard mouse move events until we see an event which is
+            // later than that time.
+            if (lastSetCursorPositionTime)
+            {
+                if ([anEvent timestamp] <= lastSetCursorPositionTime)
+                    return;
+
+                lastSetCursorPositionTime = 0;
+                absolute = TRUE;
+            }
+
+            [targetWindow postMouseMovedEvent:anEvent absolute:absolute];
+            lastTargetWindow = targetWindow;
+        }
+        else if (lastTargetWindow)
+        {
+            [[NSCursor arrowCursor] set];
+            [self unhideCursor];
+            lastTargetWindow = nil;
+        }
+    }
 
     // Returns TRUE if the event was handled and caller should do nothing more
     // with it.  Returns FALSE if the caller should process it as normal and
@@ -1152,51 +1200,7 @@ int macdrv_err_on;
         if (type == NSMouseMoved || type == NSLeftMouseDragged ||
             type == NSRightMouseDragged || type == NSOtherMouseDragged)
         {
-            WineWindow* targetWindow;
-
-            /* Because of the way -[NSWindow setAcceptsMouseMovedEvents:] works, the
-               event indicates its window is the main window, even if the cursor is
-               over a different window.  Find the actual WineWindow that is under the
-               cursor and post the event as being for that window. */
-            if (type == NSMouseMoved)
-            {
-                CGPoint cgpoint = CGEventGetLocation([anEvent CGEvent]);
-                NSPoint point = [self flippedMouseLocation:NSPointFromCGPoint(cgpoint)];
-                NSInteger windowUnderNumber;
-
-                windowUnderNumber = [NSWindow windowNumberAtPoint:point
-                                      belowWindowWithWindowNumber:0];
-                targetWindow = (WineWindow*)[NSApp windowWithWindowNumber:windowUnderNumber];
-            }
-            else
-                targetWindow = (WineWindow*)[anEvent window];
-
-            if ([targetWindow isKindOfClass:[WineWindow class]])
-            {
-                BOOL absolute = forceNextMouseMoveAbsolute || (targetWindow != lastTargetWindow);
-                forceNextMouseMoveAbsolute = FALSE;
-
-                // If we recently warped the cursor (other than in our cursor-clipping
-                // event tap), discard mouse move events until we see an event which is
-                // later than that time.
-                if (lastSetCursorPositionTime)
-                {
-                    if ([anEvent timestamp] <= lastSetCursorPositionTime)
-                        return;
-
-                    lastSetCursorPositionTime = 0;
-                    absolute = TRUE;
-                }
-
-                [targetWindow postMouseMovedEvent:anEvent absolute:absolute];
-                lastTargetWindow = targetWindow;
-            }
-            else if (lastTargetWindow)
-            {
-                [[NSCursor arrowCursor] set];
-                [self unhideCursor];
-                lastTargetWindow = nil;
-            }
+            [self handleMouseMove:anEvent];
         }
         else if (type == NSLeftMouseDown || type == NSLeftMouseUp ||
                  type == NSRightMouseDown || type == NSRightMouseUp ||




More information about the wine-cvs mailing list