+// ----------------------------------------------------------------------------
+// wxDialogModalData
+// ----------------------------------------------------------------------------
+
+// this is simply a container for wxEventLoop and wxWindowDisabler which allows
+// to have a single opaque pointer in wxDialog itself
+class wxDialogModalData
+{
+public:
+ wxDialogModalData() { m_windowDisabler = NULL; }
+
+ void RunLoop(wxDialog *dialog)
+ {
+ m_windowDisabler = new wxWindowDisabler(dialog);
+
+ m_evtLoop.Run();
+ }
+
+ void ExitLoop()
+ {
+ delete m_windowDisabler;
+ m_windowDisabler = NULL;
+
+ m_evtLoop.Exit();
+ }
+
+ ~wxDialogModalData()
+ {
+ wxASSERT_MSG( !m_windowDisabler, _T("forgot to call ExitLoop?") );
+ }
+
+private:
+ wxEventLoop m_evtLoop;
+ wxWindowDisabler *m_windowDisabler;
+};
+