Fix wxWindowModalDialogEvent::GetReturnCode() on Windows.
*Lots* of native dialogs don't call SetReturnCode() in their ShowModal() implementations in wxMSW. Rather than fixing them all - and having them accidentally broken again and again in the future - fix this just in the generic ShowWindowModal() implementation. This may not be the most elegant fix, but it is bullet-proof. Also revert previous attempt to fix just wxMessageDialog in r74776. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@75089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -517,7 +517,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxWindowModalDialogEvent, wxCommandEvent)
|
||||
|
||||
void wxDialogBase::ShowWindowModal ()
|
||||
{
|
||||
ShowModal();
|
||||
int retval = ShowModal();
|
||||
// wxWindowModalDialogEvent relies on GetReturnCode() returning correct
|
||||
// code. Rather than doing it manually in all ShowModal() overrides for
|
||||
// native dialogs (and getting accidentally broken again), set it here.
|
||||
// The worst that can happen is that it will be set twice to the same
|
||||
// value.
|
||||
SetReturnCode(retval);
|
||||
SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED );
|
||||
}
|
||||
|
||||
|
@@ -586,9 +586,7 @@ int wxMessageDialog::ShowMessageBox()
|
||||
// do show the dialog
|
||||
int msAns = MessageBox(hWnd, message.t_str(), m_caption.t_str(), msStyle);
|
||||
|
||||
int ret = MSWTranslateReturnCode(msAns);
|
||||
SetReturnCode(ret);
|
||||
return ret;
|
||||
return MSWTranslateReturnCode(msAns);
|
||||
}
|
||||
|
||||
int wxMessageDialog::ShowModal()
|
||||
@@ -623,9 +621,7 @@ int wxMessageDialog::ShowModal()
|
||||
msAns = IDOK;
|
||||
}
|
||||
|
||||
int ret = MSWTranslateReturnCode(msAns);
|
||||
SetReturnCode(ret);
|
||||
return ret;
|
||||
return MSWTranslateReturnCode( msAns );
|
||||
}
|
||||
#endif // wxHAS_MSW_TASKDIALOG
|
||||
|
||||
|
Reference in New Issue
Block a user