]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: don’t invalidate layout upon invalid 'layout toggle' params (#2965)
authorMichael Stapelberg <stapelberg@users.noreply.github.com>
Mon, 18 Sep 2017 14:36:57 +0000 (16:36 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 19 Sep 2017 13:46:58 +0000 (15:46 +0200)
fixes #2903

src/con.c
testcases/t/292-regress-layout-toggle.t [new file with mode: 0644]

index 04aacd32578ed554869acbf2b85aed52976b2f99..df115230732d8c7f4d9afbd41efffaf0494124f1 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -1841,7 +1841,9 @@ void con_toggle_layout(Con *con, const char *toggle_mode) {
             }
         }
 
-        con_set_layout(con, new_layout);
+        if (new_layout != L_DEFAULT) {
+            con_set_layout(con, new_layout);
+        }
     } else if (strcasecmp(toggle_mode, "all") == 0 || strcasecmp(toggle_mode, "default") == 0) {
         if (parent->layout == L_STACKED)
             con_set_layout(con, L_TABBED);
diff --git a/testcases/t/292-regress-layout-toggle.t b/testcases/t/292-regress-layout-toggle.t
new file mode 100644 (file)
index 0000000..a8fd3a6
--- /dev/null
@@ -0,0 +1,29 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Please read the following documents before working on tests:
+# • http://build.i3wm.org/docs/testsuite.html
+#   (or docs/testsuite)
+#
+# • http://build.i3wm.org/docs/lib-i3test.html
+#   (alternatively: perldoc ./testcases/lib/i3test.pm)
+#
+# • http://build.i3wm.org/docs/ipc.html
+#   (or docs/ipc)
+#
+# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
+#   (unless you are already familiar with Perl)
+#
+# Regression test: verify layout toggle with invalid parameters does not set
+# layout to L_DEFAULT, which crashes i3 upon the next IPC message.
+# Ticket: #2903
+# Bug still in: 4.14-87-g607e97e6
+use i3test;
+
+cmd 'layout toggle 1337 1337';
+
+fresh_workspace;
+
+does_i3_live;
+
+done_testing;