Merge pull request #1684 from acrisci/bug/focus-without-input-hint
Ignore InputHint when not in WM_HINTS
This commit is contained in:
commit
a4f0ed62e5
|
@ -271,8 +271,10 @@ void window_update_hints(i3Window *win, xcb_get_property_reply_t *prop, bool *ur
|
|||
return;
|
||||
}
|
||||
|
||||
win->doesnt_accept_focus = !hints.input;
|
||||
LOG("WM_HINTS.input changed to \"%d\"\n", hints.input);
|
||||
if (hints.flags & XCB_ICCCM_WM_HINT_INPUT) {
|
||||
win->doesnt_accept_focus = !hints.input;
|
||||
LOG("WM_HINTS.input changed to \"%d\"\n", hints.input);
|
||||
}
|
||||
|
||||
if (urgency_hint != NULL)
|
||||
*urgency_hint = (xcb_icccm_wm_hints_get_urgency(&hints) != 0);
|
||||
|
|
|
@ -50,12 +50,15 @@ sub recv_take_focus {
|
|||
}
|
||||
|
||||
subtest 'Window without WM_TAKE_FOCUS', sub {
|
||||
fresh_workspace;
|
||||
my $ws = fresh_workspace;
|
||||
|
||||
my $window = open_window;
|
||||
|
||||
ok(!recv_take_focus($window), 'did not receive ClientMessage');
|
||||
|
||||
my $con = shift get_ws_content($ws);
|
||||
ok($con->{focused}, 'con is focused');
|
||||
|
||||
done_testing;
|
||||
};
|
||||
|
||||
|
@ -72,7 +75,7 @@ subtest 'Window without WM_TAKE_FOCUS', sub {
|
|||
# list), the window cannot accept input focus, so we should not try to focus
|
||||
# the window at all.
|
||||
subtest 'Window with WM_TAKE_FOCUS and without InputHint', sub {
|
||||
fresh_workspace;
|
||||
my $ws = fresh_workspace;
|
||||
|
||||
my $take_focus = $x->atom(name => 'WM_TAKE_FOCUS');
|
||||
|
||||
|
@ -88,6 +91,9 @@ subtest 'Window with WM_TAKE_FOCUS and without InputHint', sub {
|
|||
|
||||
ok(!recv_take_focus($window), 'did not receive ClientMessage');
|
||||
|
||||
my $con = shift get_ws_content($ws);
|
||||
ok($con->{focused}, 'con is focused');
|
||||
|
||||
done_testing;
|
||||
};
|
||||
|
||||
|
@ -97,7 +103,7 @@ subtest 'Window with WM_TAKE_FOCUS and without InputHint', sub {
|
|||
# nearly identical presently, so this is currently used also as a proxy test
|
||||
# for the latter case.
|
||||
subtest 'Window with WM_TAKE_FOCUS and unspecified InputHint', sub {
|
||||
fresh_workspace;
|
||||
my $ws = fresh_workspace;
|
||||
|
||||
my $take_focus = $x->atom(name => 'WM_TAKE_FOCUS');
|
||||
|
||||
|
@ -105,6 +111,9 @@ subtest 'Window with WM_TAKE_FOCUS and unspecified InputHint', sub {
|
|||
|
||||
ok(!recv_take_focus($window), 'did not receive ClientMessage');
|
||||
|
||||
my $con = shift get_ws_content($ws);
|
||||
ok($con->{focused}, 'con is focused');
|
||||
|
||||
done_testing;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue