* 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)
*
* render.c: Renders (determines position/sizes) the layout tree, updating the
* various rects. Needs to be pushed to X11 (see x.c) to be visible.
/* depending on the border style, the rect of the child window
* needs to be smaller */
Rect *inset = &(con->window_rect);
- *inset = (Rect) {0, 0, con->rect.width, con->rect.height};
+ *inset = (Rect){0, 0, con->rect.width, con->rect.height};
if (!render_fullscreen)
*inset = rect_add(*inset, con_border_style_rect(con));
fullscreen->rect = rect;
x_raise_con(fullscreen);
render_con(fullscreen, true);
- return;
+ /* Fullscreen containers are either global (underneath the CT_ROOT
+ * container) or per-output (underneath the CT_CONTENT container). For
+ * global fullscreen containers, we cannot abort rendering here yet,
+ * because the floating windows (with popup_during_fullscreen smart)
+ * have not yet been rendered (see the CT_ROOT code path below). See
+ * also http://bugs.i3wm.org/1393 */
+ if (con->type != CT_ROOT) {
+ return;
+ }
}
/* find the height for the decorations */
render_l_output(con);
} else if (con->type == CT_ROOT) {
Con *output;
- TAILQ_FOREACH(output, &(con->nodes_head), nodes) {
- render_con(output, false);
+ if (!fullscreen) {
+ TAILQ_FOREACH(output, &(con->nodes_head), nodes) {
+ render_con(output, false);
+ }
}
/* We need to render floating windows after rendering all outputs’
while (transient_con != NULL &&
transient_con->window != NULL &&
transient_con->window->transient_for != XCB_NONE) {
+ DLOG("transient_con = 0x%08x, transient_con->window->transient_for = 0x%08x, fullscreen_id = 0x%08x\n",
+ transient_con->window->id, transient_con->window->transient_for, fullscreen->window->id);
if (transient_con->window->transient_for == fullscreen->window->id) {
is_transient_for = true;
break;