]> git.sur5r.net Git - i3/i3/blobdiff - src/cmdparse.y
wrap 'focus output': when on the right-most output and focusing right, it will focus...
[i3/i3] / src / cmdparse.y
index f3d318037adb7091b53f592113b35a0c1b5e3067..d4bb5730b951cc7f4b5f11a50211328273210ba9 100644 (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);