diff --git a/src/common/dlgcmn.cpp b/src/common/dlgcmn.cpp index df7ecdff59..3f73371484 100644 --- a/src/common/dlgcmn.cpp +++ b/src/common/dlgcmn.cpp @@ -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 ); } diff --git a/src/msw/msgdlg.cpp b/src/msw/msgdlg.cpp index e44ca16d1a..02da8a94d8 100644 --- a/src/msw/msgdlg.cpp +++ b/src/msw/msgdlg.cpp @@ -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