From 4da6fc7ba36d8d2fb8e466e672e7c4fb953ffa9f Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 11 May 2011 20:45:56 +0200 Subject: [PATCH] Bugfix: Restore border_style when restarting inplace (Thanks aniou) Fixes #385. --- src/load_layout.c | 11 +++++++ testcases/t/61-regress-borders-restart.t | 39 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 testcases/t/61-regress-borders-restart.t diff --git a/src/load_layout.c b/src/load_layout.c index f946c666..c5b6bcf1 100644 --- a/src/load_layout.c +++ b/src/load_layout.c @@ -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; diff --git a/testcases/t/61-regress-borders-restart.t b/testcases/t/61-regress-borders-restart.t new file mode 100644 index 00000000..25a73b5d --- /dev/null +++ b/testcases/t/61-regress-borders-restart.t @@ -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;