]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Don’t break focus stack when inplace restarting with fullscreen windows ...
authorMichael Stapelberg <michael@stapelberg.de>
Thu, 2 Jun 2011 23:48:55 +0000 (01:48 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Thu, 2 Jun 2011 23:48:55 +0000 (01:48 +0200)
src/manage.c

index 3c6f48a69a86726796b860a625418d083ed306df..85beb4cb8e2c21b7718b26235840254c2a526aff 100644 (file)
@@ -264,8 +264,13 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
          * focused (fullscreen) con. This way, the new container will be
          * focused after we return from fullscreen mode */
         Con *first = TAILQ_FIRST(&(nc->parent->focus_head));
-        TAILQ_REMOVE(&(nc->parent->focus_head), nc, focused);
-        TAILQ_INSERT_AFTER(&(nc->parent->focus_head), first, nc, focused);
+        if (first != nc) {
+            /* We only modify the focus stack if the container is not already
+             * the first one. This can happen when existing containers swallow
+             * new windows, for example when restarting. */
+            TAILQ_REMOVE(&(nc->parent->focus_head), nc, focused);
+            TAILQ_INSERT_AFTER(&(nc->parent->focus_head), first, nc, focused);
+        }
     }
 
     /* set floating if necessary */