summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathieu OTHACEHE <m.othacehe@gmail.com>2016-11-29 20:00:50 +0100
committerJérémie Courrèges-Anglas <jca@wxcvbn.org>2016-12-01 21:41:36 +0100
commit2b1bf78cbd1e85f86439ed083a919ffc2080fba7 (patch)
tree8ae75f2856524e9a25b1ebc119442a9614e82401 /src
parent8e1316eba8d734b2f167a5a39fa93f7ecffa9c6a (diff)
downloadratpoison-2b1bf78cbd1e85f86439ed083a919ffc2080fba7.zip
Fix fdump and sselect
Use screen numset in fdump and sselect.
Diffstat (limited to 'src')
-rw-r--r--src/actions.c20
-rw-r--r--src/screen.c10
-rw-r--r--src/screen.h2
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);