[gtk/cherry-picked-wayland-keyboard-fix] gdk/wayland: Clear modifiers when we lose keyboard focus



commit 7444b15d47e40d1c4696bf978319690db0b91c4b
Author: Jan Alexander Steffens (heftig) <jan steffens gmail com>
Date:   Thu Apr 2 19:31:22 2020 +0200

    gdk/wayland: Clear modifiers when we lose keyboard focus
    
    When we `Alt+Tab` away from a GTK application, it loses keyboard focus.
    If we don't clear the modifiers, events from other devices that we
    receive while unfocused will assume `Alt` is still pressed. This results
    in e.g. Firefox navigating through the history instead of scrolling the
    page when using the mouse wheel on it.
    
    We don't get any information about modifiers while we are missing
    keyboard focus, so assuming no modifiers are active is the best we can
    do.
    
    The shell sends us a modifier update immediately before we regain
    keyboard focus, so the state shouldn't get out of sync.
    
    Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/2112

 gdk/wayland/gdkdevice-wayland.c | 1 +
 1 file changed, 1 insertion(+)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 0c850147f4..0e1ac1d283 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -1934,6 +1934,7 @@ keyboard_handle_leave (void               *data,
   g_object_unref (seat->keyboard_focus);
   seat->keyboard_focus = NULL;
   seat->repeat_key = 0;
+  seat->key_modifiers = 0;
 
   GDK_SEAT_NOTE (seat, EVENTS,
             g_message ("focus out, seat %p surface %p",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]