ratpoison-devel
[Top][All Lists]
Advanced

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

[RP] [PATCH 2/6] Fix fdump and sselect


From: Mathieu OTHACEHE
Subject: [RP] [PATCH 2/6] Fix fdump and sselect
Date: Tue, 29 Nov 2016 20:00:50 +0100

Use screen numset in fdump and sselect.
---
 src/actions.c | 20 +++++++-------------
 src/screen.c  | 10 +++++-----
 src/screen.h  |  2 +-
 3 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/src/actions.c b/src/actions.c
index 606116c..8d89a2d 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -4673,16 +4673,12 @@ cmd_sselect(int interactive UNUSED, struct cmdarg 
**args)
   if (new_screen < 0)
     return cmdret_new (RET_FAILURE, "sselect: out of range");
 
-  if (new_screen < screen_count ())
-    {
-      screen = screen_at (new_screen);
-      new_frame = screen_get_frame (screen, screen->current_frame);
-      set_active_frame (new_frame, 1);
-    }
-  else
-    {
-      return cmdret_new (RET_FAILURE, "sselect: out of range");
-    }
+  screen = screen_number (new_screen);
+  if (!screen)
+    return cmdret_new (RET_FAILURE, "sselect: screen not found");
+
+  new_frame = screen_get_frame (screen, screen->current_frame);
+  set_active_frame (new_frame, 1);
 
   return cmdret_new (RET_SUCCESS, NULL);
 }
@@ -5022,10 +5018,8 @@ cmd_fdump (int interactively UNUSED, struct cmdarg 
**args)
 
       if (snum < 0)
         return cmdret_new (RET_FAILURE, "fdump: invalid negative screen 
number");
-      else if (snum >= screen_count ())
-        return cmdret_new (RET_FAILURE, "fdump: unknown screen");
       else
-        screen = screen_at (snum);
+        screen = screen_number (snum);
     }
 
   dump = fdump (screen);
diff --git a/src/screen.c b/src/screen.c
index e629419..3c49409 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -181,17 +181,17 @@ is_a_root_window (unsigned int w)
 }
 
 rp_screen *
-screen_at (int index)
+screen_number (int number)
 {
-  int i = 0;
   rp_screen *cur;
 
+  if (number < 0)
+    return NULL;
+
   list_for_each_entry (cur, &rp_screens, node)
     {
-      if (index == i)
+      if (cur->number == number)
         return cur;
-
-      i++;
     }
 
   return NULL;
diff --git a/src/screen.h b/src/screen.h
index 7d85951..0d5f68d 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -51,7 +51,7 @@ int screen_count (void);
 rp_screen *screen_next(void);
 rp_screen *screen_prev(void);
 
-rp_screen *screen_at (int index);
+rp_screen *screen_number (int number);
 
 void screen_sort(void);
 
-- 
2.10.2




reply via email to

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