* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
- * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
+ * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
*
* tree.c: Everything that primarily modifies the layout tree data structure.
*
/* TODO: refactor the following */
croot = con_new(NULL, NULL);
- croot->rect = (Rect) {
+ croot->rect = (Rect){
geometry->x,
geometry->y,
geometry->width,
TAILQ_INSERT_HEAD(&(croot->nodes_head), __i3, nodes);
}
+ restore_open_placeholder_windows(croot);
+
return true;
}
croot->name = "root";
croot->type = CT_ROOT;
croot->layout = L_SPLITH;
- croot->rect = (Rect) {
+ croot->rect = (Rect){
geometry->x,
geometry->y,
geometry->width,
* unmap the window,
* then reparent it to the root window. */
xcb_change_window_attributes(conn, con->window->id,
- XCB_CW_EVENT_MASK, (uint32_t[]) {XCB_NONE});
+ XCB_CW_EVENT_MASK, (uint32_t[]){XCB_NONE});
xcb_unmap_window(conn, con->window->id);
cookie = xcb_reparent_window(conn, con->window->id, root, 0, 0);
cookie = xcb_change_property(conn, XCB_PROP_MODE_REPLACE,
con->window->id, A_WM_STATE, A_WM_STATE, 32, 2, data);
+ /* Remove the window from the save set. All windows in the save set
+ * will be mapped when i3 closes its connection (e.g. when
+ * restarting). This is not what we want, since some apps keep
+ * unmapped windows around and don’t expect them to suddenly be
+ * mapped. See http://bugs.i3wm.org/1617 */
+ xcb_change_save_set(conn, XCB_SET_MODE_DELETE, con->window->id);
+
/* Ignore X11 errors for the ReparentWindow request.
* X11 Errors are returned when the window was already destroyed */
add_ignore_event(cookie.sequence, 0);
Con *parent = con->parent;
/* Force re-rendering to make the indicator border visible. */
- FREE(con->deco_render_params);
- FREE(parent->deco_render_params);
+ con_force_split_parents_redraw(con);
/* if we are in a container whose parent contains only one
* child (its split functionality is unused so far), we just change the