winemac: Consolidate mouse move handling into -[WineApplicationController handleMouseMove:].
This commit is contained in:
parent
76691853f5
commit
72e893237c
|
@ -60,6 +60,7 @@ @interface WineApplicationController : NSObject <NSApplicationDelegate>
|
|||
|
||||
WineWindow* lastTargetWindow;
|
||||
BOOL forceNextMouseMoveAbsolute;
|
||||
double mouseMoveDeltaX, mouseMoveDeltaY;
|
||||
|
||||
NSMutableArray* orderedWineWindows;
|
||||
|
||||
|
|
|
@ -1157,6 +1157,7 @@ - (void) handleMouseMove:(NSEvent*)anEvent
|
|||
|
||||
if ([targetWindow isKindOfClass:[WineWindow class]])
|
||||
{
|
||||
macdrv_event* event;
|
||||
BOOL absolute = forceNextMouseMoveAbsolute || (targetWindow != lastTargetWindow);
|
||||
forceNextMouseMoveAbsolute = FALSE;
|
||||
|
||||
|
@ -1172,7 +1173,42 @@ - (void) handleMouseMove:(NSEvent*)anEvent
|
|||
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)
|
||||
|
|
|
@ -48,8 +48,6 @@ @interface WineWindow : NSPanel <NSWindowDelegate>
|
|||
|
||||
NSUInteger lastModifierFlags;
|
||||
|
||||
double mouseMoveDeltaX, mouseMoveDeltaY;
|
||||
|
||||
NSInteger levelWhenActive;
|
||||
|
||||
NSTimer* liveResizeDisplayTimer;
|
||||
|
@ -68,6 +66,4 @@ @interface WineWindow : NSPanel <NSWindowDelegate>
|
|||
|
||||
- (void) adjustWindowLevel;
|
||||
|
||||
- (void) postMouseMovedEvent:(NSEvent *)theEvent absolute:(BOOL)absolute;
|
||||
|
||||
@end
|
||||
|
|
|
@ -952,47 +952,6 @@ - (void) postKeyEvent:(NSEvent *)theEvent
|
|||
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;
|
||||
|
|
Loading…
Reference in New Issue