Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
76691853
Commit
76691853
authored
May 07, 2013
by
Ken Thomases
Committed by
Alexandre Julliard
May 07, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winemac: Extract application-level handling of mouse move events to a separate method.
parent
79ef449e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
49 additions
and
45 deletions
+49
-45
cocoa_app.m
dlls/winemac.drv/cocoa_app.m
+49
-45
No files found.
dlls/winemac.drv/cocoa_app.m
View file @
76691853
...
...
@@ -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
||
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment