x11: Add API to query root window and screen from GdkDisplay
authorBenjamin Otte <otte@redhat.com>
Wed, 1 Nov 2017 21:56:46 +0000 (22:56 +0100)
committerBenjamin Otte <otte@redhat.com>
Thu, 2 Nov 2017 11:42:16 +0000 (12:42 +0100)
docs/reference/gdk/gdk4-sections.txt
gdk/x11/gdkdisplay-x11.c
gdk/x11/gdkx11display.h
gtk/gtkmountoperation-x11.c

index 29ee2f9342dbc490a4120642cc4a63029041a745..324dcfcfe1bdad1ce5231122b4368b556dc13f6f 100644 (file)
@@ -898,6 +898,8 @@ gdk_x11_display_broadcast_startup_message
 gdk_x11_display_get_startup_notification_id
 gdk_x11_display_set_startup_notification_id
 gdk_x11_display_get_xdisplay
+gdk_x11_display_get_xscreen
+gdk_x11_display_get_xrootwindow
 gdk_x11_display_grab
 gdk_x11_display_ungrab
 gdk_x11_display_error_trap_push
index 752d2abfd0c196fcec7f8baf20e4eb9b1b0f51ea..6a9ba1223892fafaf2065b3065d87bc97041909d 100644 (file)
@@ -2179,9 +2179,46 @@ Display *
 gdk_x11_display_get_xdisplay (GdkDisplay *display)
 {
   g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
+
   return GDK_X11_DISPLAY (display)->xdisplay;
 }
 
+/**
+ * gdk_x11_display_get_xscreen:
+ * @display: (type GdkX11Display): a #GdkDisplay
+ *
+ * Returns the X Screen used by #GdkDisplay.
+ *
+ * Returns: (transfer none): an X Screen
+ *
+ * Since: 3.94
+ */
+Screen *
+gdk_x11_display_get_xscreen (GdkDisplay *display)
+{
+  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
+
+  return GDK_X11_SCREEN (GDK_X11_DISPLAY (display)->screen)->xscreen;
+}
+
+/**
+ * gdk_x11_display_get_xrootwindow:
+ * @display: (type GdkX11Display): a #GdkDisplay
+ *
+ * Returns the root X window used by #GdkDisplay.
+ *
+ * Returns: (transfer none): an X Window
+ *
+ * Since: 3.94
+ */
+Window
+gdk_x11_display_get_xrootwindow (GdkDisplay *display)
+{
+  g_return_val_if_fail (GDK_IS_DISPLAY (display), None);
+
+  return GDK_SCREEN_XROOTWIN (GDK_X11_DISPLAY (display)->screen);
+}
+
 static void
 gdk_x11_display_make_default (GdkDisplay *display)
 {
index 93d9aa61fb4d378136dcaa28fa2615ba3c24bb21..a72b9db47b15f7358fed2cee736e4575c441a7a1 100644 (file)
@@ -57,7 +57,11 @@ GDK_AVAILABLE_IN_3_94
 GdkDisplay *  gdk_x11_display_open        (const char  *display_name);
 
 GDK_AVAILABLE_IN_ALL
-Display *gdk_x11_display_get_xdisplay     (GdkDisplay  *display);
+Display *     gdk_x11_display_get_xdisplay     (GdkDisplay  *display);
+GDK_AVAILABLE_IN_3_94
+Screen *      gdk_x11_display_get_xscreen      (GdkDisplay  *display);
+GDK_AVAILABLE_IN_3_94
+Window        gdk_x11_display_get_xrootwindow  (GdkDisplay  *display);
 
 #define GDK_DISPLAY_XDISPLAY(display) (gdk_x11_display_get_xdisplay (display))
 
index adb47b16599d0c98c080e89b4d49a70aef5aae1d..03a1653904cb99c8f8b9cbdc920e59f98ded84ea 100644 (file)
@@ -532,8 +532,8 @@ _gtk_mount_operation_lookup_context_get (GdkDisplay *display)
 
   mapping = NULL;
   mapping_length = 0;
-  get_window_list (GDK_DISPLAY_XDISPLAY (context->display),
-                   GDK_ROOT_WINDOW(),
+  get_window_list (gdk_x11_display_get_xdisplay (context->display),
+                   gdk_x11_display_get_xrootwindow (context->display),
                    gdk_x11_get_xatom_by_name_for_display (context->display,
                                                           "_NET_CLIENT_LIST"),
                    &mapping,