Bugfix: fix fullscreen with floating windows

Fixes: #564
next
Michael Stapelberg 2011-11-21 23:04:49 +00:00
parent 402daf30b7
commit 61b8a62132
1 changed files with 21 additions and 0 deletions

View File

@ -236,6 +236,27 @@ void render_con(Con *con, bool render_fullscreen) {
Con *content = output_get_content(output);
Con *workspace = TAILQ_FIRST(&(content->focus_head));
/* Check for (floating!) fullscreen nodes */
/* XXX: This code duplication is unfortunate. Keep in mind to fix
* this when we clean up the whole render.c */
Con *fullscreen = NULL;
fullscreen = con_get_fullscreen_con(workspace, CF_OUTPUT);
if (fullscreen) {
/* Either the fullscreen window is inside the floating
* container, then we need to render and raise it now */
if (con_inside_floating(fullscreen)) {
fullscreen->rect = output->rect;
x_raise_con(fullscreen);
render_con(fullscreen, true);
continue;
} else {
/* …or its a tiling window, in which case the floating
* windows should not overlap it, so we skip rendering this
* output. */
continue;
}
}
Con *child;
TAILQ_FOREACH(child, &(workspace->floating_head), floating_windows) {
DLOG("floating child at (%d,%d) with %d x %d\n", child->rect.x, child->rect.y, child->rect.width, child->rect.height);