]> git.saurik.com Git - wxWidgets.git/commitdiff
call Show(false) from ~wxDialog to call EndModal if the dialog is still modal consist...
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 5 Feb 2008 19:13:26 +0000 (19:13 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 5 Feb 2008 19:13:26 +0000 (19:13 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/dialog.h
src/gtk/dialog.cpp
src/mac/carbon/dialog.cpp
src/motif/dialog.cpp
src/univ/dialog.cpp

index 7b73b3b52d7ffeb5e4325a9750ca28ad06b12532..b14cd1100717035ae10cc876ec67386caf1be868 100644 (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();
index bb0f74e2efcee2dc2bc8e7c500681757380915d7..8a087ecae6e04c4b8c60db40f664b778e9afa794 100644 (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;
index 858736fd33b960265b67d24b4fbca90d59dc3a6c..bb90e3812be7a6cb83f3cdfd81eca38da74de30b 100644 (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);
 }
 
index ceb4ca922e20df771fd869b6ed7faee5a0cb6854..3955a68d4536e6385f011764ffde4e670c3f7e42 100644 (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)
index ad510bd277abc02c0f456bace842cfffeb194d5a..c98a5e91ac581b5ac7ca314192e3992417e6d9de 100644 (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;
 }