Ken Thomases : winemac: Consolidate mouse move handling into -[ WineApplicationController handleMouseMove:].

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


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

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

winemac: Consolidate mouse move handling into -[WineApplicationController handleMouseMove:].

---

 dlls/winemac.drv/cocoa_app.h    |    1 +
 dlls/winemac.drv/cocoa_app.m    |   38 +++++++++++++++++++++++++++++++++++-
 dlls/winemac.drv/cocoa_window.h |    4 ---
 dlls/winemac.drv/cocoa_window.m |   41 ---------------------------------------
 4 files changed, 38 insertions(+), 46 deletions(-)

diff --git a/dlls/winemac.drv/cocoa_app.h b/dlls/winemac.drv/cocoa_app.h
index 60a239c..f0cdfc3 100644
--- a/dlls/winemac.drv/cocoa_app.h
+++ b/dlls/winemac.drv/cocoa_app.h
@@ -60,6 +60,7 @@ enum {
 
     WineWindow* lastTargetWindow;
     BOOL forceNextMouseMoveAbsolute;
+    double mouseMoveDeltaX, mouseMoveDeltaY;
 
     NSMutableArray* orderedWineWindows;
 
diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m
index 7f2ec7c..3ef84e0 100644
--- a/dlls/winemac.drv/cocoa_app.m
+++ b/dlls/winemac.drv/cocoa_app.m
@@ -1157,6 +1157,7 @@ int macdrv_err_on;
 
         if ([targetWindow isKindOfClass:[WineWindow class]])
         {
+            macdrv_event* event;
             BOOL absolute = forceNextMouseMoveAbsolute || (targetWindow != lastTargetWindow);
             forceNextMouseMoveAbsolute = FALSE;
 
@@ -1172,7 +1173,42 @@ int macdrv_err_on;
                 absolute = TRUE;
             }
 
-            [targetWindow postMouseMovedEvent:anEvent absolute:absolute];
+            if (absolute)
+            {
+                CGPoint point = CGEventGetLocation([anEvent CGEvent]);
+
+                event = macdrv_create_event(MOUSE_MOVED_ABSOLUTE, targetWindow);
+                event->mouse_moved.x = point.x;
+                event->mouse_moved.y = point.y;
+
+                mouseMoveDeltaX = 0;
+                mouseMoveDeltaY = 0;
+            }
+            else
+            {
+                /* Add event delta to accumulated delta error */
+                /* deltaY is already flipped */
+                mouseMoveDeltaX += [anEvent deltaX];
+                mouseMoveDeltaY += [anEvent deltaY];
+
+                event = macdrv_create_event(MOUSE_MOVED, targetWindow);
+                event->mouse_moved.x = mouseMoveDeltaX;
+                event->mouse_moved.y = mouseMoveDeltaY;
+
+                /* Keep the remainder after integer truncation. */
+                mouseMoveDeltaX -= event->mouse_moved.x;
+                mouseMoveDeltaY -= event->mouse_moved.y;
+            }
+
+            if (event->type == MOUSE_MOVED_ABSOLUTE || event->mouse_moved.x || event->mouse_moved.y)
+            {
+                event->mouse_moved.time_ms = [self ticksForEventTime:[anEvent timestamp]];
+
+                [targetWindow.queue postEvent:event];
+            }
+
+            macdrv_release_event(event);
+
             lastTargetWindow = targetWindow;
         }
         else if (lastTargetWindow)
diff --git a/dlls/winemac.drv/cocoa_window.h b/dlls/winemac.drv/cocoa_window.h
index ed5f1f9..2d95e1a 100644
--- a/dlls/winemac.drv/cocoa_window.h
+++ b/dlls/winemac.drv/cocoa_window.h
@@ -48,8 +48,6 @@
 
     NSUInteger lastModifierFlags;
 
-    double mouseMoveDeltaX, mouseMoveDeltaY;
-
     NSInteger levelWhenActive;
 
     NSTimer* liveResizeDisplayTimer;
@@ -68,6 +66,4 @@
 
     - (void) adjustWindowLevel;
 
-    - (void) postMouseMovedEvent:(NSEvent *)theEvent absolute:(BOOL)absolute;
-
 @end
diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m
index 65d7bc5..80bf9a4 100644
--- a/dlls/winemac.drv/cocoa_window.m
+++ b/dlls/winemac.drv/cocoa_window.m
@@ -952,47 +952,6 @@ static inline void fix_generic_modifiers_by_device(NSUInteger* modifiers)
                 event:theEvent];
     }
 
-    - (void) postMouseMovedEvent:(NSEvent *)theEvent absolute:(BOOL)absolute
-    {
-        macdrv_event* event;
-
-        if (absolute)
-        {
-            CGPoint point = CGEventGetLocation([theEvent CGEvent]);
-
-            event = macdrv_create_event(MOUSE_MOVED_ABSOLUTE, self);
-            event->mouse_moved.x = point.x;
-            event->mouse_moved.y = point.y;
-
-            mouseMoveDeltaX = 0;
-            mouseMoveDeltaY = 0;
-        }
-        else
-        {
-            /* Add event delta to accumulated delta error */
-            /* deltaY is already flipped */
-            mouseMoveDeltaX += [theEvent deltaX];
-            mouseMoveDeltaY += [theEvent deltaY];
-
-            event = macdrv_create_event(MOUSE_MOVED, self);
-            event->mouse_moved.x = mouseMoveDeltaX;
-            event->mouse_moved.y = mouseMoveDeltaY;
-
-            /* Keep the remainder after integer truncation. */
-            mouseMoveDeltaX -= event->mouse_moved.x;
-            mouseMoveDeltaY -= event->mouse_moved.y;
-        }
-
-        if (event->type == MOUSE_MOVED_ABSOLUTE || event->mouse_moved.x || event->mouse_moved.y)
-        {
-            event->mouse_moved.time_ms = [[WineApplicationController sharedController] ticksForEventTime:[theEvent timestamp]];
-
-            [queue postEvent:event];
-        }
-
-        macdrv_release_event(event);
-    }
-
     - (void) setLevelWhenActive:(NSInteger)level
     {
         levelWhenActive = level;




More information about the wine-cvs mailing list