diff options
author | Orestis Floros <orestisflo@gmail.com> | 2024-01-31 08:14:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-31 08:14:32 +0100 |
commit | f8befe378ab3c9f8d035657ca0247c9b8c242b6b (patch) | |
tree | 01529a5c9ca721d5c253f20edd5e601239fd9e3a /testcases | |
parent | 230147c81547848c83ac7764a6c1691f26f10e05 (diff) | |
download | i3-f8befe378ab3c9f8d035657ca0247c9b8c242b6b.tar.gz i3-f8befe378ab3c9f8d035657ca0247c9b8c242b6b.zip |
Avoid creating redundant containers when switching between tabbed/stacked and split layouts (#5469)
Fixes #3001
Diffstat (limited to 'testcases')
-rw-r--r-- | testcases/t/550-split-redundant-containers.t | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/testcases/t/550-split-redundant-containers.t b/testcases/t/550-split-redundant-containers.t new file mode 100644 index 00000000..3dfef399 --- /dev/null +++ b/testcases/t/550-split-redundant-containers.t @@ -0,0 +1,82 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Please read the following documents before working on tests: +# • https://build.i3wm.org/docs/testsuite.html +# (or docs/testsuite) +# +# • https://build.i3wm.org/docs/lib-i3test.html +# (alternatively: perldoc ./testcases/lib/i3test.pm) +# +# • https://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) +# +# Test that splitting and stacked/tabbed layouts do not create redundant +# containers. +# Ticket: #3001 +# Bug still in: 4.22-24-ga5da4d54 +use i3test; + +cmp_tree( + msg => 'toggling between split h/v', + layout_before => 'H[a*]', + layout_after => 'V[a*]', + cb => sub { + cmd 'split v, split h, split v'; + }); +cmp_tree( + msg => 'toggling between tabbed/stacked', + layout_before => 'H[a*]', + layout_after => 'S[a*]', + cb => sub { + cmd 'layout tabbed, layout stacked'; + }); +cmp_tree( + msg => 'split h to v and then tabbed', + layout_before => 'H[a*]', + layout_after => 'T[a*]', + cb => sub { + cmd 'split v, layout tabbed'; + }); +cmp_tree( + msg => 'repeat tabbed layout', + layout_before => 'H[a*]', + layout_after => 'T[a*]', + cb => sub { + cmd 'layout tabbed' for 1..5; + }); +cmp_tree( + msg => 'split v inside tabbed', + layout_before => 'H[a*]', + layout_after => 'T[V[a*]]', + cb => sub { + cmd 'layout tabbed, split v'; + }); +cmp_tree( + msg => 'split v inside tabbed and back to just tabbed', + layout_before => 'H[a*]', + layout_after => 'T[a*]', + cb => sub { + cmd 'layout tabbed, split v, layout tabbed'; + }); +cmp_tree( + msg => 'toggle split v inside tabbed', + layout_before => 'H[a*]', + layout_after => 'T[V[a*]]', + cb => sub { + cmd 'layout tabbed, split v, layout tabbed, split v'; + }); +cmp_tree( + msg => 'tabbed with 2 nodes inside other tabbed', + layout_before => 'T[a*]', + layout_after => 'T[T[a b*]]', + cb => sub { + cmd 'split v'; + open_window(wm_class => "b", name => "b"); + cmd 'layout tabbed'; + }); + +done_testing; |