x11: Add a helper to get all toplevels
authorMatthias Clasen <mclasen@redhat.com>
Sun, 5 Nov 2017 23:33:56 +0000 (18:33 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 5 Nov 2017 23:33:56 +0000 (18:33 -0500)
This will let us avoid frontend API for this task.

gdk/x11/gdkdisplay-x11.c
gdk/x11/gdkprivate-x11.h

index e4b9bb837609fd86e648be724d1940e7b1d8db2e..eb18348d25a1b7e730f19c58a00b30e7d302d773 100644 (file)
@@ -3160,6 +3160,28 @@ gdk_x11_display_get_root_window (GdkDisplay *display)
   return gdk_x11_screen_get_root_window (GDK_X11_DISPLAY (display)->screen);
 }
 
+GList *
+gdk_x11_display_get_toplevel_windows (GdkDisplay *display)
+{
+  GdkWindow * root_window;
+  GList *new_list = NULL;
+  GList *tmp_list;
+
+  root_window = gdk_x11_display_get_root_window (display);
+
+  tmp_list = root_window->children;
+  while (tmp_list)
+    {
+      GdkWindow *w = tmp_list->data;
+
+      if (w->window_type != GDK_WINDOW_FOREIGN)
+        new_list = g_list_prepend (new_list, w);
+      tmp_list = tmp_list->next;
+    }
+
+  return new_list;
+}
+
 static void
 gdk_x11_display_class_init (GdkX11DisplayClass * class)
 {
index eb0e6314d990e1476db538549a6073210b720f90..ade987dfe6c3ea62e5cd04a07ce14e6304e2903e 100644 (file)
@@ -243,6 +243,7 @@ void       _gdk_x11_display_create_window_impl     (GdkDisplay    *display,
                                                     GdkWindow     *real_parent,
                                                     GdkEventMask   event_mask,
                                                     GdkWindowAttr *attributes);
+GList *    gdk_x11_display_get_toplevel_windows    (GdkDisplay *display);
 
 void _gdk_x11_precache_atoms (GdkDisplay          *display,
                               const gchar * const *atom_names,