textview: Fix context menu placement
authorMatthias Clasen <mclasen@redhat.com>
Sun, 17 May 2020 06:03:41 +0000 (02:03 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 17 May 2020 06:03:41 +0000 (02:03 -0400)
Take the surface transform into account for
positioning the context menu.

gtk/gtktextview.c

index a6a02473abc2cebdf60bd996be7c991c82e27e9b..5486e1333928d5a2d7ed0edb366e7a5e6ae7ca2b 100644 (file)
@@ -53,7 +53,7 @@
 #include "gtkmagnifierprivate.h"
 #include "gtkemojichooser.h"
 #include "gtkpango.h"
-#include "gtknative.h"
+#include "gtknativeprivate.h"
 #include "gtkwidgetprivate.h"
 
 #include "a11y/gtktextviewaccessibleprivate.h"
@@ -8615,13 +8615,17 @@ gtk_text_view_do_popup (GtkTextView *text_view,
 
       if (device)
         {
+          GtkNative *native;
           GdkSurface *surface;
           double px, py;
+          int nx, ny;
 
-          surface = gtk_native_get_surface (gtk_widget_get_native (GTK_WIDGET (text_view)));
+          native = gtk_widget_get_native (GTK_WIDGET (text_view));
+          surface = gtk_native_get_surface (native);
           gdk_surface_get_device_position (surface, device, &px, &py, NULL);
-          rect.x = round (px);
-          rect.y = round (py);
+          gtk_native_get_surface_transform (native, &nx, &ny);
+          rect.x = round (px) - nx;
+          rect.y = round (py) - ny;
 
           gtk_widget_translate_coordinates (GTK_WIDGET (gtk_widget_get_native (GTK_WIDGET (text_view))),
                                            GTK_WIDGET (text_view),