X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Frestore_layout.c;h=f56372a690ac5427e140a05e2747fccc813234d1;hb=1d4b5863a5159d7c78709dd87dc6097447e4f1dd;hp=0f6e54f9cc18e68d01d832680ab201e4b503838d;hpb=c263bb3d2ae73fbec19640934286bd369a5fff23;p=i3%2Fi3 diff --git a/src/restore_layout.c b/src/restore_layout.c index 0f6e54f9..f56372a6 100644 --- a/src/restore_layout.c +++ b/src/restore_layout.c @@ -4,7 +4,7 @@ * 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). @@ -180,7 +180,9 @@ static void update_placeholder_contents(placeholder_state *state) { 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, @@ -194,6 +196,11 @@ static void open_placeholder_window(Con *con) { 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. */