ratpoison-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RP] [PATCH 6/7] Simplify scanwins function


From: Mathieu OTHACEHE
Subject: [RP] [PATCH 6/7] Simplify scanwins function
Date: Wed, 7 Dec 2016 10:03:57 +0100

Use find_screen_by_attr function, remove screen argument and a useless
debug message.
---
 src/main.c   |  3 ++-
 src/manage.c | 25 +++++++++++--------------
 src/manage.h |  2 +-
 3 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/src/main.c b/src/main.c
index ca5ebc8..cce4f94 100644
--- a/src/main.c
+++ b/src/main.c
@@ -743,9 +743,10 @@ main (int argc, char *argv[])
     {
       if (!rp_current_screen)
         rp_current_screen = cur;
-      scanwins (cur);
     }
 
+  scanwins ();
+
   if (read_startup_files (alt_rcfile) == -1)
     return EXIT_FAILURE;
 
diff --git a/src/manage.c b/src/manage.c
index 8b62a30..2c12f09 100644
--- a/src/manage.c
+++ b/src/manage.c
@@ -447,37 +447,34 @@ unmanage (rp_window *w)
 
 /* When starting up scan existing windows and start managing them. */
 void
-scanwins(rp_screen *s)
+scanwins ()
 {
   rp_window *win;
   XWindowAttributes attr;
   unsigned int i, nwins;
   Window dw1, dw2, *wins;
 
-  XQueryTree(dpy, s->root, &dw1, &dw2, &wins, &nwins);
+  XQueryTree(dpy, rp_glob_screen.root, &dw1, &dw2, &wins, &nwins);
   PRINT_DEBUG (("windows: %d\n", nwins));
 
   for (i = 0; i < nwins; i++)
     {
+      rp_screen *screen;
+
       XGetWindowAttributes(dpy, wins[i], &attr);
       if (is_rp_window_for_screen(wins[i])
           || attr.override_redirect == True
           || unmanaged_window (wins[i])) continue;
 
-      {
-        XWindowAttributes root_attr;
-
-        XGetWindowAttributes (dpy, s->root, &root_attr);
-      PRINT_DEBUG (("attrs: %d %d %d %d %d %d\n", root_attr.x, root_attr.y,
-                    s->left, s->top, s->left + s->width, s->top + s->height));}
 
-      if (rp_have_xrandr
-          && ((attr.x > s->left + s->width)
-               || (attr.x < s->left)
-               || (attr.y > s->top + s->height)
-               || (attr.y < s->top))) continue;
+      screen = find_screen_by_attr (attr);
+      if (!screen)
+        {
+          PRINT_ERROR (("Unable to find a screen by window attributes\n"));
+          continue;
+        }
 
-      win = add_to_window_list (s, wins[i]);
+      win = add_to_window_list (screen, wins[i]);
 
       PRINT_DEBUG (("map_state: %s\n",
                     attr.map_state == IsViewable ? "IsViewable":
diff --git a/src/manage.h b/src/manage.h
index 6d5f1f5..22bb169 100644
--- a/src/manage.h
+++ b/src/manage.h
@@ -29,7 +29,7 @@ char *list_unmanaged_windows (void);
 void add_unmanaged_window (char *name);
 int unmanaged_window (Window w);
 rp_screen* current_screen (void);
-void scanwins(rp_screen *s);
+void scanwins ();
 void unmanage (rp_window *w);
 int update_window_name (rp_window *win);
 void update_normal_hints (rp_window *win);
-- 
2.10.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]