return result;
}
+
/*
- * switch to next or previous existing workspace
+ * Switch to next or previous existing workspace
+ *
*/
static void next_previous_workspace(xcb_connection_t *conn, int direction) {
- Workspace *t_ws;
- int i;
- if (direction == 'n') {
- if (c_ws->num == 9)
- return;
- for ( i = c_ws->num + 1; i <= 9; i++) {
- t_ws = &(workspaces[i]);
- if (t_ws->screen != NULL) break;
- }
- } else if (direction == 'p' ) {
- if (c_ws->num == 0)
- return;
- for (i = c_ws->num - 1; i >= 0 ; i--) {
- t_ws = &(workspaces[i]);
- if (t_ws->screen != NULL) break;
- }
- }
- if (t_ws->screen != NULL)
- show_workspace(conn,i+1);
-}
+ Workspace *t_ws;
+ int i;
+ if (direction == 'n') {
+ /* If we are on the last workspace, we cannot go any further */
+ if (c_ws->num == 9)
+ return;
+
+ for (i = c_ws->num + 1; i <= 9; i++) {
+ t_ws = &(workspaces[i]);
+ if (t_ws->screen != NULL)
+ break;
+ }
+ } else if (direction == 'p') {
+ if (c_ws->num == 0)
+ return;
+ for (i = c_ws->num - 1; i >= 0 ; i--) {
+ t_ws = &(workspaces[i]);
+ if (t_ws->screen != NULL)
+ break;
+ }
+ }
+
+ if (t_ws->screen != NULL)
+ show_workspace(conn, i+1);
+}
/*
* Parses a command, see file CMDMODE for more information
return;
}
- /* Is it 'n' for next workspace (nw) */
- if (command[0] == 'n' && command[1] == 'w') {
+
+ /* Is it 'n' or 'p' for next/previous workspace? (nw) */
+ if (command[0] == 'n' && command[1] == 'w') {
next_previous_workspace(conn, command[0]);
- }
+ return;
+ }
if (command[0] == 'p' && command[1] == 'w') {
next_previous_workspace(conn, command[0]);
- }
+ return;
+ }
+
/* It’s a normal <cmd> */
char *rest = NULL;
enum { ACTION_FOCUS, ACTION_MOVE, ACTION_SNAP } action = ACTION_FOCUS;