From 2033b06cb6cff8b44e123f0ff0693ca4e78e2337 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 9 Sep 2016 14:48:33 +0200 Subject: [PATCH] gdk: Require passing screen size to translate_screen_coord() --- gdk/gdkdevice.c | 6 ++++-- gdk/gdkdeviceprivate.h | 2 ++ gdk/win32/gdkdevice-wintab.c | 8 ++++++-- gdk/x11/gdkdevice-xi2.c | 4 ++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c index 92222ccd10..9f0c6e23d7 100644 --- a/gdk/gdkdevice.c +++ b/gdk/gdkdevice.c @@ -1784,6 +1784,8 @@ _gdk_device_translate_screen_coord (GdkDevice *device, GdkWindow *window, gdouble window_root_x, gdouble window_root_y, + gdouble screen_width, + gdouble screen_height, guint index_, gdouble value, gdouble *axis_value) @@ -1808,7 +1810,7 @@ _gdk_device_translate_screen_coord (GdkDevice *device, if (axis_info.use == GDK_AXIS_X) { if (axis_width > 0) - scale = gdk_screen_get_width (gdk_window_get_screen (window)) / axis_width; + scale = screen_width / axis_width; else scale = 1; @@ -1817,7 +1819,7 @@ _gdk_device_translate_screen_coord (GdkDevice *device, else { if (axis_width > 0) - scale = gdk_screen_get_height (gdk_window_get_screen (window)) / axis_width; + scale = screen_height / axis_width; else scale = 1; diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h index 6dbc601618..22d5097d12 100644 --- a/gdk/gdkdeviceprivate.h +++ b/gdk/gdkdeviceprivate.h @@ -152,6 +152,8 @@ gboolean _gdk_device_translate_screen_coord (GdkDevice *device, GdkWindow *window, gdouble window_root_x, gdouble window_root_y, + gdouble screen_width, + gdouble screen_height, guint index, gdouble value, gdouble *axis_value); diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c index fb7f0f2d7d..18279a8862 100644 --- a/gdk/win32/gdkdevice-wintab.c +++ b/gdk/win32/gdkdevice-wintab.c @@ -219,12 +219,13 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, gdouble *y) { GdkDevice *device; - GdkWindow *impl_window; + GdkWindow *impl_window, *root_window; gint root_x, root_y; gdouble temp_x, temp_y; gint i; device = GDK_DEVICE (device_wintab); + root_window = gdk_screen_get_root_window (gdk_window_get_screen (window)); impl_window = _gdk_window_get_impl_window (window); temp_x = temp_y = 0; @@ -246,7 +247,10 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab, &axes[i]); else _gdk_device_translate_screen_coord (device, window, - root_x, root_y, i, + root_x, root_y, + gdk_window_get_width (root_window), + gdk_window_get_height (root_window), + i, device_wintab->last_axis_data[i], &axes[i]); if (use == GDK_AXIS_X) diff --git a/gdk/x11/gdkdevice-xi2.c b/gdk/x11/gdkdevice-xi2.c index cd1849c51e..23816ecbe1 100644 --- a/gdk/x11/gdkdevice-xi2.c +++ b/gdk/x11/gdkdevice-xi2.c @@ -243,12 +243,16 @@ gdk_x11_device_xi2_get_state (GdkDevice *device, _gdk_device_translate_window_coord (device, window, j, value, &axes[j]); else { + GdkWindow *root_window; gint root_x, root_y; + root_window = gdk_screen_get_root_window (gdk_window_get_screen (window)); /* FIXME: Maybe root coords chaching should happen here */ gdk_window_get_origin (window, &root_x, &root_y); _gdk_device_translate_screen_coord (device, window, root_x, root_y, + gdk_window_get_width (root_window), + gdk_window_get_height (root_window), j, value, &axes[j]); }