diff options
author | Mathieu OTHACEHE <m.othacehe@gmail.com> | 2016-11-29 20:00:50 +0100 |
---|---|---|
committer | Jérémie Courrèges-Anglas <jca@wxcvbn.org> | 2016-12-01 21:41:36 +0100 |
commit | 2b1bf78cbd1e85f86439ed083a919ffc2080fba7 (patch) | |
tree | 8ae75f2856524e9a25b1ebc119442a9614e82401 /src | |
parent | 8e1316eba8d734b2f167a5a39fa93f7ecffa9c6a (diff) | |
download | ratpoison-2b1bf78cbd1e85f86439ed083a919ffc2080fba7.zip |
Fix fdump and sselect
Use screen numset in fdump and sselect.
Diffstat (limited to 'src')
-rw-r--r-- | src/actions.c | 20 | ||||
-rw-r--r-- | src/screen.c | 10 | ||||
-rw-r--r-- | 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); |