From: Ingo Bürk Date: Thu, 12 Jul 2018 14:18:13 +0000 (+0200) Subject: Merge pull request #3254 from orestisf1993/issue-555 X-Git-Tag: 4.16~68 X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=commitdiff_plain;h=a1351138d1025a8327cc71fdaf42273a1e3c9d4e Merge pull request #3254 from orestisf1993/issue-555 Multiple assignments of workspaces to outputs (#555) --- a1351138d1025a8327cc71fdaf42273a1e3c9d4e diff --cc src/commands.c index fb7b08bf,a133daa6..ad7d9770 --- a/src/commands.c +++ b/src/commands.c @@@ -2019,27 -2019,31 +2019,30 @@@ void cmd_rename_workspace(I3_CMD, cons LOG("Could not get output named \"%s\"\n", assignment->output); continue; } + if (!output_triggers_assignment(target_output, assignment)) { + continue; + } workspace_move_to_output(workspace, target_output); - bool can_restore_focus = previously_focused != NULL; - /* NB: If previously_focused is a workspace we can't - * work directly with it since it might have been cleaned up by - * workspace_show() already, depending on the - * focus order/number of other workspaces on the output. - * Instead, we loop through the available workspaces and only focus - * previously_focused if we still find it. */ - if (previously_focused_content) { - Con *workspace = NULL; - GREP_FIRST(workspace, previously_focused_content, child == previously_focused); - can_restore_focus &= (workspace != NULL); - } + break; + } - if (can_restore_focus) { - /* Restore the previous focus since con_attach messes with the focus. */ - workspace_show(con_get_workspace(previously_focused)); - con_activate(previously_focused); - } + bool can_restore_focus = previously_focused != NULL; + /* NB: If previously_focused is a workspace we can't work directly with it + * since it might have been cleaned up by workspace_show() already, + * depending on the focus order/number of other workspaces on the output. + * Instead, we loop through the available workspaces and only focus + * previously_focused if we still find it. */ + if (previously_focused_content) { + Con *workspace = NULL; + GREP_FIRST(workspace, previously_focused_content, child == previously_focused); + can_restore_focus &= (workspace != NULL); + } - break; + if (can_restore_focus) { + /* Restore the previous focus since con_attach messes with the focus. */ + workspace_show(con_get_workspace(previously_focused)); + con_focus(previously_focused); } cmd_output->needs_tree_render = true;