OSX adaptions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -203,9 +203,9 @@ protected:
|
|||||||
bool m_isInsideYield;
|
bool m_isInsideYield;
|
||||||
long m_eventsToProcessInsideYield;
|
long m_eventsToProcessInsideYield;
|
||||||
|
|
||||||
private:
|
|
||||||
// this flag is set on entry into Run() and reset before leaving it
|
// this flag is set on entry into Run() and reset before leaving it
|
||||||
bool m_isInsideRun;
|
bool m_isInsideRun;
|
||||||
|
private:
|
||||||
|
|
||||||
wxDECLARE_NO_COPY_CLASS(wxEventLoopBase);
|
wxDECLARE_NO_COPY_CLASS(wxEventLoopBase);
|
||||||
};
|
};
|
||||||
|
@@ -16,6 +16,8 @@ public:
|
|||||||
wxGUIEventLoop();
|
wxGUIEventLoop();
|
||||||
~wxGUIEventLoop();
|
~wxGUIEventLoop();
|
||||||
|
|
||||||
|
int Run();
|
||||||
|
|
||||||
void BeginModalSession( wxWindow* modalWindow );
|
void BeginModalSession( wxWindow* modalWindow );
|
||||||
|
|
||||||
void EndModalSession();
|
void EndModalSession();
|
||||||
@@ -25,6 +27,8 @@ public:
|
|||||||
void OSXUseLowLevelWakeup(bool useIt)
|
void OSXUseLowLevelWakeup(bool useIt)
|
||||||
{ m_osxLowLevelWakeUp = useIt ; }
|
{ m_osxLowLevelWakeUp = useIt ; }
|
||||||
|
|
||||||
|
void OSXOnWillTerminate();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int DoDispatchTimeout(unsigned long timeout);
|
virtual int DoDispatchTimeout(unsigned long timeout);
|
||||||
|
|
||||||
|
@@ -242,6 +242,26 @@ int wxGUIEventLoop::DoDispatchTimeout(unsigned long timeout)
|
|||||||
|
|
||||||
static int gs_loopNestingLevel = 0;
|
static int gs_loopNestingLevel = 0;
|
||||||
|
|
||||||
|
int wxGUIEventLoop::Run()
|
||||||
|
{
|
||||||
|
// because we are using native callbacks for notifying about entering and exiting
|
||||||
|
// the main event loop, we must this leave out here
|
||||||
|
|
||||||
|
// event loops are not recursive, you need to create another loop!
|
||||||
|
wxCHECK_MSG( !IsInsideRun(), -1, wxT("can't reenter a message loop") );
|
||||||
|
|
||||||
|
// We might be called again, after a previous call to ScheduleExit(), so
|
||||||
|
// reset this flag.
|
||||||
|
m_shouldExit = false;
|
||||||
|
|
||||||
|
// Set this variable to true for the duration of this method.
|
||||||
|
m_isInsideRun = true;
|
||||||
|
wxON_BLOCK_EXIT_SET(m_isInsideRun, false);
|
||||||
|
|
||||||
|
// Finally really run the loop.
|
||||||
|
return DoRun();
|
||||||
|
}
|
||||||
|
|
||||||
void wxGUIEventLoop::OSXDoRun()
|
void wxGUIEventLoop::OSXDoRun()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@@ -340,7 +360,8 @@ void wxGUIEventLoop::OSXDoStop()
|
|||||||
// We should only stop the top level event loop.
|
// We should only stop the top level event loop.
|
||||||
if ( gs_loopNestingLevel <= 1 )
|
if ( gs_loopNestingLevel <= 1 )
|
||||||
{
|
{
|
||||||
[NSApp stop:0];
|
// using terminate support all native notifications
|
||||||
|
[NSApp terminate:0];
|
||||||
}
|
}
|
||||||
|
|
||||||
// For the top level loop only calling stop: is not enough when called from
|
// For the top level loop only calling stop: is not enough when called from
|
||||||
@@ -350,6 +371,11 @@ void wxGUIEventLoop::OSXDoStop()
|
|||||||
WakeUp();
|
WakeUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxGUIEventLoop::OSXOnWillTerminate()
|
||||||
|
{
|
||||||
|
OnExit();
|
||||||
|
}
|
||||||
|
|
||||||
void wxGUIEventLoop::WakeUp()
|
void wxGUIEventLoop::WakeUp()
|
||||||
{
|
{
|
||||||
// NSEvent* cevent = [NSApp currentEvent];
|
// NSEvent* cevent = [NSApp currentEvent];
|
||||||
|
Reference in New Issue
Block a user