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:
parent
b8505bb611
commit
d1652ca7cd
|
@ -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);
|
||||
|
||||
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.
|
||||
/* 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) {
|
||||
|
@ -2037,10 +2039,7 @@ void cmd_rename_workspace(I3_CMD, const char *old_name, const char *new_name) {
|
|||
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;
|
||||
con_focus(previously_focused);
|
||||
}
|
||||
|
||||
cmd_output->needs_tree_render = true;
|
||||
|
|
Loading…
Reference in New Issue