From de30a74cdf43c1fba67d88bae3931a79fef38af1 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 19 Jun 2018 13:17:57 +0200 Subject: [PATCH] gtkwidget: Avoid doubly coordinate conversion when emulating press We are poking again into the event propagation machinery, which expects events in toplevel coordinates. Since we can't fetch the original event back at this point, translate the coordinates back to the toplevel so the emulated press ends up in the right place. https://gitlab.gnome.org/GNOME/gtk/issues/1159 Closes: #1159 --- gtk/gtkwidget.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 69a5d2219b..8a42c8073e 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -2523,12 +2523,20 @@ _gtk_widget_emulate_press (GtkWidget *widget, { GtkWidget *event_widget, *next_child, *parent; GdkEvent *press; + gdouble x, y; event_widget = gtk_get_event_target ((GdkEvent *) event); if (event_widget == widget) return; + gdk_event_get_coords (event, &x, &y); + gtk_widget_translate_coordinatesf (event_widget, + gtk_widget_get_toplevel (event_widget), + x, y, + &x, &y); + gdk_event_set_coords (event, x, y); + if (event->any.type == GDK_TOUCH_BEGIN || event->any.type == GDK_TOUCH_UPDATE || event->any.type == GDK_TOUCH_END) -- 2.30.2