summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-08-08 19:45:09 -0400
committerMatthias Clasen <mclasen@redhat.com>2017-08-11 15:45:24 -0400
commit9859f8f69f004dd16c2fc54614c121c5852226b6 (patch)
treeb273418a33395cf03fdc56b8b4beb8bcf21bda66
parentc409fca703cd5e8c90b2843aa2613b34405284b9 (diff)
downloadgtk+-9859f8f69f004dd16c2fc54614c121c5852226b6.tar.gz
Allow passing a NULL window to gdk_device_query_state
Interpret NULL as "root window" here - we only have one screen nowadays, so there is no choice involved, and this will let us avoid dealing with the root window in the fontend code.
-rw-r--r--gdk/broadway/gdkdevice-broadway.c19
-rw-r--r--gdk/mir/gdkmirkeyboard.c1
-rw-r--r--gdk/mir/gdkmirpointer.c3
-rw-r--r--gdk/quartz/gdkdevice-core-quartz.c4
-rw-r--r--gdk/wayland/gdkdevice-wayland.c3
-rw-r--r--gdk/win32/gdkdevice-win32.c10
-rw-r--r--gdk/win32/gdkdevice-wintab.c8
-rw-r--r--gdk/x11/gdkdevice-core-x11.c7
-rw-r--r--gdk/x11/gdkdevice-xi2.c7
9 files changed, 32 insertions, 30 deletions
diff --git a/gdk/broadway/gdkdevice-broadway.c b/gdk/broadway/gdkdevice-broadway.c
index b3abec01f7..4a6bf680b1 100644
--- a/gdk/broadway/gdkdevice-broadway.c
+++ b/gdk/broadway/gdkdevice-broadway.c
@@ -149,14 +149,10 @@ gdk_broadway_device_query_state (GdkDevice *device,
gdouble *win_y,
GdkModifierType *mask)
{
- GdkWindow *toplevel;
- GdkWindowImplBroadway *impl;
GdkDisplay *display;
GdkBroadwayDisplay *broadway_display;
- GdkScreen *screen;
gint32 device_root_x, device_root_y;
guint32 mouse_toplevel_id;
- GdkWindow *mouse_toplevel;
guint32 mask32;
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
@@ -165,15 +161,11 @@ gdk_broadway_device_query_state (GdkDevice *device,
display = gdk_device_get_display (device);
broadway_display = GDK_BROADWAY_DISPLAY (display);
- impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
- toplevel = impl->wrapper;
-
_gdk_broadway_server_query_mouse (broadway_display->server,
&mouse_toplevel_id,
&device_root_x,
&device_root_y,
&mask32);
- mouse_toplevel = g_hash_table_lookup (broadway_display->id_ht, GUINT_TO_POINTER (mouse_toplevel_id));
if (root_x)
*root_x = device_root_x;
@@ -187,6 +179,17 @@ gdk_broadway_device_query_state (GdkDevice *device,
*mask = mask32;
if (child_window)
{
+ GdkWindowImplBroadway *impl;
+ GdkWindow *toplevel;
+ GdkWindow *mouse_toplevel;
+
+ if (window == NULL)
+ window = gdk_get_default_root_window ();
+
+ impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
+ toplevel = impl->wrapper;
+
+ mouse_toplevel = g_hash_table_lookup (broadway_display->id_ht, GUINT_TO_POINTER (mouse_toplevel_id));
if (gdk_window_get_window_type (toplevel) == GDK_WINDOW_ROOT)
{
*child_window = mouse_toplevel;
diff --git a/gdk/mir/gdkmirkeyboard.c b/gdk/mir/gdkmirkeyboard.c
index 289473a89a..01a14118db 100644
--- a/gdk/mir/gdkmirkeyboard.c
+++ b/gdk/mir/gdkmirkeyboard.c
@@ -94,7 +94,6 @@ gdk_mir_keyboard_warp (GdkDevice *device,
static void
gdk_mir_keyboard_query_state (GdkDevice *device,
GdkWindow *window,
- GdkWindow **root_window,
GdkWindow **child_window,
gdouble *root_x,
gdouble *root_y,
diff --git a/gdk/mir/gdkmirpointer.c b/gdk/mir/gdkmirpointer.c
index b5504245a8..08afee8bd6 100644
--- a/gdk/mir/gdkmirpointer.c
+++ b/gdk/mir/gdkmirpointer.c
@@ -133,7 +133,6 @@ gdk_mir_pointer_warp (GdkDevice *device,
static void
gdk_mir_pointer_query_state (GdkDevice *device,
GdkWindow *window,
- GdkWindow **root_window,
GdkWindow **child_window,
gdouble *root_x,
gdouble *root_y,
@@ -143,8 +142,6 @@ gdk_mir_pointer_query_state (GdkDevice *device,
{
GdkMirPointer *p = GDK_MIR_POINTER (device);
- if (root_window)
- *root_window = gdk_screen_get_root_window (gdk_display_get_default_screen (gdk_device_get_display (device)));
if (child_window)
*child_window = p->over_window;
if (root_x)
diff --git a/gdk/quartz/gdkdevice-core-quartz.c b/gdk/quartz/gdkdevice-core-quartz.c
index da85990579..76f11523b6 100644
--- a/gdk/quartz/gdkdevice-core-quartz.c
+++ b/gdk/quartz/gdkdevice-core-quartz.c
@@ -258,7 +258,6 @@ gdk_quartz_device_core_query_state_helper (GdkWindow *window,
static void
gdk_quartz_device_core_query_state (GdkDevice *device,
GdkWindow *window,
- GdkWindow **root_window,
GdkWindow **child_window,
gdouble *root_x,
gdouble *root_y,
@@ -270,6 +269,9 @@ gdk_quartz_device_core_query_state (GdkDevice *device,
NSPoint point;
gint x_tmp, y_tmp;
+ if (window == NULL)
+ window = _gdk_root;
+
found_window = gdk_quartz_device_core_query_state_helper (window, device,
win_x, win_y,
mask);
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 664eebeb98..1bc142a20e 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -592,6 +592,9 @@ gdk_wayland_device_query_state (GdkDevice *device,
{
GdkWaylandPointerData *pointer;
+ if (window == NULL)
+ window = gdk_get_default_root_window ();
+
pointer = GDK_WAYLAND_DEVICE (device)->pointer;
if (child_window)
diff --git a/gdk/win32/gdkdevice-win32.c b/gdk/win32/gdkdevice-win32.c
index 190372de2d..fa74db6a75 100644
--- a/gdk/win32/gdkdevice-win32.c
+++ b/gdk/win32/gdkdevice-win32.c
@@ -100,7 +100,6 @@ get_current_mask (void)
static void
gdk_device_win32_query_state (GdkDevice *device,
GdkWindow *window,
- GdkWindow **root_window,
GdkWindow **child_window,
gdouble *root_x,
gdouble *root_y,
@@ -108,12 +107,12 @@ gdk_device_win32_query_state (GdkDevice *device,
gdouble *win_y,
GdkModifierType *mask)
{
- GdkScreen *screen;
POINT point;
HWND hwnd, hwndc;
GdkWindowImplWin32 *impl;
- screen = gdk_window_get_screen (window);
+ if (window == NULL)
+ window = gdk_get_default_root_window ();
impl = GDK_WINDOW_IMPL_WIN32 (window->impl);
hwnd = GDK_WINDOW_HWND (window);
@@ -133,7 +132,7 @@ gdk_device_win32_query_state (GdkDevice *device,
if (win_y)
*win_y = point.y / impl->window_scale;
- if (window == gdk_screen_get_root_window (screen))
+ if (window == gdk_get_default_root_window ())
{
if (win_x)
*win_x += _gdk_offset_x;
@@ -158,9 +157,6 @@ gdk_device_win32_query_state (GdkDevice *device,
*child_window = NULL; /* Direct child unknown to gdk */
}
- if (root_window)
- *root_window = gdk_screen_get_root_window (screen);
-
if (mask)
*mask = get_current_mask ();
}
diff --git a/gdk/win32/gdkdevice-wintab.c b/gdk/win32/gdkdevice-wintab.c
index 06037d87c5..6e11036c95 100644
--- a/gdk/win32/gdkdevice-wintab.c
+++ b/gdk/win32/gdkdevice-wintab.c
@@ -109,7 +109,6 @@ gdk_device_wintab_warp (GdkDevice *device,
static void
gdk_device_wintab_query_state (GdkDevice *device,
GdkWindow *window,
- GdkWindow **root_window,
GdkWindow **child_window,
gdouble *root_x,
gdouble *root_y,
@@ -118,13 +117,13 @@ gdk_device_wintab_query_state (GdkDevice *device,
GdkModifierType *mask)
{
GdkDeviceWintab *device_wintab;
- GdkScreen *screen;
POINT point;
HWND hwnd, hwndc;
GdkWindowImplWin32 *impl;
device_wintab = GDK_DEVICE_WINTAB (device);
- screen = gdk_window_get_screen (window);
+ if (window == NULL)
+ window = gdk_get_default_root_window ();
impl = GDK_WINDOW_IMPL_WIN32 (window->impl);
hwnd = GDK_WINDOW_HWND (window);
@@ -163,9 +162,6 @@ gdk_device_wintab_query_state (GdkDevice *device,
*child_window = NULL; /* Direct child unknown to gdk */
}
- if (root_window)
- *root_window = gdk_screen_get_root_window (screen);
-
if (mask)
{
*mask = get_current_mask ();
diff --git a/gdk/x11/gdkdevice-core-x11.c b/gdk/x11/gdkdevice-core-x11.c
index 574a45b47e..e0d34ed329 100644
--- a/gdk/x11/gdkdevice-core-x11.c
+++ b/gdk/x11/gdkdevice-core-x11.c
@@ -256,15 +256,18 @@ gdk_x11_device_core_query_state (GdkDevice *device,
gdouble *win_y,
GdkModifierType *mask)
{
- GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (window->impl);
+ GdkWindowImplX11 *impl;
GdkDisplay *display;
GdkScreen *default_screen;
Window xroot_window, xchild_window;
int xroot_x, xroot_y, xwin_x, xwin_y;
unsigned int xmask;
- display = gdk_window_get_display (window);
+ display = gdk_device_get_display (device);
default_screen = gdk_display_get_default_screen (display);
+ if (window == NULL)
+ window = gdk_screen_get_root_window (default_screen);
+ impl = GDK_WINDOW_IMPL_X11 (window->impl);
if (!GDK_X11_DISPLAY (display)->trusted_client ||
!XQueryPointer (GDK_WINDOW_XDISPLAY (window),
diff --git a/gdk/x11/gdkdevice-xi2.c b/gdk/x11/gdkdevice-xi2.c
index 6b22abbf0d..23857a5ca9 100644
--- a/gdk/x11/gdkdevice-xi2.c
+++ b/gdk/x11/gdkdevice-xi2.c
@@ -327,7 +327,7 @@ gdk_x11_device_xi2_query_state (GdkDevice *device,
gdouble *win_y,
GdkModifierType *mask)
{
- GdkWindowImplX11 *impl = GDK_WINDOW_IMPL_X11 (window->impl);
+ GdkWindowImplX11 *impl;
GdkX11DeviceXI2 *device_xi2 = GDK_X11_DEVICE_XI2 (device);
GdkDisplay *display;
GdkScreen *default_screen;
@@ -337,8 +337,11 @@ gdk_x11_device_xi2_query_state (GdkDevice *device,
XIModifierState mod_state;
XIGroupState group_state;
- display = gdk_window_get_display (window);
+ display = gdk_device_get_display (device);
default_screen = gdk_display_get_default_screen (display);
+ if (window == NULL)
+ window = gdk_screen_get_root_window (default_screen);
+ impl = GDK_WINDOW_IMPL_X11 (window->impl);
if (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_SLAVE)
{