diff --git a/src/randr.c b/src/randr.c index bb6b4e90..e65fdbd6 100644 --- a/src/randr.c +++ b/src/randr.c @@ -754,7 +754,8 @@ void randr_query_outputs() { DLOG("next = %p\n", next); } - /* 2: iterate through workspaces and re-assign them */ + /* 2: iterate through workspaces and re-assign them, fixing the coordinates + * of floating containers as we go */ Con *current; Con *old_content = output_get_content(output->con); while (!TAILQ_EMPTY(&(old_content->nodes_head))) { @@ -763,6 +764,10 @@ void randr_query_outputs() { con_detach(current); DLOG("Re-attaching current = %p / %s\n", current, current->name); con_attach(current, first_content, false); + DLOG("Fixing the coordinates of floating containers\n"); + Con *floating_con; + TAILQ_FOREACH(floating_con, &(current->floating_head), floating_windows) + floating_fix_coordinates(floating_con, &(old_content->rect), &(first_content->rect)); DLOG("Done, next\n"); } DLOG("re-attached all workspaces\n");