wrap 'focus output': when on the right-most output and focusing right, it will focus the left-most output

This commit is contained in:
Michael Stapelberg 2012-01-08 11:58:45 +00:00
parent e3051629d1
commit 5c3077bc78
1 changed files with 13 additions and 6 deletions

View File

@ -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);