From 132017d242a5d0974144d0e8e4ba063bab256d6b Mon Sep 17 00:00:00 2001 From: "D.B" Date: Thu, 4 Aug 2016 21:16:54 +0200 Subject: [PATCH] Fix 'workspace back_and_forth' and workspace_auto_back_and_forth clash When workspace_auto_back_and_forth is enabled, workspaces get switched twice with previously mentioned command, which is not the expected behavior. Removes one redundant creation of previous workspace. --- sway/commands.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sway/commands.c b/sway/commands.c index f73bd21c9..172f9f34f 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -2563,10 +2563,13 @@ static struct cmd_results *cmd_workspace(int argc, char **argv) { } else if (strcasecmp(argv[0], "prev_on_output") == 0) { ws = workspace_output_prev(); } else if (strcasecmp(argv[0], "back_and_forth") == 0) { - if (prev_workspace_name) { - if (!(ws = workspace_by_name(prev_workspace_name))) { - ws = workspace_create(prev_workspace_name); - } + // if auto_back_and_forth is enabled, workspace_switch will swap + // the workspaces. If we created prev_workspace here, workspace_switch + // would put us back on original workspace. + if (config->auto_back_and_forth) { + ws = swayc_active_workspace(); + } else if (prev_workspace_name && !(ws = workspace_by_name(prev_workspace_name))) { + ws = workspace_create(prev_workspace_name); } } else { if (!(ws = workspace_by_name(argv[0]))) {