| Index: components/mus/ws/window_manager_state.cc
|
| diff --git a/components/mus/ws/window_manager_state.cc b/components/mus/ws/window_manager_state.cc
|
| index 71e69c4d4434ef16c794bd7931f443be8da3b0b6..681a52345687cd9536817f4c5dbb4ef4d18303b6 100644
|
| --- a/components/mus/ws/window_manager_state.cc
|
| +++ b/components/mus/ws/window_manager_state.cc
|
| @@ -127,16 +127,23 @@
|
|
|
| void WindowManagerState::ReleaseCaptureBlockedByModalWindow(
|
| const ServerWindow* modal_window) {
|
| - event_dispatcher_.ReleaseCaptureBlockedByModalWindow(modal_window);
|
| + if (!capture_window() || !modal_window->is_modal() ||
|
| + !modal_window->IsDrawn())
|
| + return;
|
| +
|
| + if (modal_window->transient_parent() &&
|
| + !modal_window->transient_parent()->Contains(capture_window())) {
|
| + return;
|
| + }
|
| +
|
| + SetCapture(nullptr, false);
|
| }
|
|
|
| void WindowManagerState::ReleaseCaptureBlockedByAnyModalWindow() {
|
| - event_dispatcher_.ReleaseCaptureBlockedByAnyModalWindow();
|
| -}
|
| -
|
| -void WindowManagerState::AddSystemModalWindow(ServerWindow* window) {
|
| - DCHECK(!window->transient_parent());
|
| - event_dispatcher_.AddSystemModalWindow(window);
|
| + if (!capture_window() || !capture_window()->IsBlockedByModalWindow())
|
| + return;
|
| +
|
| + SetCapture(nullptr, false);
|
| }
|
|
|
| mojom::DisplayPtr WindowManagerState::ToMojomDisplay() const {
|
|
|