gdk: Manage GDK_TOUCH_CANCEL events on gdk_windowing_got_event()
These events must get active/implicit grabs undone, and can be done on client-side code. https://bugzilla.gnome.org/show_bug.cgi?id=759309
This commit is contained in:
parent
09947a63ed
commit
fc19a999ec
@ -9579,7 +9579,8 @@ _gdk_windowing_got_event (GdkDisplay *display,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(is_button_type (event->type) ||
|
if (!(event->type == GDK_TOUCH_CANCEL ||
|
||||||
|
is_button_type (event->type) ||
|
||||||
is_motion_type (event->type) ||
|
is_motion_type (event->type) ||
|
||||||
is_gesture_type (event->type)) ||
|
is_gesture_type (event->type)) ||
|
||||||
event_window->window_type == GDK_WINDOW_ROOT)
|
event_window->window_type == GDK_WINDOW_ROOT)
|
||||||
@ -9684,13 +9685,14 @@ _gdk_windowing_got_event (GdkDisplay *display,
|
|||||||
unlink_event = proxy_gesture_event (event, serial);
|
unlink_event = proxy_gesture_event (event, serial);
|
||||||
|
|
||||||
if ((event->type == GDK_BUTTON_RELEASE ||
|
if ((event->type == GDK_BUTTON_RELEASE ||
|
||||||
|
event->type == GDK_TOUCH_CANCEL ||
|
||||||
event->type == GDK_TOUCH_END) &&
|
event->type == GDK_TOUCH_END) &&
|
||||||
!event->any.send_event)
|
!event->any.send_event)
|
||||||
{
|
{
|
||||||
GdkEventSequence *sequence;
|
GdkEventSequence *sequence;
|
||||||
|
|
||||||
sequence = gdk_event_get_event_sequence (event);
|
sequence = gdk_event_get_event_sequence (event);
|
||||||
if (event->type == GDK_TOUCH_END && sequence)
|
if (sequence)
|
||||||
{
|
{
|
||||||
_gdk_display_end_touch_grab (display, device, sequence);
|
_gdk_display_end_touch_grab (display, device, sequence);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user