tests, stacking: Add tests with no-input and no-take-focus windows

When a window with no frame, that doesn't accept focus and that has no
take-focus atom set is destroyed, we ended up in not changing the current_focus
window, causing a crash.

Added test cases that verify this situation.

Related to https://gitlab.gnome.org/GNOME/mutter/issues/308
https://gitlab.gnome.org/GNOME/mutter/merge_requests/307
(cherry picked from commit 2fc7760ceed6f948d4f3c1dd74d4e57c7df05eea)
This commit is contained in:
Marco Trevisan (Treviño) 2018-11-13 07:48:53 +01:00
parent 9c079a5261
commit afcea966c0
4 changed files with 67 additions and 0 deletions

View File

@ -105,6 +105,9 @@ headless_start_test = executable('mutter-headless-start-test',
stacking_tests = files([
'stacking/basic-x11.metatest',
'stacking/basic-wayland.metatest',
'stacking/closed-transient-no-input-no-take-focus-parent.metatest',
'stacking/closed-transient-no-input-no-take-focus-parents.metatest',
'stacking/closed-transient-no-input-parent.metatest',
'stacking/minimized.metatest',
'stacking/mixed-windows.metatest',
'stacking/set-parent.metatest',

View File

@ -0,0 +1,21 @@
new_client 1 x11
create 1/1
show 1/1
create 1/2 csd
set_parent 1/2 1
can_take_focus 1/2 false
accept_focus 1/2 false
show 1/2
create 1/3 csd
set_parent 1/3 2
show 1/3
wait
assert_stacking 1/1 1/2 1/3
destroy 1/3
wait
assert_stacking 1/1 1/2

View File

@ -0,0 +1,23 @@
new_client 1 x11
create 1/1
accept_focus 1/1 false
can_take_focus 1/1 false
show 1/1
create 1/2 csd
set_parent 1/2 1
can_take_focus 1/2 false
accept_focus 1/2 false
show 1/2
create 1/3 csd
set_parent 1/3 2
show 1/3
wait
assert_stacking 1/1 1/2 1/3
destroy 1/3
wait
assert_stacking 1/1 1/2

View File

@ -0,0 +1,20 @@
new_client 1 x11
create 1/1
show 1/1
create 1/2 csd
set_parent 1/2 1
accept_focus 1/2 false
show 1/2
create 1/3 csd
set_parent 1/3 2
show 1/3
wait
assert_stacking 1/1 1/2 1/3
destroy 1/3
wait
assert_stacking 1/1 1/2