Merge branch 'fix-floating-move'
This commit is contained in:
commit
01ce4bbc92
13
src/con.c
13
src/con.c
@ -666,13 +666,20 @@ void con_move_to_workspace(Con *con, Con *workspace, bool fix_coordinates, bool
|
||||
con->percent = 0.0;
|
||||
con_fix_percent(next);
|
||||
|
||||
/* 7: focus the con on the target workspace (the X focus is only updated by
|
||||
* calling tree_render(), so for the "real" focus this is a no-op).
|
||||
/* 7: focus the con on the target workspace, but only within that
|
||||
* workspace, that is, don’t move focus away if the target workspace is
|
||||
* invisible.
|
||||
* We don’t focus the con for i3 pseudo workspaces like __i3_scratch and
|
||||
* we don’t focus when there is a fullscreen con on that workspace. */
|
||||
if ((workspace->name[0] != '_' || workspace->name[1] != '_') &&
|
||||
con_get_fullscreen_con(workspace, CF_OUTPUT) == NULL)
|
||||
con_get_fullscreen_con(workspace, CF_OUTPUT) == NULL) {
|
||||
/* We need to save focus on workspace level and restore it afterwards.
|
||||
* Otherwise, we might focus a different workspace without actually
|
||||
* switching workspaces. */
|
||||
Con *old_focus = TAILQ_FIRST(&(output_get_content(dest_output)->focus_head));
|
||||
con_focus(con_descend_focused(con));
|
||||
con_focus(old_focus);
|
||||
}
|
||||
|
||||
/* 8: when moving to a visible workspace on a different output, we keep the
|
||||
* con focused. Otherwise, we leave the focus on the current workspace as we
|
||||
|
2
src/x.c
2
src/x.c
@ -792,7 +792,7 @@ static void x_push_node_unmaps(Con *con) {
|
||||
}
|
||||
|
||||
cookie = xcb_unmap_window(conn, con->frame);
|
||||
DLOG("unmapping container (serial %d)\n", cookie.sequence);
|
||||
DLOG("unmapping container %p / %s (serial %d)\n", con, con->name, cookie.sequence);
|
||||
/* we need to increase ignore_unmap for this container (if it
|
||||
* contains a window) and for every window "under" this one which
|
||||
* contains a window */
|
||||
|
Loading…
Reference in New Issue
Block a user