]> git.sur5r.net Git - i3/i3/commitdiff
Call scratchpad_show() when focusing scratchpad windows via criteria
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 25 Jan 2013 15:10:37 +0000 (16:10 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 25 Jan 2013 15:11:20 +0000 (16:11 +0100)
fixes #931

src/commands.c

index 323c5ae49f061cd4857c595c9a875c0b36bb491d..f39f311a811aa6bf35f4a8e6638fc11fb46b0203 100644 (file)
@@ -1410,6 +1410,7 @@ void cmd_focus(I3_CMD) {
         return;
     }
 
+    Con *__i3_scratch = workspace_get("__i3_scratch", NULL);
     int count = 0;
     owindow *current;
     TAILQ_FOREACH(current, &owindows, owindows) {
@@ -1426,6 +1427,16 @@ void cmd_focus(I3_CMD) {
             return;
         }
 
+        /* In case this is a scratchpad window, call scratchpad_show(). */
+        if (ws == __i3_scratch) {
+            scratchpad_show(current->con);
+            count++;
+            /* While for the normal focus case we can change focus multiple
+             * times and only a single window ends up focused, we could show
+             * multiple scratchpad windows. So, rather break here. */
+            break;
+        }
+
         /* If the container is not on the current workspace,
          * workspace_show() will switch to a different workspace and (if
          * enabled) trigger a mouse pointer warp to the currently focused