| Index: components/mus/ws/window_tree.cc
|
| diff --git a/components/mus/ws/window_tree.cc b/components/mus/ws/window_tree.cc
|
| index 14e6a6e7895fb81f6a350a09f23a2a83e657ef18..3fd3f453757595b689f5ce4afc3cc86389323b44 100644
|
| --- a/components/mus/ws/window_tree.cc
|
| +++ b/components/mus/ws/window_tree.cc
|
| @@ -234,8 +234,7 @@ bool WindowTree::AddTransientWindow(const ClientWindowId& window_id,
|
| if (window && transient_window && !transient_window->Contains(window) &&
|
| access_policy_->CanAddTransientWindow(window, transient_window)) {
|
| Operation op(this, window_server_, OperationType::ADD_TRANSIENT_WINDOW);
|
| - window->AddTransientWindow(transient_window);
|
| - return true;
|
| + return window->AddTransientWindow(transient_window);
|
| }
|
| return false;
|
| }
|
| @@ -243,8 +242,15 @@ bool WindowTree::AddTransientWindow(const ClientWindowId& window_id,
|
| bool WindowTree::SetModal(const ClientWindowId& window_id) {
|
| ServerWindow* window = GetWindowByClientId(window_id);
|
| if (window && access_policy_->CanSetModal(window)) {
|
| - window->SetModal();
|
| WindowManagerState* wms = GetWindowManagerState(window);
|
| + if (window->transient_parent()) {
|
| + window->SetModal();
|
| + } else if (user_id_ != InvalidUserId()) {
|
| + if (wms)
|
| + wms->AddSystemModalWindow(window);
|
| + } else {
|
| + return false;
|
| + }
|
| if (wms)
|
| wms->ReleaseCaptureBlockedByModalWindow(window);
|
| return true;
|
|
|