diff options
author | Luca Bacci <luca.bacci982@gmail.com> | 2022-10-26 15:16:41 +0200 |
---|---|---|
committer | Luca Bacci <luca.bacci982@gmail.com> | 2022-10-26 15:21:38 +0200 |
commit | bbce00f3a38caa2c1399e3e80fba1ee3861dbc8e (patch) | |
tree | fafdd699e2f5f0bc9b5c82497d78aa642aa44196 /gtk | |
parent | 84a3ea5ec4cd293ccc9a5bbba399705c223069f7 (diff) | |
download | gtk+-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.c | 13 |
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 |