mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-29 02:27:53 +00:00
wayland: Don't ignore wl_keyboard.leave if surface is gone
keyboard_handle_leave() might be called with a NULL surface resource (for example if the surface was destroyed after the event was sent). If so, we should still deal with the keyboard focus lost event, otherwise we will both leak (the keyboard_focus GdkWindow reference) and miss stopping the key repeat timer. https://bugzilla.gnome.org/show_bug.cgi?id=755927
This commit is contained in:
parent
263cbd90a0
commit
dad1931b5f
@ -1191,15 +1191,14 @@ keyboard_handle_leave (void *data,
|
||||
GdkEvent *event;
|
||||
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (device->display);
|
||||
|
||||
if (!surface)
|
||||
return;
|
||||
|
||||
if (!GDK_IS_WINDOW (wl_surface_get_user_data (surface)))
|
||||
return;
|
||||
|
||||
if (!device->keyboard_focus)
|
||||
return;
|
||||
|
||||
/* gdk_window_is_destroyed() might already return TRUE for
|
||||
* device->keyboard_focus here, which would happen if we destroyed the
|
||||
* window before loosing keyboard focus.
|
||||
*/
|
||||
|
||||
stop_key_repeat (device);
|
||||
|
||||
_gdk_wayland_display_update_serial (display, serial);
|
||||
|
Loading…
Reference in New Issue
Block a user