2011-03-18 21:21:46 -04:00
|
|
|
#!perl
|
|
|
|
# vim:ts=4:sw=4:expandtab
|
|
|
|
#
|
|
|
|
# Tests if the WM_TAKE_FOCUS protocol is correctly handled by i3
|
|
|
|
#
|
|
|
|
use X11::XCB qw(:all);
|
|
|
|
use i3test;
|
|
|
|
use v5.10;
|
|
|
|
|
|
|
|
my $x = X11::XCB::Connection->new;
|
|
|
|
|
|
|
|
subtest 'Window without WM_TAKE_FOCUS', sub {
|
2011-09-24 10:38:31 -04:00
|
|
|
fresh_workspace;
|
2011-03-18 21:21:46 -04:00
|
|
|
|
2011-09-24 10:38:31 -04:00
|
|
|
my $window = open_window($x);
|
2011-03-18 21:21:46 -04:00
|
|
|
|
2011-09-24 10:38:31 -04:00
|
|
|
ok(!wait_for_event($x, 1, sub { $_[0]->{response_type} == 161 }), 'did not receive ClientMessage');
|
2011-05-25 14:16:14 -04:00
|
|
|
|
|
|
|
done_testing;
|
2011-03-18 21:21:46 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
subtest 'Window with WM_TAKE_FOCUS', sub {
|
2011-09-24 10:38:31 -04:00
|
|
|
fresh_workspace;
|
2011-03-18 21:21:46 -04:00
|
|
|
|
2011-09-24 10:38:31 -04:00
|
|
|
my $take_focus = $x->atom(name => 'WM_TAKE_FOCUS');
|
2011-03-18 21:21:46 -04:00
|
|
|
|
2011-09-24 10:38:31 -04:00
|
|
|
my $window = open_window($x, {
|
|
|
|
dont_map => 1,
|
|
|
|
protocols => [ $take_focus ],
|
|
|
|
});
|
2011-03-18 21:21:46 -04:00
|
|
|
|
|
|
|
$window->map;
|
|
|
|
|
2011-09-24 10:38:31 -04:00
|
|
|
ok(wait_for_event($x, 1, sub {
|
|
|
|
return 0 unless $_[0]->{response_type} == 161;
|
|
|
|
my ($data, $time) = unpack("L2", $_[0]->{data});
|
|
|
|
return ($data == $take_focus->id);
|
|
|
|
}), 'got ClientMessage with WM_TAKE_FOCUS atom');
|
2011-05-25 14:16:14 -04:00
|
|
|
|
|
|
|
done_testing;
|
2011-03-18 21:21:46 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
done_testing;
|