From: Sebastian Ullrich Date: Wed, 7 Aug 2013 15:20:22 +0000 (+0200) Subject: Respect workspace numbers when looking for a free workspace name X-Git-Tag: 4.7~70 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=431e98dc352437f1118ea5be9d5c55d2354db9f5;p=i3%2Fi3 Respect workspace numbers when looking for a free workspace name This prevents a ws '1' appearing on a new output when there's already a ws '1: www' on an existing output --- diff --git a/src/workspace.c b/src/workspace.c index af9325f7..3f70ced7 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -197,17 +197,16 @@ Con *create_workspace_on_output(Output *output, Con *content) { while (exists) { c++; - FREE(ws->name); - sasprintf(&(ws->name), "%d", c); + ws->num = c; current = NULL; TAILQ_FOREACH(out, &(croot->nodes_head), nodes) - GREP_FIRST(current, output_get_content(out), !strcasecmp(child->name, ws->name)); + GREP_FIRST(current, output_get_content(out), child->num == ws->num); exists = (current != NULL); - DLOG("result for ws %s / %d: exists = %d\n", ws->name, c, exists); + DLOG("result for ws %d: exists = %d\n", c, exists); } - ws->num = c; + sasprintf(&(ws->name), "%d", c); } con_attach(ws, content, false); diff --git a/testcases/t/515-create-workspace.t b/testcases/t/515-create-workspace.t new file mode 100644 index 00000000..be790bf0 --- /dev/null +++ b/testcases/t/515-create-workspace.t @@ -0,0 +1,40 @@ +#!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) +# +# Tests that new workspace names are taken from the config, +# then from the first free number starting with 1. +# +use i3test i3_autostart => 0; + +my $config = <get_workspaces->recv; + +is($ws->[0]->{name}, '1: eggs', 'new workspace uses config name'); +is($ws->[1]->{name}, '2', 'naming continues with next free number'); + +exit_gracefully($pid); + +done_testing;