diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-12-27 04:30:38 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-12-27 04:30:38 +0000 |
commit | 459d6e134924c98ea2b457d66d8407b7c374af2d (patch) | |
tree | 1b46b7fdaf519a390b98194dfc9a6b164e8b0ea8 | |
parent | 9c84fa127a33e33e8dc5e93adb5e40d3a46b2dbc (diff) | |
parent | cf20cfd31e31fb0d5888119ef60e68ddf7582585 (diff) | |
download | gtk+-459d6e134924c98ea2b457d66d8407b7c374af2d.tar.gz |
Merge branch 'wip/carlosg/for-master' into 'master'
gtk/gesturestylus: Convert motion history from surface coordinates
Closes #3491
See merge request GNOME/gtk!2999
-rw-r--r-- | gtk/gtkgesturestylus.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gtk/gtkgesturestylus.c b/gtk/gtkgesturestylus.c index bd6238f3a8..2d49783baf 100644 --- a/gtk/gtkgesturestylus.c +++ b/gtk/gtkgesturestylus.c @@ -35,6 +35,7 @@ #include "gtkintl.h" #include "gtkmarshalers.h" #include "gtkmain.h" +#include "gtknative.h" G_DEFINE_TYPE (GtkGestureStylus, gtk_gesture_stylus, GTK_TYPE_GESTURE_SINGLE) @@ -319,6 +320,8 @@ gtk_gesture_stylus_get_backlog (GtkGestureStylus *gesture, GArray *backlog_array; GdkTimeCoord *history = NULL; guint n_coords = 0, i; + double surf_x, surf_y; + GtkNative *native; g_return_val_if_fail (GTK_IS_GESTURE_STYLUS (gesture), FALSE); g_return_val_if_fail (backlog != NULL && n_elems != NULL, FALSE); @@ -331,6 +334,9 @@ gtk_gesture_stylus_get_backlog (GtkGestureStylus *gesture, if (!history) return FALSE; + native = gtk_widget_get_native (gtk_get_event_widget (event)); + gtk_native_get_surface_transform (native, &surf_x, &surf_y); + backlog_array = g_array_new (FALSE, FALSE, sizeof (GdkTimeCoord)); for (i = 0; i < n_coords; i++) { @@ -339,10 +345,11 @@ gtk_gesture_stylus_get_backlog (GtkGestureStylus *gesture, g_array_append_val (backlog_array, *time_coord); time_coord = &g_array_index (backlog_array, GdkTimeCoord, backlog_array->len - 1); - if (gtk_widget_compute_point (gtk_get_event_widget (event), + + if (gtk_widget_compute_point (GTK_WIDGET (native), gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (gesture)), - &GRAPHENE_POINT_INIT (time_coord->axes[GDK_AXIS_X], - time_coord->axes[GDK_AXIS_Y]), + &GRAPHENE_POINT_INIT (time_coord->axes[GDK_AXIS_X] - surf_x, + time_coord->axes[GDK_AXIS_Y] - surf_y), &p)) { time_coord->axes[GDK_AXIS_X] = p.x; |