summaryrefslogtreecommitdiff
path: root/gtk/gtkmain.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-11-12 17:31:52 +0100
committerCarlos Garnacho <carlosg@gnome.org>2020-11-13 00:39:23 +0100
commit50a7e59623683c77c6be54977eda30f8917bb8b5 (patch)
tree43b062903529901ccf693d4eda22b220b3a999fa /gtk/gtkmain.c
parent92ca3a34194d6b37fdf84f5bc4dc831d2952abb6 (diff)
downloadgtk+-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.c9
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.