Handle _NET_ACTIVE_WINDOW for scratchpad windows. (#2458)

We call scratchpad_show() on _NET_ACTIVE_WINDOW requests if the request
came from a pager. This is consistent with the i3 »focus« command because
we assume the user requested to see the window, so we do the only
sensible thing.

fixes #2455
This commit is contained in:
Ingo Bürk
2016-09-27 03:32:05 +02:00
committed by Michael Stapelberg
parent b638ce2e4c
commit f4f9b7102d
2 changed files with 31 additions and 5 deletions

View File

@ -39,6 +39,7 @@ sub send_net_active_window {
0;
$x->send_event(0, $x->get_root_window(), X11::XCB::EVENT_MASK_SUBSTRUCTURE_REDIRECT, $msg);
sync_with_i3;
}
sub get_net_active_window {
@ -131,6 +132,23 @@ send_net_active_window($scratch->id);
is($x->input_focus, $win3->id, 'window 3 still focused');
################################################################################
# A scratchpad window should be shown if _NET_ACTIVE_WINDOW from a pager
# is received.
################################################################################
my $scratch = open_window;
is($x->input_focus, $scratch->id, 'to-scratchpad window has focus');
cmd 'move scratchpad';
is($x->input_focus, $win3->id, 'focus reverted to window 3');
send_net_active_window($scratch->id, 'pager');
is($x->input_focus, $scratch->id, 'scratchpad window is shown');
################################################################################
# Verify that the _NET_ACTIVE_WINDOW property is updated on the root window
# correctly.