summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2020-04-02 19:31:22 +0200
committerMatthias Clasen <mclasen@redhat.com>2020-04-02 16:18:18 -0400
commit7444b15d47e40d1c4696bf978319690db0b91c4b (patch)
tree680bc7690b44445dad1b7f4d701c0e50b9f46403
parentdd625abfc159cb2886ce497711c95a1e968383e4 (diff)
downloadgtk+-7444b15d47e40d1c4696bf978319690db0b91c4b.tar.gz
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
-rw-r--r--gdk/wayland/gdkdevice-wayland.c1
1 files changed, 1 insertions, 0 deletions
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",