Fix regression with moving floating windows
This fixes a regression introduced in 6d983b5. Consider 2 outputs: fake-0: workspace '1' fake-1: workspaces '2','3' Workspace 1 focused, workspace 2 visible. Open a floating window in 1 and move it to 3. Now, the floating window appears in workspace 2 and disappears once focus is switched to that workspace. Instead of focusing 'old_focus' which might refer to a container in a different output, we should restore focus by focusing the previously focused workspace of the output.
This commit is contained in:
parent
04d1fcbe2d
commit
64c493ef1f
10
src/con.c
10
src/con.c
@ -1234,14 +1234,12 @@ static bool _con_move_to_con(Con *con, Con *target, bool behind_focused, bool fi
|
||||
Con *old_focus = focused;
|
||||
con_activate(con_descend_focused(con));
|
||||
|
||||
/* Restore focus if the output's focused workspace has changed. */
|
||||
if (con_get_workspace(focused) != old_focus_ws) {
|
||||
con_focus(old_focus);
|
||||
}
|
||||
|
||||
/* Restore focus to the currently focused container. */
|
||||
if (old_focus_ws == current_ws && old_focus->type != CT_WORKSPACE) {
|
||||
/* Restore focus to the currently focused container. */
|
||||
con_activate(old_focus);
|
||||
} else if (con_get_workspace(focused) != old_focus_ws) {
|
||||
/* Restore focus if the output's focused workspace has changed. */
|
||||
con_focus(con_descend_focused(old_focus_ws));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user