Update ewmh focused only when new focus is different (#3496)

Fixes #3495.
This commit is contained in:
Orestis 2018-11-03 14:39:49 +02:00 committed by Michael Stapelberg
parent a0105dd2f2
commit dc16df439e
2 changed files with 10 additions and 4 deletions

View File

@ -105,6 +105,10 @@ static con_state *state_for_frame(xcb_window_t window) {
*
*/
static void change_ewmh_focus(xcb_window_t new_focus, xcb_window_t old_focus) {
if (new_focus == old_focus) {
return;
}
ewmh_update_active_window(new_focus);
if (new_focus != XCB_WINDOW_NONE) {

View File

@ -23,15 +23,17 @@ my ($windowA, $windowB);
fresh_workspace;
$windowA = open_window;
ok(is_net_wm_state_focused($windowA), 'a newly opened window that is focused should have _NET_WM_STATE_FOCUSED set');
$windowB = open_window;
ok(!is_net_wm_state_focused($windowA), 'when a another window is focused, the old window should not have _NET_WM_STATE_FOCUSED set');
ok(is_net_wm_state_focused($windowB), 'a newly opened window that is focused should have _NET_WM_STATE_FOCUSED set');
# See issue #3495.
cmd 'kill';
ok(is_net_wm_state_focused($windowA), 'when the second window is closed, the first window should have _NET_WM_STATE_FOCUSED set');
fresh_workspace;
ok(!is_net_wm_state_focused($windowB), 'when focus moves to the ewmh support window, neither window should have _NET_WM_STATE_FOCUSED set');
ok(!is_net_wm_state_focused($windowA), 'when focus moves to the ewmh support window, no window should have _NET_WM_STATE_FOCUSED set');
done_testing;