summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorLuca Bacci <luca.bacci982@gmail.com>2022-10-26 15:16:41 +0200
committerLuca Bacci <luca.bacci982@gmail.com>2022-10-26 15:21:38 +0200
commitbbce00f3a38caa2c1399e3e80fba1ee3861dbc8e (patch)
treefafdd699e2f5f0bc9b5c82497d78aa642aa44196 /gtk
parent84a3ea5ec4cd293ccc9a5bbba399705c223069f7 (diff)
downloadgtk+-bbce00f3a38caa2c1399e3e80fba1ee3861dbc8e.tar.gz
GtkTooltip: Scale the cursor size on X11
GtkSettings/X11 takes the values as provided by XSettings. Unlike other backends, the values of XSettings are in physical size (that's because X11 doesn't support mixed-DPI setups anyway). Take that in account when retrieving the cursor size in gtk_tooltip_position (). Note that this discrepancy between the X11 and other backends has been fixed in GTK4. Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5223
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtktooltip.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c
index 9917d93197..ca149fc48e 100644
--- a/gtk/gtktooltip.c
+++ b/gtk/gtktooltip.c
@@ -42,6 +42,9 @@
#ifdef GDK_WINDOWING_WAYLAND
#include "wayland/gdkwayland.h"
#endif
+#ifdef GDK_WINDOWING_X11
+#include "x11/gdkx.h"
+#endif
/**
@@ -898,6 +901,16 @@ gtk_tooltip_position (GtkTooltip *tooltip,
if (cursor_size == 0)
cursor_size = gdk_display_get_default_cursor_size (display);
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_SCREEN (screen))
+ {
+ /* Cursor size on X11 comes directly from XSettings which
+ * report physical sizes, unlike on other backends. So in
+ * that case we have to scale the retrieved cursor_size */
+ cursor_size /= gtk_widget_get_scale_factor (new_tooltip_widget);
+ }
+#endif
+
if (device)
anchor_rect_padding = MAX (4, cursor_size - 32);
else