Files
gtk3/gdk
Olivier Fourdan cd5502ddf4 wayland: check native window for crossing events
gdk_wayland_*_grab()/ungrab() would emit crossing events which translate
as focus_in/focus_out events for keyboard.

However, the ungrab() functions compare the native toplevel as this is
what gets the Wayland pointer enter/leave events with the grab window,
so if the grab is issued on a child gdk window, those won't match and we
would emit more focus_out events than focus_in events.

This means that a widget such as spice-gtk which issues a keyboard grab
whenever the pointer enters the window and releases the grab when it
leaves the window would get uneven numbers of focus_in/focus_out events.

Also, gdk_wayland_seat_ungrab() would not emit crossing events for
keyboard devices, whereas gdk_wayland_device_ungrab() does, which adds
even more potential discrepancies between focus_in/focus_out events.

To solve this problem, introduce two new helper functions which check
the relevant native windows to emit crossing events when needed that get
called evenly from both gdk_wayland_seat_grab()/ungrab() and gdk_Wayland
_device_grab()/ungrab() APIs.

Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=780422
Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/792
2018-05-09 15:49:35 +02:00
..
2017-04-03 13:29:59 -04:00
2017-05-22 14:26:32 +01:00
2016-06-29 15:10:39 +02:00
2016-08-23 21:01:44 +02:00
2016-06-09 17:45:40 +01:00
2016-05-17 14:16:39 -04:00
2016-08-23 21:01:44 +02:00
2016-08-23 21:01:44 +02:00
2016-08-23 21:01:44 +02:00
2016-05-08 15:34:28 +02:00
2017-03-13 03:52:06 -04:00
2016-06-09 17:45:40 +01:00
2017-12-25 23:00:30 -05:00
2017-12-25 23:00:30 -05:00
2016-05-08 15:34:28 +02:00
2016-04-27 23:18:16 -04:00
2016-04-18 11:46:58 -04:00
2017-11-13 23:42:51 +01:00
2016-10-28 06:04:58 +02:00
2016-10-28 06:04:58 +02:00