Module: wine Branch: master Commit: 0a9398421ce3d5a57419d1c8582d66ec31a31f91 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0a9398421ce3d5a57419d1c858...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Sep 25 19:25:02 2012 +0200
winex11: Add a workaround for XInput support with mouse drivers that don't provide labels.
---
dlls/winex11.drv/mouse.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c index 5808420..2f9831c 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -286,6 +286,8 @@ static void enable_xinput2(void) class->number, class->min, class->max, class->resolution, class->mode, XGetAtomName( data->display, class->label )); if (class->label == x11drv_atom( Rel_X ) || class->label == x11drv_atom( Rel_Y )) count++; + /* workaround for drivers that don't provide labels */ + if (!class->label && class->number <= 1 && class->mode == XIModeRelative) count++; } if (count < 2) continue; TRACE( "Using %u (%s) as core pointer\n", @@ -1526,14 +1528,16 @@ static void X11DRV_RawMotion( XGenericEventCookie *xev ) if (XIMaskIsSet( event->valuators.mask, class->number )) { double val = *values++; - if (class->label == x11drv_atom( Rel_X )) + if (class->label == x11drv_atom( Rel_X ) || + (!class->label && class->number == 0 && class->mode == XIModeRelative)) { input.u.mi.dx = dx = val; if (class->min < class->max) input.u.mi.dx = val * (virtual_screen_rect.right - virtual_screen_rect.left) / (class->max - class->min); } - else if (class->label == x11drv_atom( Rel_Y )) + else if (class->label == x11drv_atom( Rel_Y ) || + (!class->label && class->number == 1 && class->mode == XIModeRelative)) { input.u.mi.dy = dy = val; if (class->min < class->max)