]> git.sur5r.net Git - i3/i3/blobdiff - src/con.c
Merge branch 'master' into next
[i3/i3] / src / con.c
index 282c389f694c78e1a735fa193e2bcb9172ecca37..6c7b2d963d5d738fddca130ad247641a2f8e66bf 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -1245,9 +1245,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");