From: Carlos Garnacho Date: Tue, 19 Jun 2018 11:17:57 +0000 (+0200) Subject: gtkwidget: Avoid doubly coordinate conversion when emulating press X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~64^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=de30a74cdf43c1fba67d88bae3931a79fef38af1;p=gtk4.git 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 --- 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)