Handle xrandr output identifiers as input for sselect.
Disable sselect if there is no xrandr support.
---
src/actions.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/src/actions.c b/src/actions.c
index 606116c..77d5cee 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -4662,6 +4662,13 @@ cmd_prevscreen (int interactive UNUSED, struct cmdarg
**args UNUSED)
return cmdret_new (RET_SUCCESS, NULL);
}
+#ifndef HAVE_XRANDR
+cmdret *
+cmd_sselect(int interactive UNUSED, struct cmdarg **args UNUSED)
+{
+ return cmdret_new (RET_FAILURE, "sselect: no xrandr support");
+}
+#else
cmdret *
cmd_sselect(int interactive UNUSED, struct cmdarg **args)
{
@@ -4669,23 +4676,21 @@ cmd_sselect(int interactive UNUSED, struct cmdarg
**args)
rp_frame *new_frame;
rp_screen *screen;
+ if (!rp_have_xrandr) {
+ return cmdret_new (RET_FAILURE, "sselect: no xrandr support");
+ }
+
new_screen = ARG(0,number);
- if (new_screen < 0)
- return cmdret_new (RET_FAILURE, "sselect: out of range");
+ screen = xrandr_screen_output(new_screen);
+ if (!screen)
+ return cmdret_new (RET_FAILURE, "sselect: screen not found");
- 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");
- }
+ new_frame = screen_get_frame (screen, screen->current_frame);
+ set_active_frame (new_frame, 1);
return cmdret_new (RET_SUCCESS, NULL);
}
+#endif
cmdret *
cmd_warp (int interactive UNUSED, struct cmdarg **args)
--
2.10.0
_______________________________________________
Ratpoison-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/ratpoison-devel