]> git.sur5r.net Git - i3/i3/blobdiff - src/manage.c
Bugfix: fix crash when using multiple for_window statements that move windows (Thanks...
[i3/i3] / src / manage.c
index c8253f4671b156d2198d627839dddef9d14e00d1..3afde994325d385c9ddc720a87ba24b604dde076 100644 (file)
@@ -480,8 +480,12 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
          * workspace isn’t enough either — it needs the rect. */
         ws->rect = ws->parent->rect;
         render_con(ws, true);
+        /* Disable setting focus, otherwise we’d move focus to an invisible
+         * workspace, which we generally prevent (e.g. in
+         * con_move_to_workspace). */
+        set_focus = false;
     }
-    tree_render();
+    render_con(croot, false);
 
     /* Send an event about window creation */
     ipc_send_window_event("new", nc);
@@ -489,10 +493,12 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
     /* Defer setting focus after the 'new' event has been sent to ensure the
      * proper window event sequence. */
     if (set_focus) {
+        DLOG("Now setting focus.\n");
         con_focus(nc);
-        tree_render();
     }
 
+    tree_render();
+
     /* Windows might get managed with the urgency hint already set (Pidgin is
      * known to do that), so check for that and handle the hint accordingly.
      * This code needs to be in this part of manage_window() because the window