]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/evtloop.h
Initial commit for Laurent Humbertclaude's Windows slave.
[wxWidgets.git] / include / wx / evtloop.h
index f6d1b55313303ecced284f1c87218e41493769f3..bb22bb84db56f5460ee59fb8bece0aeeddc4bab5 100644 (file)
@@ -116,14 +116,14 @@ protected:
 #elif defined(__WXMSW__)
     #include "wx/msw/evtloop.h"
 #elif defined(__WXMAC__)
-    #include "wx/mac/evtloop.h"
+    #include "wx/osx/evtloop.h"
 #elif defined(__WXDFB__)
     #include "wx/dfb/evtloop.h"
 #else // other platform
 
 class WXDLLIMPEXP_FWD_CORE wxEventLoopImpl;
 
-class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
+class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxEventLoopBase
 {
 public:
     wxGUIEventLoop() { m_impl = NULL; }
@@ -156,7 +156,7 @@ protected:
 #else // !GUI
     // we can't define wxEventLoop differently in GUI and base libraries so use
     // a #define to still allow writing wxEventLoop in the user code
-    #if defined(__WXMSW__) || defined(__UNIX__)
+    #if wxUSE_CONSOLE_EVENTLOOP && (defined(__WXMSW__) || defined(__UNIX__))
         #define wxEventLoop wxConsoleEventLoop
     #else // we still must define it somehow for the code below...
         #define wxEventLoop wxEventLoopBase
@@ -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,34 @@ private:
     wxEventLoopBase *m_evtLoopOld;
 };
 
+#if wxUSE_CONSOLE_EVENTLOOP
+
+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 // wxUSE_CONSOLE_EVENTLOOP
+
 #endif // _WX_EVTLOOP_H_