2022-04-08 22:48:56 +02:00
|
|
|
diff --git ui/shell_dialogs/base_shell_dialog_win.cc ui/shell_dialogs/base_shell_dialog_win.cc
|
2022-04-21 20:58:48 +02:00
|
|
|
index b8ef380ab0059..fc90b5ce0e6d4 100644
|
2022-04-08 22:48:56 +02:00
|
|
|
--- ui/shell_dialogs/base_shell_dialog_win.cc
|
|
|
|
+++ ui/shell_dialogs/base_shell_dialog_win.cc
|
2022-04-21 20:58:48 +02:00
|
|
|
@@ -58,11 +58,15 @@ BaseShellDialogImpl::Owners& BaseShellDialogImpl::GetOwners() {
|
2022-04-08 22:48:56 +02:00
|
|
|
|
|
|
|
// 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
|
2022-04-21 20:58:48 +02:00
|
|
|
@@ -88,6 +92,8 @@ void BaseShellDialogImpl::EndRun(std::unique_ptr<RunState> run_state) {
|
2022-04-08 22:48:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool BaseShellDialogImpl::IsRunningDialogForOwner(HWND owner) const {
|
|
|
|
+ if (owner)
|
|
|
|
+ owner = GetAncestor(owner, GA_ROOT);
|
|
|
|
return (owner && GetOwners().find(owner) != GetOwners().end());
|
|
|
|
}
|
|
|
|
|