Index: components/mus/ws/connection_manager.cc |
diff --git a/components/mus/ws/connection_manager.cc b/components/mus/ws/connection_manager.cc |
index 4ef846194ae22c000aecbfc41f79eb63bbe76413..f67713b28251807e4316d29974d73fef0767ce68 100644 |
--- a/components/mus/ws/connection_manager.cc |
+++ b/components/mus/ws/connection_manager.cc |
@@ -461,6 +461,11 @@ void ConnectionManager::OnWindowHierarchyChanged(ServerWindow* window, |
if (in_destructor_) |
return; |
+ WindowManagerState* wms = |
+ display_manager_->GetWindowManagerAndDisplay(window).window_manager_state; |
+ if (wms) |
+ wms->ReleaseCaptureBlockedByAnyModalWindow(); |
+ |
ProcessWindowHierarchyChanged(window, new_parent, old_parent); |
// TODO(beng): optimize. |
@@ -526,6 +531,16 @@ void ConnectionManager::OnWillChangeWindowVisibility(ServerWindow* window) { |
} |
} |
+void ConnectionManager::OnWindowVisibilityChanged(ServerWindow* window) { |
+ if (in_destructor_) |
+ return; |
+ |
+ WindowManagerState* wms = |
+ display_manager_->GetWindowManagerAndDisplay(window).window_manager_state; |
+ if (wms) |
+ wms->ReleaseCaptureBlockedByModalWindow(window); |
+} |
+ |
void ConnectionManager::OnWindowPredefinedCursorChanged(ServerWindow* window, |
int32_t cursor_id) { |
if (in_destructor_) |