* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
- * © 2009-2013 Michael Stapelberg and contributors (see also: LICENSE)
+ * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
*
* restore_layout.c: Everything for restored containers that is not pure state
* parsing (which can be found in load_layout.c).
if (restore_conn == NULL || xcb_connection_has_error(restore_conn))
errx(EXIT_FAILURE, "Cannot open display\n");
- xcb_watcher = scalloc(sizeof(struct ev_io));
- xcb_check = scalloc(sizeof(struct ev_check));
- xcb_prepare = scalloc(sizeof(struct ev_prepare));
+ xcb_watcher = scalloc(1, sizeof(struct ev_io));
+ xcb_check = scalloc(1, sizeof(struct ev_check));
+ xcb_prepare = scalloc(1, sizeof(struct ev_prepare));
ev_io_init(xcb_watcher, restore_xcb_got_event, xcb_get_file_descriptor(restore_conn), EV_READ);
ev_io_start(main_loop, xcb_watcher);
static void open_placeholder_window(Con *con) {
if (con_is_leaf(con) &&
- (con->window == NULL || con->window->id == XCB_NONE)) {
+ (con->window == NULL || con->window->id == XCB_NONE) &&
+ !TAILQ_EMPTY(&(con->swallow_head)) &&
+ con->type == CT_CON) {
xcb_window_t placeholder = create_window(
restore_conn,
con->rect,
config.client.placeholder.background,
XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_STRUCTURE_NOTIFY,
});
+ /* Make i3 not focus this window. */
+ xcb_icccm_wm_hints_t hints;
+ xcb_icccm_wm_hints_set_none(&hints);
+ xcb_icccm_wm_hints_set_input(&hints, 0);
+ xcb_icccm_set_wm_hints(restore_conn, placeholder, &hints);
/* Set the same name as was stored in the layout file. While perhaps
* slightly confusing in the first instant, this brings additional
* clarity to which placeholder is waiting for which actual window. */
DLOG("Created placeholder window 0x%08x for leaf container %p / %s\n",
placeholder, con, con->name);
- placeholder_state *state = scalloc(sizeof(placeholder_state));
+ placeholder_state *state = scalloc(1, sizeof(placeholder_state));
state->window = placeholder;
state->con = con;
state->rect = con->rect;
Match *temp_id = smalloc(sizeof(Match));
match_init(temp_id);
temp_id->id = placeholder;
- TAILQ_INSERT_TAIL(&(con->swallow_head), temp_id, matches);
+ TAILQ_INSERT_HEAD(&(con->swallow_head), temp_id, matches);
}
Con *child;