From: Michael Stapelberg Date: Sat, 4 Aug 2012 13:20:56 +0000 (+0200) Subject: Bugfix: fix floating coordinates when moving assigned workspaces X-Git-Tag: 4.3~142^2^2~2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=e867fd810516431f06af0799c90c0f833bf61219;p=i3%2Fi3 Bugfix: fix floating coordinates when moving assigned workspaces --- diff --git a/src/randr.c b/src/randr.c index 73adbf0e..00668c18 100644 --- a/src/randr.c +++ b/src/randr.c @@ -359,6 +359,19 @@ void init_ws_for_output(Output *output, Con *content) { workspace_show(previous); } + /* Render the output on which the workspace was to get correct Rects. + * Then, we need to work with the "content" container, since we cannot + * be sure that the workspace itself was rendered at all (in case it’s + * invisible, it won’t be rendered). */ + render_con(workspace_out, false); + Con *ws_out_content = output_get_content(workspace_out); + + Con *floating_con; + TAILQ_FOREACH(floating_con, &(workspace->floating_head), floating_windows) + /* NB: We use output->con here because content is not yet rendered, + * so it has a rect of {0, 0, 0, 0}. */ + floating_fix_coordinates(floating_con, &(ws_out_content->rect), &(output->con->rect)); + con_detach(workspace); con_attach(workspace, content, false);