From: Deiz Date: Sun, 26 Apr 2015 18:23:08 +0000 (-0400) Subject: Initialize workspace rect to the output's upon creation X-Git-Tag: 4.10.3~6 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d03b96b3698610110faa662deef395d769b2c034;p=i3%2Fi3 Initialize workspace rect to the output's upon creation The comment immediately following implied that this was the intended behaviour. Not doing so means that compound commands that both move a window to a new workspace as well as do something that depends on the workspace's geometry (e.g. 'move position center' or 'floating enable' on a tiled window) would use the workspace's calloc'd 0x0+0x0 geometry. --- diff --git a/src/workspace.c b/src/workspace.c index f55c920e..8bd4b5ea 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -29,6 +29,7 @@ static void _workspace_apply_default_orientation(Con *ws) { if (config.default_orientation == NO_ORIENTATION) { Con *output = con_get_output(ws); ws->layout = (output->rect.height > output->rect.width) ? L_SPLITV : L_SPLITH; + ws->rect = output->rect; DLOG("Auto orientation. Workspace size set to (%d,%d), setting layout to %d.\n", output->rect.width, output->rect.height, ws->layout); } else { diff --git a/testcases/t/244-new-workspace-floating-enable-center.t b/testcases/t/244-new-workspace-floating-enable-center.t new file mode 100644 index 00000000..dbc9a80a --- /dev/null +++ b/testcases/t/244-new-workspace-floating-enable-center.t @@ -0,0 +1,53 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Please read the following documents before working on tests: +# • http://build.i3wm.org/docs/testsuite.html +# (or docs/testsuite) +# +# • http://build.i3wm.org/docs/lib-i3test.html +# (alternatively: perldoc ./testcases/lib/i3test.pm) +# +# • http://build.i3wm.org/docs/ipc.html +# (or docs/ipc) +# +# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf +# (unless you are already familiar with Perl) +# +# Ensures that 'move workspace $new, floating enable' on a marked window +# leaves the window centered on the new workspace. +# Bug still in: 4.10.2-137-ga4f0ed6 +use i3test i3_autostart => 0; + +my $config = <rect; + +is(int($pos->{x} + $pos->{width} / 2), int($x->root->rect->width / 2), + 'x coordinates match'); +is(int($pos->{y} + $pos->{height} / 2), int($x->root->rect->height / 2), + 'y coordinates match'); + +exit_gracefully($pid); + +done_testing;