Implement 'border toggle' (+test)

This commit is contained in:
Michael Stapelberg 2011-06-10 16:15:52 +02:00
parent 60ae26c19d
commit bef25d72aa
3 changed files with 45 additions and 4 deletions

View 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) border (including window title), +border 1pixel+ to use a 1-pixel border (no window title)
and +border none+ to make the client borderless. and +border none+ to make the client borderless.
////////////////////////////////////////////////////////////////////////////
TODO: not yet implemented
There is also +border toggle+ which will toggle the different border styles. There is also +border toggle+ which will toggle the different border styles.
////////////////////////////////////////////////////////////////////////////
*Examples*: *Examples*:
---------------------------- ----------------------------

View File

@ -597,7 +597,10 @@ border:
TAILQ_FOREACH(current, &owindows, owindows) { TAILQ_FOREACH(current, &owindows, owindows) {
printf("matching: %p / %s\n", current->con, current->con->name); 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(); tree_render();
@ -608,6 +611,7 @@ border_style:
TOK_NORMAL { $$ = BS_NORMAL; } TOK_NORMAL { $$ = BS_NORMAL; }
| TOK_NONE { $$ = BS_NONE; } | TOK_NONE { $$ = BS_NONE; }
| TOK_1PIXEL { $$ = BS_1PIXEL; } | TOK_1PIXEL { $$ = BS_1PIXEL; }
| TOK_TOGGLE { $$ = TOK_TOGGLE; }
; ;
move: move:

View File

@ -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;