]> git.saurik.com Git - wxWidgets.git/commitdiff
implement DispatchTimeout() for wxOSX/Cocoa
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 28 Dec 2008 14:32:49 +0000 (14:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 28 Dec 2008 14:32:49 +0000 (14:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

Makefile.in
build/bakefiles/files.bkl
include/wx/osx/cocoa/evtloop.h [new file with mode: 0644]
include/wx/osx/evtloop.h
src/osx/cocoa/evtloop.mm

index 9cb64789aabcd6441952363bd92309b8a4cd67e6..78b0864850299f0bd17eddb8bce8e540361e6c4c 100644 (file)
@@ -3070,6 +3070,7 @@ COND_TOOLKIT_OSX_COCOA_GUI_HDR =  \
        wx/osx/uma.h \
        wx/osx/window.h \
        wx/osx/cocoa/chkconf.h \
+       wx/osx/cocoa/evtloop.h \
        wx/osx/cocoa/private.h \
        wx/osx/core/colour.h \
        wx/osx/carbon/accel.h \
index 42fd51abb087e63a65502b6e49b3b4332e32058c..d2ea2993c9a819da78d479dc49d47f8a35a93121 100644 (file)
@@ -2522,6 +2522,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 </set>
 <set var="OSX_COCOA_HDR" hints="files">
     wx/osx/cocoa/chkconf.h
+    wx/osx/cocoa/evtloop.h
     wx/osx/cocoa/private.h
     $(OSX_CARBON_HDR) <!-- FIXME: these headers need moved somewhere shared... -->
     wx/generic/region.h
diff --git a/include/wx/osx/cocoa/evtloop.h b/include/wx/osx/cocoa/evtloop.h
new file mode 100644 (file)
index 0000000..ed222c2
--- /dev/null
@@ -0,0 +1,31 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/osx/cocoa/evtloop.h
+// Purpose:     declaration of wxGUIEventLoop for wxOSX/Cocoa
+// Author:      Vadim Zeitlin
+// Created:     2008-12-28
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_OSX_COCOA_EVTLOOP_H_
+#define _WX_OSX_COCOA_EVTLOOP_H_
+
+class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxEventLoopManual
+{
+public:
+    wxGUIEventLoop();
+
+    // implement/override base class pure virtual
+    virtual bool Pending() const;
+    virtual bool Dispatch();
+    virtual int DispatchTimeout(unsigned long timeout);
+
+    virtual void WakeUp();
+
+private:
+    double m_sleepTime;
+};
+
+#endif // _WX_OSX_COCOA_EVTLOOP_H_
+
index 19410d62d8c6528f652b0469a40e49f043298d44..7b1b1f5f5db73e8df5edef0c3604b5abd7f26e71 100644 (file)
@@ -10,8 +10,8 @@
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifdef __WXMAC_CLASSIC__
-    #error "wxEventLoop is not implemented for Classic build."
+#ifdef __WXOSX_COCOA__
+    #include "wx/osx/cocoa/evtloop.h"
 #else
     #include "wx/osx/carbon/evtloop.h"
 #endif
index d7082f1578cf4b9436de470737818cf244b45dba..1d607f9eaf4022a5dc0b0f58b96d897dc5a248ea 100644 (file)
@@ -92,3 +92,20 @@ bool wxGUIEventLoop::Dispatch()
 
     return true;
 }
+
+int wxGUIEventLoop::DispatchTimeout(unsigned long timeout)
+{
+    wxMacAutoreleasePool autoreleasepool;
+
+    NSEvent *event = [NSApp
+                nextEventMatchingMask:NSAnyEventMask
+                untilDate:[NSDate dateWithTimeIntervalSinceNow: timeout/1000]
+                inMode:NSDefaultRunLoopMode
+                dequeue: YES];
+    if ( !event )
+        return -1;
+
+    [NSApp sendEvent: event];
+
+    return true;
+}