Bugfix: restore focus to the correct window when a non-focused window gets destroyed (+testcase)
This commit is contained in:
@ -4,8 +4,11 @@
|
||||
# Check if the focus is correctly restored after closing windows.
|
||||
#
|
||||
use i3test;
|
||||
use X11::XCB qw(:all);
|
||||
use List::Util qw(first);
|
||||
|
||||
my $x = X11::XCB::Connection->new;
|
||||
|
||||
my $i3 = i3("/tmp/nestedcons");
|
||||
|
||||
my $tmp = fresh_workspace;
|
||||
@ -87,6 +90,27 @@ is(get_focused($tmp), $right, 'top right container focused (in focus stack)');
|
||||
my $tr = first { $_->{id} eq $right } @{$nodes->[0]->{nodes}};
|
||||
is($tr->{focused}, 1, 'top right container really has focus');
|
||||
|
||||
##############################################################
|
||||
# check if focus is correct after closing an unfocused window
|
||||
##############################################################
|
||||
|
||||
$tmp = fresh_workspace;
|
||||
|
||||
ok(@{get_ws_content($tmp)} == 0, 'no containers yet');
|
||||
|
||||
$first = open_empty_con($i3);
|
||||
$middle = open_empty_con($i3);
|
||||
# XXX: the $right empty con will be filled with the x11 window we are creating afterwards
|
||||
$right = open_empty_con($i3);
|
||||
my $win = open_standard_window($x, '#00ff00');
|
||||
|
||||
cmd qq|[con_id="$middle"] focus|;
|
||||
$win->destroy;
|
||||
|
||||
sleep 0.25;
|
||||
|
||||
is(get_focused($tmp), $middle, 'middle container focused');
|
||||
|
||||
##############################################################
|
||||
# and now for something completely different:
|
||||
# check if the pointer position is relevant when restoring focus
|
||||
|
Reference in New Issue
Block a user