diff --git a/src/Makefile-tests.am b/src/Makefile-tests.am index eca6a7b90..21d0619cf 100644 --- a/src/Makefile-tests.am +++ b/src/Makefile-tests.am @@ -19,6 +19,7 @@ dist_stacking_DATA = \ tests/stacking/closed-transient-no-input-no-take-focus-parents.metatest \ tests/stacking/closed-transient-no-input-parent.metatest \ tests/stacking/closed-transient-no-input-parent-delayed-focus-default-cancelled.metatest \ + tests/stacking/closed-transient-no-input-parents.metatest \ tests/stacking/minimized.metatest \ tests/stacking/mixed-windows.metatest \ tests/stacking/set-parent.metatest \ diff --git a/src/tests/stacking/closed-transient-no-input-parents.metatest b/src/tests/stacking/closed-transient-no-input-parents.metatest new file mode 100644 index 000000000..e3ec2e84a --- /dev/null +++ b/src/tests/stacking/closed-transient-no-input-parents.metatest @@ -0,0 +1,46 @@ +new_client 0 x11 +create 0/1 +show 0/1 + +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 +accept_focus 1/3 false +show 1/3 + +create 1/4 csd +set_parent 1/4 3 +accept_focus 1/4 false +show 1/4 + +create 1/5 csd +set_parent 1/5 3 +show 1/5 + +wait +assert_focused 1/5 +assert_stacking 0/1 1/1 1/2 1/3 1/4 1/5 + +destroy 1/5 +dispatch + +assert_focused none +assert_stacking 0/1 1/1 1/2 1/3 1/4 + +sleep 250 +assert_focused none +assert_stacking 0/1 1/1 1/2 1/3 1/4 + +destroy 1/3 +wait + +assert_focused none +assert_stacking 0/1 1/1 1/2 1/4 diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c index c09ba3e91..7dff35e59 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c @@ -852,7 +852,7 @@ meta_window_x11_focus (MetaWindow *window, if (!focus_window) break; - if (focus_window->input) + if (focus_window->input || focus_window->take_focus) break; if (focus_window->shaded && focus_window->frame)