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