cmd_rename_workspace: always call con_focus

This was introduced in 252db3b8c (#3245). That commit moved the
con_activate line inside the loop, meaning it wouldn't always be called.

When the mouse moved after a rename with focus_follows_mouse enabled,
check_crossing_screen_boundary (src/handlers.c:111) called
con_descend_focused that used the wrong focus order.

I also change con_activate to con_focus since we don't really want to
raise floating containers there.

Fixes #3325
This commit is contained in:
Orestis Floros 2018-07-12 00:12:27 +03:00
parent b8505bb611
commit d1652ca7cd
No known key found for this signature in database
GPG Key ID: E9AD9F32E401E38F
1 changed files with 18 additions and 19 deletions

View File

@ -2021,11 +2021,13 @@ void cmd_rename_workspace(I3_CMD, const char *old_name, const char *new_name) {
} }
workspace_move_to_output(workspace, target_output); workspace_move_to_output(workspace, target_output);
break;
}
bool can_restore_focus = previously_focused != NULL; bool can_restore_focus = previously_focused != NULL;
/* NB: If previously_focused is a workspace we can't /* NB: If previously_focused is a workspace we can't work directly with it
* work directly with it since it might have been cleaned up by * since it might have been cleaned up by workspace_show() already,
* workspace_show() already, depending on the * depending on the focus order/number of other workspaces on the output.
* focus order/number of other workspaces on the output.
* Instead, we loop through the available workspaces and only focus * Instead, we loop through the available workspaces and only focus
* previously_focused if we still find it. */ * previously_focused if we still find it. */
if (previously_focused_content) { if (previously_focused_content) {
@ -2037,10 +2039,7 @@ void cmd_rename_workspace(I3_CMD, const char *old_name, const char *new_name) {
if (can_restore_focus) { if (can_restore_focus) {
/* Restore the previous focus since con_attach messes with the focus. */ /* Restore the previous focus since con_attach messes with the focus. */
workspace_show(con_get_workspace(previously_focused)); workspace_show(con_get_workspace(previously_focused));
con_activate(previously_focused); con_focus(previously_focused);
}
break;
} }
cmd_output->needs_tree_render = true; cmd_output->needs_tree_render = true;