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
This commit is contained in:
Luca Bacci 2022-10-26 15:16:41 +02:00
parent 84a3ea5ec4
commit bbce00f3a3

View File

@ -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