diff --git ui/shell_dialogs/base_shell_dialog_win.cc ui/shell_dialogs/base_shell_dialog_win.cc index b8ef380ab0059..fc90b5ce0e6d4 100644 --- ui/shell_dialogs/base_shell_dialog_win.cc +++ ui/shell_dialogs/base_shell_dialog_win.cc @@ -58,11 +58,15 @@ BaseShellDialogImpl::Owners& BaseShellDialogImpl::GetOwners() { // static void BaseShellDialogImpl::DisableOwner(HWND owner) { + if (owner) + owner = GetAncestor(owner, GA_ROOT); SetOwnerEnabled(owner, false); } std::unique_ptr BaseShellDialogImpl::BeginRun( HWND owner) { + if (owner) + owner = GetAncestor(owner, GA_ROOT); // Cannot run a modal shell dialog if one is already running for this owner. DCHECK(!IsRunningDialogForOwner(owner)); // The owner must be a top level window, otherwise we could end up with two @@ -88,6 +92,8 @@ void BaseShellDialogImpl::EndRun(std::unique_ptr run_state) { } bool BaseShellDialogImpl::IsRunningDialogForOwner(HWND owner) const { + if (owner) + owner = GetAncestor(owner, GA_ROOT); return (owner && GetOwners().find(owner) != GetOwners().end()); }