call Show(false) from ~wxDialog to call EndModal if the dialog is still modal consistently in all ports

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-02-05 19:13:26 +00:00
parent 8ab43d1ba8
commit a9efc294a9
5 changed files with 24 additions and 2 deletions

View File

@@ -31,7 +31,7 @@ public:
const wxSize &size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE,
const wxString &name = wxDialogNameStr );
virtual ~wxDialog() {}
virtual ~wxDialog();
virtual bool Show( bool show = TRUE );
virtual int ShowModal();

View File

@@ -71,11 +71,20 @@ bool wxDialog::Show( bool show )
bool ret = wxWindow::Show( show );
if (show) InitDialog();
if (show)
InitDialog();
return ret;
}
wxDialog::~wxDialog()
{
m_isBeingDeleted = true;
// if the dialog is modal, this will end its event loop
Show(false);
}
bool wxDialog::IsModal() const
{
return m_modalShowing;

View File

@@ -77,6 +77,8 @@ void wxDialog::SetModal( bool flag )
wxDialog::~wxDialog()
{
m_isBeingDeleted = true;
// if the dialog is modal, this will end its event loop
Show(false);
}

View File

@@ -183,6 +183,9 @@ wxDialog::~wxDialog()
{
m_isBeingDeleted = true;
// if the dialog is modal, this will end its event loop
Show(false);
delete m_eventLoop;
if (m_mainWidget)
@@ -241,6 +244,9 @@ bool wxDialog::Show( bool show )
if( !wxWindowBase::Show( show ) )
return false;
if ( !show && IsModal() )
EndModal(wxID_CANCEL);
m_isShown = show;
if (show)

View File

@@ -53,6 +53,11 @@ void wxDialog::Init()
wxDialog::~wxDialog()
{
m_isBeingDeleted = true;
// if the dialog is modal, this will end its event loop
Show(false);
delete m_eventLoop;
}