]> git.sur5r.net Git - i3/i3/commitdiff
Merge branch 'master' into next
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 10 Nov 2012 08:01:24 +0000 (09:01 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 10 Nov 2012 08:01:24 +0000 (09:01 +0100)
src/workspace.c
testcases/t/176-workspace-baf.t

index 872ec768d99ad64038d35df85031db72bf463145..ed00c9a7c89f12ef54e00be8f3b4240ccaee6cdb 100644 (file)
@@ -358,11 +358,16 @@ static void _workspace_show(Con *workspace) {
     /* Remember currently focused workspace for switching back to it later with
      * the 'workspace back_and_forth' command.
      * NOTE: We have to duplicate the name as the original will be freed when
-     * the corresponding workspace is cleaned up. */
-
-    FREE(previous_workspace_name);
-    if (current)
-        previous_workspace_name = sstrdup(current->name);
+     * the corresponding workspace is cleaned up.
+     * NOTE: Internal cons such as __i3_scratch (when a scratchpad window is
+     * focused) are skipped, see bug #868. */
+    if (current && !con_is_internal(current)) {
+        FREE(previous_workspace_name);
+        if (current) {
+            previous_workspace_name = sstrdup(current->name);
+            DLOG("Setting previous_workspace_name = %s\n", previous_workspace_name);
+        }
+    }
 
     workspace_reassign_sticky(workspace);
 
index 8ed33030818343e595db4cfcf9df558ad79b60b8..bad76ec8987938476bde92f25071a4e78a3e9dce 100644 (file)
@@ -146,6 +146,23 @@ is(focused_ws, '6: baz', 'workspace 6 now focused');
 cmd 'workspace number 6';
 is(focused_ws, '5: foo', 'workspace 5 focused again');
 
+################################################################################
+# Place a window in the scratchpad, see if BAF works after showing the
+# scratchpad window.
+################################################################################
+
+my $scratchwin = open_window;
+cmd 'move scratchpad';
+
+# show scratchpad window
+cmd 'scratchpad show';
+
+# hide scratchpad window
+cmd 'scratchpad show';
+
+cmd 'workspace back_and_forth';
+is(focused_ws, '6: baz', 'workspace 6 now focused');
+
 exit_gracefully($pid);
 
 done_testing;