render_root: fix popup_during_fullscreen logic

The first issue is that there seems to be a typo: fullscreen->window
should have been child->window. The corrected check is redundant since
the while loop checks if the transient_con has a window.

The second issue is that popup_during_fullscreen is never checked even
though the behaviour should be exclusive to the "smart" option.
This commit is contained in:
Orestis Floros 2018-08-22 03:40:51 +03:00
parent 2f3c8b6484
commit b3e69ed12a
No known key found for this signature in database
GPG Key ID: E9AD9F32E401E38F
1 changed files with 10 additions and 13 deletions

View File

@ -235,22 +235,19 @@ static void render_root(Con *con, Con *fullscreen) {
Con *fullscreen = con_get_fullscreen_con(workspace, CF_OUTPUT); Con *fullscreen = con_get_fullscreen_con(workspace, CF_OUTPUT);
Con *child; Con *child;
TAILQ_FOREACH(child, &(workspace->floating_head), floating_windows) { TAILQ_FOREACH(child, &(workspace->floating_head), floating_windows) {
/* Dont render floating windows when there is a fullscreen window if (fullscreen != NULL) {
* on that workspace. Necessary to make floating fullscreen work /* Dont render floating windows when there is a fullscreen
* correctly (ticket #564). */ * window on that workspace. Necessary to make floating
/* If there is no fullscreen->window, this cannot be a * fullscreen work correctly (ticket #564). Exception to the
* transient window, so we _know_ we need to skip it. This * above rule: smart popup_during_fullscreen handling (popups
* happens during restarts where the container already exists, * belonging to the fullscreen app will be rendered). */
* but the window was not yet associated. */ if (config.popup_during_fullscreen != PDF_SMART) {
if (fullscreen != NULL && fullscreen->window == NULL) continue;
continue; }
if (fullscreen != NULL && fullscreen->window != NULL) {
Con *floating_child = con_descend_focused(child); Con *floating_child = con_descend_focused(child);
Con *transient_con = floating_child; Con *transient_con = floating_child;
bool is_transient_for = false; bool is_transient_for = false;
/* Exception to the above rule: smart
* popup_during_fullscreen handling (popups belonging to
* the fullscreen app will be rendered). */
while (transient_con != NULL && while (transient_con != NULL &&
transient_con->window != NULL && transient_con->window != NULL &&
transient_con->window->transient_for != XCB_NONE) { transient_con->window->transient_for != XCB_NONE) {