#include <gtk/gtk.h>
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
-
-// Don't allow window closing if there are open dialogs
-int g_openDialogs;
+// this is defined in src/gtk/toplevel.cpp
+extern int wxOpenModalDialogsCount;
//-----------------------------------------------------------------------------
// wxDialog
EndModal( wxID_CANCEL );
}
- bool ret = wxWindow::Show( show );
+ if (show && CanDoLayoutAdaptation())
+ DoLayoutAdaptation();
+
+ bool ret = wxDialogBase::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
+ if ( IsModal() )
+ EndModal(wxID_CANCEL);
+}
+
bool wxDialog::IsModal() const
{
return m_modalShowing;
m_modalShowing = true;
- g_openDialogs++;
+ wxOpenModalDialogsCount++;
// NOTE: gtk_window_set_modal internally calls gtk_grab_add() !
gtk_window_set_modal(GTK_WINDOW(m_widget), TRUE);
gtk_window_set_modal(GTK_WINDOW(m_widget), FALSE);
- g_openDialogs--;
+ wxOpenModalDialogsCount--;
return GetReturnCode();
}
if (!IsModal())
{
- wxFAIL_MSG( wxT("wxDialog:EndModal called twice") );
+ wxFAIL_MSG( "either wxDialog:EndModal called twice or ShowModal wasn't called" );
return;
}