mirror of
https://github.com/brl/mutter.git
synced 2025-01-23 01:48:55 +00:00
x11/xi2: Do not generate scroll events on ButtonRelease
Scroll events are generated on ButtonPress only in the core event handling, so it should happen the same if we use XInput. https://bugzilla.gnome.org/show_bug.cgi?id=680088
This commit is contained in:
parent
6ac815219b
commit
2a31a93c5e
@ -838,6 +838,10 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
|
|||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
case 7:
|
case 7:
|
||||||
|
/* we only generate Scroll events on ButtonPress */
|
||||||
|
if (xi_event->evtype == XI_ButtonRelease)
|
||||||
|
return CLUTTER_TRANSLATE_REMOVE;
|
||||||
|
|
||||||
event->scroll.type = event->type = CLUTTER_SCROLL;
|
event->scroll.type = event->type = CLUTTER_SCROLL;
|
||||||
|
|
||||||
if (xev->detail == 4)
|
if (xev->detail == 4)
|
||||||
@ -876,6 +880,21 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
|
|||||||
if (xev->flags & XIPointerEmulated)
|
if (xev->flags & XIPointerEmulated)
|
||||||
_clutter_event_set_pointer_emulated (event, TRUE);
|
_clutter_event_set_pointer_emulated (event, TRUE);
|
||||||
#endif /* HAVE_XINPUT_2_2 */
|
#endif /* HAVE_XINPUT_2_2 */
|
||||||
|
|
||||||
|
CLUTTER_NOTE (EVENT,
|
||||||
|
"scroll: win:0x%x, device:%s, time:%d "
|
||||||
|
"(direction:%s, "
|
||||||
|
"x:%.2f, y:%.2f)",
|
||||||
|
(unsigned int) stage_x11->xwin,
|
||||||
|
device->device_name,
|
||||||
|
event->any.time,
|
||||||
|
event->scroll.direction == CLUTTER_SCROLL_UP ? "up" :
|
||||||
|
event->scroll.direction == CLUTTER_SCROLL_DOWN ? "down" :
|
||||||
|
event->scroll.direction == CLUTTER_SCROLL_LEFT ? "left" :
|
||||||
|
event->scroll.direction == CLUTTER_SCROLL_RIGHT ? "right" :
|
||||||
|
"invalid",
|
||||||
|
event->scroll.x,
|
||||||
|
event->scroll.y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -906,24 +925,25 @@ clutter_device_manager_xi2_translate_event (ClutterEventTranslator *translator,
|
|||||||
event->button.y,
|
event->button.y,
|
||||||
stage_x11,
|
stage_x11,
|
||||||
&xev->valuators);
|
&xev->valuators);
|
||||||
|
|
||||||
|
CLUTTER_NOTE (EVENT,
|
||||||
|
"%s: win:0x%x, device:%s, time:%d (button:%d, x:%.2f, y:%.2f, axes:%s)",
|
||||||
|
event->any.type == CLUTTER_BUTTON_PRESS
|
||||||
|
? "button press "
|
||||||
|
: "button release",
|
||||||
|
(unsigned int) stage_x11->xwin,
|
||||||
|
device->device_name,
|
||||||
|
event->any.time,
|
||||||
|
event->button.button,
|
||||||
|
event->button.x,
|
||||||
|
event->button.y,
|
||||||
|
event->button.axes != NULL ? "yes" : "no");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (source_device != NULL && device->stage != NULL)
|
if (source_device != NULL && device->stage != NULL)
|
||||||
_clutter_input_device_set_stage (source_device, device->stage);
|
_clutter_input_device_set_stage (source_device, device->stage);
|
||||||
|
|
||||||
CLUTTER_NOTE (EVENT,
|
|
||||||
"%s: win:0x%x, device:%s (button:%d, x:%.2f, y:%.2f, axes:%s)",
|
|
||||||
event->any.type == CLUTTER_BUTTON_PRESS
|
|
||||||
? "button press "
|
|
||||||
: "button release",
|
|
||||||
(unsigned int) stage_x11->xwin,
|
|
||||||
event->button.device->device_name,
|
|
||||||
event->button.button,
|
|
||||||
event->button.x,
|
|
||||||
event->button.y,
|
|
||||||
event->button.axes != NULL ? "yes" : "no");
|
|
||||||
|
|
||||||
#ifdef HAVE_XINPUT_2_2
|
#ifdef HAVE_XINPUT_2_2
|
||||||
if (xev->flags & XIPointerEmulated)
|
if (xev->flags & XIPointerEmulated)
|
||||||
_clutter_event_set_pointer_emulated (event, TRUE);
|
_clutter_event_set_pointer_emulated (event, TRUE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user