implement DispatchTimeout() for wxOSX/Cocoa
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -3070,6 +3070,7 @@ COND_TOOLKIT_OSX_COCOA_GUI_HDR = \
|
|||||||
wx/osx/uma.h \
|
wx/osx/uma.h \
|
||||||
wx/osx/window.h \
|
wx/osx/window.h \
|
||||||
wx/osx/cocoa/chkconf.h \
|
wx/osx/cocoa/chkconf.h \
|
||||||
|
wx/osx/cocoa/evtloop.h \
|
||||||
wx/osx/cocoa/private.h \
|
wx/osx/cocoa/private.h \
|
||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/accel.h \
|
wx/osx/carbon/accel.h \
|
||||||
|
@@ -2522,6 +2522,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
</set>
|
</set>
|
||||||
<set var="OSX_COCOA_HDR" hints="files">
|
<set var="OSX_COCOA_HDR" hints="files">
|
||||||
wx/osx/cocoa/chkconf.h
|
wx/osx/cocoa/chkconf.h
|
||||||
|
wx/osx/cocoa/evtloop.h
|
||||||
wx/osx/cocoa/private.h
|
wx/osx/cocoa/private.h
|
||||||
$(OSX_CARBON_HDR) <!-- FIXME: these headers need moved somewhere shared... -->
|
$(OSX_CARBON_HDR) <!-- FIXME: these headers need moved somewhere shared... -->
|
||||||
wx/generic/region.h
|
wx/generic/region.h
|
||||||
|
31
include/wx/osx/cocoa/evtloop.h
Normal file
31
include/wx/osx/cocoa/evtloop.h
Normal file
@@ -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_
|
||||||
|
|
@@ -10,8 +10,8 @@
|
|||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifdef __WXMAC_CLASSIC__
|
#ifdef __WXOSX_COCOA__
|
||||||
#error "wxEventLoop is not implemented for Classic build."
|
#include "wx/osx/cocoa/evtloop.h"
|
||||||
#else
|
#else
|
||||||
#include "wx/osx/carbon/evtloop.h"
|
#include "wx/osx/carbon/evtloop.h"
|
||||||
#endif
|
#endif
|
||||||
|
@@ -92,3 +92,20 @@ bool wxGUIEventLoop::Dispatch()
|
|||||||
|
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user