]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/evtloop.h
wxMenuItem code cleanup, removing duplicate and unneccessary code
[wxWidgets.git] / include / wx / evtloop.h
index 254f8fe0783f1f3e322d11bf6fe10829aeac6cac..5528d8be312b73ec9d286552add7499fb10152ae 100644 (file)
@@ -121,9 +121,9 @@ protected:
     #include "wx/dfb/evtloop.h"
 #else // other platform
 
-class WXDLLEXPORT wxEventLoopImpl;
+class WXDLLIMPEXP_FWD_CORE wxEventLoopImpl;
 
-class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
+class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxEventLoopBase
 {
 public:
     wxGUIEventLoop() { m_impl = NULL; }
@@ -174,7 +174,7 @@ inline bool wxEventLoopBase::IsRunning() const { return GetActive() == this; }
 // implement modality, we will surely need platform-specific implementations
 // too, this generic implementation is here only temporarily to see how it
 // works
-class WXDLLEXPORT wxModalEventLoop : public wxGUIEventLoop
+class WXDLLIMPEXP_CORE wxModalEventLoop : public wxGUIEventLoop
 {
 public:
     wxModalEventLoop(wxWindow *winModal)
@@ -223,4 +223,30 @@ private:
     wxEventLoopBase *m_evtLoopOld;
 };
 
+class wxEventLoopGuarantor
+{
+public:
+    wxEventLoopGuarantor()
+    {
+        m_evtLoopNew = NULL;
+        if (!wxEventLoop::GetActive())
+        {
+            m_evtLoopNew = new wxEventLoop;
+            wxEventLoop::SetActive(m_evtLoopNew);
+        }
+    }
+
+    ~wxEventLoopGuarantor()
+    {
+        if (m_evtLoopNew)
+        {
+            wxEventLoop::SetActive(NULL);
+            delete m_evtLoopNew;
+        }
+    }
+
+private:
+    wxEventLoop *m_evtLoopNew;
+};
+
 #endif // _WX_EVTLOOP_H_