From: Michael Stapelberg Date: Sun, 8 Jan 2012 11:58:45 +0000 (+0000) Subject: wrap 'focus output': when on the right-most output and focusing right, it will focus... X-Git-Tag: 4.2~151^2~3 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=5c3077bc7825f6a7d96e9b1f3a1c4d89b65c4131;p=i3%2Fi3 wrap 'focus output': when on the right-most output and focusing right, it will focus the left-most output --- 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);