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 ()
|
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 );
|
SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -586,9 +586,7 @@ int wxMessageDialog::ShowMessageBox()
|
|||||||
// do show the dialog
|
// do show the dialog
|
||||||
int msAns = MessageBox(hWnd, message.t_str(), m_caption.t_str(), msStyle);
|
int msAns = MessageBox(hWnd, message.t_str(), m_caption.t_str(), msStyle);
|
||||||
|
|
||||||
int ret = MSWTranslateReturnCode(msAns);
|
return MSWTranslateReturnCode(msAns);
|
||||||
SetReturnCode(ret);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxMessageDialog::ShowModal()
|
int wxMessageDialog::ShowModal()
|
||||||
@@ -623,9 +621,7 @@ int wxMessageDialog::ShowModal()
|
|||||||
msAns = IDOK;
|
msAns = IDOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = MSWTranslateReturnCode(msAns);
|
return MSWTranslateReturnCode( msAns );
|
||||||
SetReturnCode(ret);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
#endif // wxHAS_MSW_TASKDIALOG
|
#endif // wxHAS_MSW_TASKDIALOG
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user