This repository has been archived by the owner on Apr 18, 2023. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3215 from orestisf1993/focus-next-prev
Small window decoration scrolling bugfix
- Loading branch information
Showing
2 changed files
with
82 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
#!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. | ||
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'); | ||
|
||
done_testing; |