]> git.sur5r.net Git - i3/i3/commitdiff
Allow workspace renames which change case
authorMichael Stapelberg <michael@stapelberg.de>
Mon, 15 Feb 2016 07:34:03 +0000 (08:34 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 15 Feb 2016 07:34:03 +0000 (08:34 +0100)
fixes #2211

src/commands.c
testcases/t/117-workspace.t

index af72f5bbc3c8443f1c3bf300d2560d159bf1f57d..0faf2775158889f49947f91d627fcd2118ebe899 100644 (file)
@@ -1909,7 +1909,9 @@ void cmd_rename_workspace(I3_CMD, const char *old_name, const char *new_name) {
     GREP_FIRST(check_dest, output_get_content(output),
                !strcasecmp(child->name, new_name));
 
-    if (check_dest != NULL) {
+    /* If check_dest == workspace, the user might be changing the case of the
+     * workspace, or it might just be a no-op. */
+    if (check_dest != NULL && check_dest != workspace) {
         yerror("New workspace \"%s\" already exists", new_name);
         return;
     }
index 04d9b9dd3a58a51ec7acddacfd27aa777d2ad644..01d51cc0e3c2c648a0072baaafe35509c3daf5e3 100644 (file)
@@ -288,5 +288,10 @@ ok(!$result->[0]->{success}, 'renaming workspace to an already existing one fail
 $result = cmd 'rename workspace notexistant to bleh';
 ok(!$result->[0]->{success}, 'renaming workspace which does not exist failed');
 
+# 8: change case
+ok(!workspace_exists('11: BAR'), 'workspace 11: BAR does not exist yet');
+$result = cmd 'rename workspace "11: bar" to "11: BAR"';
+ok($result->[0]->{success}, 'renaming workspace from 11: bar to 11: BAR worked');
+ok(workspace_exists('11: BAR'), 'workspace 11: BAR now exists');
 
 done_testing;