Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
8e9b4e0a
Commit
8e9b4e0a
authored
May 13, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winex11: Allow MotionNotify events through occasionally while XInput is active.
parent
fd4ad5a6
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
8 deletions
+15
-8
event.c
dlls/winex11.drv/event.c
+7
-3
mouse.c
dlls/winex11.drv/mouse.c
+7
-5
x11drv.h
dlls/winex11.drv/x11drv.h
+1
-0
No files found.
dlls/winex11.drv/event.c
View file @
8e9b4e0a
...
...
@@ -323,10 +323,14 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next )
switch
(
next
->
type
)
{
case
MotionNotify
:
if
(
next
->
xany
.
window
==
x11drv_thread_data
()
->
clip_window
)
{
TRACE
(
"ignoring MotionNotify for clip window
\n
"
);
return
MERGE_IGNORE
;
struct
x11drv_thread_data
*
thread_data
=
x11drv_thread_data
();
if
(
next
->
xany
.
window
==
thread_data
->
clip_window
&&
next
->
xmotion
.
time
-
thread_data
->
last_motion_notify
<
1000
)
{
TRACE
(
"ignoring MotionNotify for clip window
\n
"
);
return
MERGE_IGNORE
;
}
}
break
;
case
GenericEvent
:
...
...
dlls/winex11.drv/mouse.c
View file @
8e9b4e0a
...
...
@@ -547,11 +547,6 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU
if
(
thread_data
->
clip_window
!=
window
)
return
;
input
->
u
.
mi
.
dx
+=
clip_rect
.
left
;
input
->
u
.
mi
.
dy
+=
clip_rect
.
top
;
if
(
!
(
input
->
u
.
mi
.
dwFlags
&
~
(
MOUSEEVENTF_MOVE
|
MOUSEEVENTF_ABSOLUTE
)))
{
/* motion events are ignored when xinput2 is active */
if
(
thread_data
->
xi2_state
==
xi_enabled
)
return
;
}
__wine_send_input
(
hwnd
,
input
);
return
;
}
...
...
@@ -1366,6 +1361,13 @@ void X11DRV_MotionNotify( HWND hwnd, XEvent *xev )
input
.
u
.
mi
.
time
=
EVENT_x11_time_to_win32_time
(
event
->
time
);
input
.
u
.
mi
.
dwExtraInfo
=
0
;
if
(
!
hwnd
)
{
struct
x11drv_thread_data
*
thread_data
=
x11drv_thread_data
();
if
(
event
->
time
-
thread_data
->
last_motion_notify
<
1000
)
return
;
thread_data
->
last_motion_notify
=
event
->
time
;
}
send_mouse_input
(
hwnd
,
event
->
window
,
event
->
state
,
&
input
);
}
...
...
dlls/winex11.drv/x11drv.h
View file @
8e9b4e0a
...
...
@@ -548,6 +548,7 @@ struct x11drv_thread_data
HWND
last_focus
;
/* last window that had focus */
XIM
xim
;
/* input method */
HWND
last_xic_hwnd
;
/* last xic window */
Time
last_motion_notify
;
/* time of last mouse motion */
XFontSet
font_set
;
/* international text drawing font set */
Window
selection_wnd
;
/* window used for selection interactions */
Window
clip_window
;
/* window used for cursor clipping */
...
...
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