tooltip: Get the pointer position relative to the toplevel widget
authorTimm Bäder <mail@baedert.org>
Sun, 3 Feb 2019 06:04:39 +0000 (07:04 +0100)
committerTimm Bäder <mail@baedert.org>
Mon, 4 Feb 2019 16:05:30 +0000 (17:05 +0100)
Since we position the tooltip window relative to the toplevel widget and
not actually relative to the effective_toplevel, we shouldn't get the
pointer position relative to the effective_toplevel.

We previously used the pointer position (relative to the
effective_toplevel) and the anchor rect (relative to the toplevel
widget) together to calculate x_distance. This leads to wrong values in
cases where get_surface (new_tooltip_widget) != get_surface (toplevel)

Fixes #1427 in master

gtk/gtktooltip.c

index 2b9e6c0a2ea1a1494d3d48994341fd16d9a0a735..e2bcf29571f6c2438b8eb33f6b65b9172501f8ff 100644 (file)
@@ -625,7 +625,7 @@ gtk_tooltip_position (GtkTooltip *tooltip,
        * If the anchor rectangle isn't to tall, make sure the tooltip isn't too
        * far away from the pointer position.
        */
-      effective_toplevel = _gtk_widget_get_surface (new_tooltip_widget);
+      effective_toplevel = _gtk_widget_get_surface (toplevel);
       gdk_surface_get_device_position (effective_toplevel,
                                        device,
                                        &pointer_x, &pointer_y, NULL);