X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=blobdiff_plain;f=testcases%2Ft%2F297-scroll-tabbed.t;fp=testcases%2Ft%2F297-scroll-tabbed.t;h=b535d0cd262a0839b6c219240133bfff8064d17f;hp=0000000000000000000000000000000000000000;hb=1847938d4eeba98260cc79ca45a11a134274c2ea;hpb=c54f5008395b10c046f380cc3069ff779e5d2877 diff --git a/testcases/t/297-scroll-tabbed.t b/testcases/t/297-scroll-tabbed.t new file mode 100644 index 00000000..b535d0cd --- /dev/null +++ b/testcases/t/297-scroll-tabbed.t @@ -0,0 +1,84 @@ +#!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) +# +# Tests if scrolling the tab bar on a tabbed container works and verifies that +# only one window is focused as a result. +# Ticket: #3215 (PR) +# Bug still in: 4.15-92-g666aa9e0 +use i3test; +use i3test::XTEST; + +sub scroll_down { + # button5 = scroll down + xtest_button_press(5, 3, 3); + xtest_button_release(5, 3, 3); + xtest_sync_with_i3; +} + +sub scroll_up { + # button4 = scroll up + xtest_button_press(4, 3, 3); + xtest_button_release(4, 3, 3); + xtest_sync_with_i3; +} + +# Decoration of top left window. +$x->root->warp_pointer(3, 3); + +# H [ T [ H [ A B ] C D V [ E F ] ] G ] +# Inner horizontal split. +open_window; +cmd 'layout tabbed'; +cmd 'splith'; +my $first = open_window; +cmd 'focus parent'; +# Simple tabs. +open_window; +my $second_last = open_window; +# V-Split container +open_window; +cmd 'splitv'; +my $last = open_window; +# Second child of the outer horizontal split, next to the tabbed one. +my $outside = open_window; +cmd 'move right, move right'; + +cmd '[id=' . $first->id . '] focus'; + +# Scroll from first to last. +scroll_down; +scroll_down; +is($x->input_focus, $second_last->id, 'Sanity check: scrolling'); +scroll_down; +is($x->input_focus, $last->id, 'Last window focused through scrolling'); +scroll_down; +is($x->input_focus, $last->id, 'Scrolling again doesn\'t leave the tabbed container and doesn\'t focus the whole sibling'); + +# Scroll from last to first. +scroll_up; +is($x->input_focus, $second_last->id, 'Scrolling up works'); +scroll_up; +scroll_up; +is($x->input_focus, $first->id, 'First window focused through scrolling'); +scroll_up; +is($x->input_focus, $first->id, 'Scrolling again doesn\'t focus the whole sibling'); + +# Try scrolling with another window focused +cmd '[id=' . $outside->id . '] focus'; +scroll_up; +is($x->input_focus, $first->id, 'Scrolling from outside the tabbed container works'); + +done_testing;