Bugfix: don’t set focus in con_set_layout() on invisible workspaces

fixes #1338
This commit is contained in:
Michael Stapelberg
2014-08-08 20:15:59 +02:00
parent 1842ddac51
commit fc88631534
2 changed files with 48 additions and 0 deletions

View File

@ -1263,9 +1263,15 @@ void con_set_layout(Con *con, layout_t layout) {
new->layout = layout;
new->last_split_layout = con->last_split_layout;
/* Save the container that was focused before we move containers
* around, but only if the container is visible (otherwise focus
* will be restored properly automatically when switching). */
Con *old_focused = TAILQ_FIRST(&(con->focus_head));
if (old_focused == TAILQ_END(&(con->focus_head)))
old_focused = NULL;
if (old_focused != NULL &&
!workspace_is_visible(con_get_workspace(old_focused)))
old_focused = NULL;
/* 3: move the existing cons of this workspace below the new con */
DLOG("Moving cons\n");