Ensure that message boxes with only "OK" can be closed with Escape in wxMSW.

The native task dialog doesn't allow using Escape (nor Alt-F4 but this is less
annoying) to close it unless it has a Cancel button, so by default the dialogs
with only "OK" couldn't be closed with Escape.

Work around this by creating a Cancel button with "OK" label instead. This is
not ideal but there doesn't seem to be any other way to make this work.

See #12501.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67620 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-04-26 22:57:30 +00:00
parent 6aacfc7320
commit 18c8dd2be2

View File

@@ -721,16 +721,29 @@ void wxMSWTaskDialogConfig::MSWCommonTaskDialogInit(TASKDIALOGCONFIG &tdc)
}
else // without Yes/No we're going to have an OK button
{
AddTaskDialogButton(tdc, IDOK, TDCBF_OK_BUTTON, btnOKLabel);
if ( style & wxCANCEL )
{
AddTaskDialogButton(tdc, IDOK, TDCBF_OK_BUTTON, btnOKLabel);
AddTaskDialogButton(tdc, IDCANCEL,
TDCBF_CANCEL_BUTTON, btnCancelLabel);
if ( style & wxCANCEL_DEFAULT )
tdc.nDefaultButton = IDCANCEL;
}
else // Only "OK"
{
// We actually create a "Cancel" button instead because we want to
// allow closing the dialog box with Escape (and also Alt-F4 or
// clicking the close button in the title bar) which wouldn't work
// without a Cancel button.
if ( !useCustomLabels )
{
useCustomLabels = true;
btnOKLabel = _("OK");
}
AddTaskDialogButton(tdc, IDCANCEL, TDCBF_CANCEL_BUTTON, btnOKLabel);
}
}
}