diff --git a/src/commands.c b/src/commands.c index c7b57ab3..fb7b08bf 100644 --- a/src/commands.c +++ b/src/commands.c @@ -2021,28 +2021,27 @@ void cmd_rename_workspace(I3_CMD, const char *old_name, const char *new_name) { } 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); - } - - 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); - } - break; } + 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); + } + + 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; ysuccess(true);