From 5c3077bc7825f6a7d96e9b1f3a1c4d89b65c4131 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 8 Jan 2012 11:58:45 +0000 Subject: [PATCH] wrap 'focus output': when on the right-most output and focusing right, it will focus the left-most output --- src/cmdparse.y | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/cmdparse.y b/src/cmdparse.y index f3d31803..d4bb5730 100644 --- a/src/cmdparse.y +++ b/src/cmdparse.y @@ -542,16 +542,23 @@ focus: current_output = get_output_containing(current->con->rect.x, current->con->rect.y); assert(current_output != NULL); - if (strcasecmp($3, "left") == 0) + if (strcasecmp($3, "left") == 0) { output = get_output_next(D_LEFT, current_output); - else if (strcasecmp($3, "right") == 0) + if (!output) + output = get_output_most(D_RIGHT, current_output); + } else if (strcasecmp($3, "right") == 0) { output = get_output_next(D_RIGHT, current_output); - else if (strcasecmp($3, "up") == 0) + if (!output) + output = get_output_most(D_LEFT, current_output); + } else if (strcasecmp($3, "up") == 0) { output = get_output_next(D_UP, current_output); - else if (strcasecmp($3, "down") == 0) + if (!output) + output = get_output_most(D_DOWN, current_output); + } else if (strcasecmp($3, "down") == 0) { output = get_output_next(D_DOWN, current_output); - else - output = get_output_by_name($3); + if (!output) + output = get_output_most(D_UP, current_output); + } else output = get_output_by_name($3); free($3);