diff --git a/shell/browser/ui/message_box_win.cc b/shell/browser/ui/message_box_win.cc index 9ba64cb3f9a2..88775b0446fa 100644 --- a/shell/browser/ui/message_box_win.cc +++ b/shell/browser/ui/message_box_win.cc @@ -163,8 +163,19 @@ DialogResult ShowTaskDialogWstr(gfx::AcceleratedWidget parent, config.dwFlags |= TDF_POSITION_RELATIVE_TO_WINDOW; } - if (default_id > 0) - config.nDefaultButton = kIDStart + default_id; + if (default_id >= 0 && + base::checked_cast(default_id) < buttons.size()) { + if (!no_link) { + auto common = GetCommonID(buttons[default_id]); + if (common.button != -1) { + config.nDefaultButton = common.id; + } else { + config.nDefaultButton = kIDStart + default_id; + } + } else { + config.nDefaultButton = kIDStart + default_id; + } + } // TaskDialogIndirect doesn't allow empty name, if we set empty title it // will show "electron.exe" in title.