bugfix: fix workspace back_and_forth after displaying a scratchpad window

fixes #868
This commit is contained in:
Michael Stapelberg 2012-11-10 09:01:04 +01:00
parent eb8c21a5b8
commit 81393c93c2
2 changed files with 27 additions and 5 deletions

View File

@ -340,11 +340,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);

View File

@ -106,6 +106,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;