Bugfix: Restore border_style when restarting inplace (Thanks aniou)

Fixes #385.
next
Michael Stapelberg 2011-05-11 20:45:56 +02:00
parent 9c05c18156
commit 4da6fc7ba3
2 changed files with 50 additions and 0 deletions

View File

@ -120,6 +120,17 @@ static int json_string(void *ctx, const unsigned char *val, unsigned int len) {
json_node->orientation = VERT;
else LOG("Unhandled orientation: %s\n", buf);
free(buf);
} else if (strcasecmp(last_key, "border") == 0) {
char *buf = NULL;
asprintf(&buf, "%.*s", (int)len, val);
if (strcasecmp(buf, "none") == 0)
json_node->border_style = BS_NONE;
else if (strcasecmp(buf, "1pixel") == 0)
json_node->border_style = BS_1PIXEL;
else if (strcasecmp(buf, "normal") == 0)
json_node->border_style = BS_NORMAL;
else LOG("Unhandled \"border\": %s\n", buf);
free(buf);
}
}
return 1;

View File

@ -0,0 +1,39 @@
#!perl
# vim:ts=4:sw=4:expandtab
#
# Regression test to check if borders are correctly restored after an inplace
# restart.
# found in eb8ad348b28e243cba1972e802ca8ee636472fc9
#
use X11::XCB qw(:all);
use List::Util qw(first);
use i3test;
my $x = X11::XCB::Connection->new;
my $i3 = i3("/tmp/nestedcons");
my $tmp = fresh_workspace;
my $window = open_standard_window($x);
sub get_border_style {
my @content = @{get_ws_content($tmp)};
my $wininfo = first { $_->{window} == $window->id } @content;
return $wininfo->{border};
}
is(get_border_style(), 'normal', 'border style normal');
cmd 'border 1pixel';
is(get_border_style(), '1pixel', 'border style 1pixel after changing');
# perform an inplace-restart
cmd 'restart';
sleep 0.25;
does_i3_live;
is(get_border_style(), '1pixel', 'border style still 1pixel after restart');
done_testing;