30 lines
1.1 KiB
Diff
30 lines
1.1 KiB
Diff
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::RunState> 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<RunState> run_state) {
|
|
}
|
|
|
|
bool BaseShellDialogImpl::IsRunningDialogForOwner(HWND owner) const {
|
|
+ if (owner)
|
|
+ owner = GetAncestor(owner, GA_ROOT);
|
|
return (owner && GetOwners().find(owner) != GetOwners().end());
|
|
}
|
|
|