]> git.sur5r.net Git - i3/i3/commitdiff
Implement 'border toggle' (+test)
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 10 Jun 2011 14:15:52 +0000 (16:15 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 10 Jun 2011 14:15:52 +0000 (16:15 +0200)
docs/userguide
src/cmdparse.y
testcases/t/69-border-toggle.t [new file with mode: 0644]

index 0046028acffb7596ca870757d229b655a4d02e70..0cdb2566ff4bee7444bfc870f3284f0a4c5f1887 100644 (file)
@@ -794,10 +794,7 @@ To change the border of the current client, you can use +border normal+ to use t
 border (including window title), +border 1pixel+ to use a 1-pixel border (no window title)
 and +border none+ to make the client borderless.
 
-////////////////////////////////////////////////////////////////////////////
-TODO: not yet implemented
 There is also +border toggle+ which will toggle the different border styles.
-////////////////////////////////////////////////////////////////////////////
 
 *Examples*:
 ----------------------------
index 3268311235a53b522c599dd3c46d99d6e0222d78..1c65fbc544bfdb2ed6991a03807770b166d2f1ff 100644 (file)
@@ -597,7 +597,10 @@ border:
 
         TAILQ_FOREACH(current, &owindows, owindows) {
             printf("matching: %p / %s\n", current->con, current->con->name);
-            current->con->border_style = $2;
+            if ($2 == TOK_TOGGLE) {
+                current->con->border_style++;
+                current->con->border_style %= 3;
+            } else current->con->border_style = $2;
         }
 
         tree_render();
@@ -608,6 +611,7 @@ border_style:
     TOK_NORMAL      { $$ = BS_NORMAL; }
     | TOK_NONE      { $$ = BS_NONE; }
     | TOK_1PIXEL    { $$ = BS_1PIXEL; }
+    | TOK_TOGGLE    { $$ = TOK_TOGGLE; }
     ;
 
 move:
diff --git a/testcases/t/69-border-toggle.t b/testcases/t/69-border-toggle.t
new file mode 100644 (file)
index 0000000..aec8df6
--- /dev/null
@@ -0,0 +1,40 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Tests if the 'border toggle' command works correctly
+#
+use i3test;
+
+my $tmp = fresh_workspace;
+
+cmd 'open';
+
+my @nodes = @{get_ws_content($tmp)};
+is(@nodes, 1, 'one container on this workspace');
+is($nodes[0]->{border}, 'normal', 'border style normal');
+
+cmd 'border 1pixel';
+@nodes = @{get_ws_content($tmp)};
+is($nodes[0]->{border}, '1pixel', 'border style 1pixel');
+
+cmd 'border none';
+@nodes = @{get_ws_content($tmp)};
+is($nodes[0]->{border}, 'none', 'border style none');
+
+cmd 'border normal';
+@nodes = @{get_ws_content($tmp)};
+is($nodes[0]->{border}, 'normal', 'border style back to normal');
+
+cmd 'border toggle';
+@nodes = @{get_ws_content($tmp)};
+is($nodes[0]->{border}, 'none', 'border style none');
+
+cmd 'border toggle';
+@nodes = @{get_ws_content($tmp)};
+is($nodes[0]->{border}, '1pixel', 'border style 1pixel');
+
+cmd 'border toggle';
+@nodes = @{get_ws_content($tmp)};
+is($nodes[0]->{border}, 'normal', 'border style back to normal');
+
+done_testing;