diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-11-12 17:31:52 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2020-11-13 00:39:23 +0100 |
commit | 50a7e59623683c77c6be54977eda30f8917bb8b5 (patch) | |
tree | 43b062903529901ccf693d4eda22b220b3a999fa /gtk/gtkmain.c | |
parent | 92ca3a34194d6b37fdf84f5bc4dc831d2952abb6 (diff) | |
download | gtk+-50a7e59623683c77c6be54977eda30f8917bb8b5.tar.gz |
gtk/main: Toggle active flag with touch events
This went missing at some point, add the missing toggling of active
state with GDK_TOUCH_BEGIN/END/CANCEL events.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3348
Diffstat (limited to 'gtk/gtkmain.c')
-rw-r--r-- | gtk/gtkmain.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index cfc74ce43e..96ff1e69ad 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -1413,7 +1413,9 @@ handle_pointing_event (GdkEvent *event) case GDK_TOUCH_END: case GDK_TOUCH_CANCEL: old_target = update_pointer_focus_state (toplevel, event, NULL); - if (type == GDK_LEAVE_NOTIFY) + if (type == GDK_TOUCH_END || type == GDK_TOUCH_CANCEL) + set_widget_active_state (old_target, TRUE); + else if (type == GDK_LEAVE_NOTIFY) gtk_synthesize_crossing_events (GTK_ROOT (toplevel), GTK_CROSSING_POINTER, old_target, NULL, event, gdk_crossing_event_get_mode (event), NULL); break; @@ -1465,7 +1467,10 @@ handle_pointing_event (GdkEvent *event) gtk_drop_end_event (drop); } else if (type == GDK_TOUCH_BEGIN) - gtk_window_set_pointer_focus_grab (toplevel, device, sequence, target); + { + gtk_window_set_pointer_focus_grab (toplevel, device, sequence, target); + set_widget_active_state (target, FALSE); + } /* Let it take the effective pointer focus anyway, as it may change due * to implicit grabs. |