[PATCH 2/6] Fix fdump and sselect
Mathieu OTHACEHE <[email protected]> Tue, 29 Nov 2016 20:00:50 +0100
| Newsgroups | gmane.comp.window-managers.ratpoison.devel |
|---|---|
| Message-ID | <[email protected]> |
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