adding ProcessPendingEvents as ProcessIdle doesn't call it anymore, closes #11132
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62159 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -89,6 +89,8 @@ bool wxGUIEventLoop::Dispatch()
|
||||
switch (status)
|
||||
{
|
||||
case eventLoopTimedOutErr :
|
||||
// process pending wx events before sending idle events
|
||||
wxTheApp->ProcessPendingEvents();
|
||||
if ( wxTheApp->ProcessIdle() )
|
||||
m_sleepTime = kEventDurationNoWait ;
|
||||
else
|
||||
@@ -167,6 +169,10 @@ bool wxGUIEventLoop::YieldFor(long eventsToProcess)
|
||||
// OnUpdateUI() which is a nice (and desired) side effect)
|
||||
while ( ProcessIdle() ) {}
|
||||
|
||||
// if there are pending events, we must process them.
|
||||
if (wxTheApp)
|
||||
wxTheApp->ProcessPendingEvents();
|
||||
|
||||
#if wxUSE_LOG
|
||||
wxLog::Resume();
|
||||
#endif // wxUSE_LOG
|
||||
|
@@ -28,6 +28,19 @@ void wxDialog::DoShowModal()
|
||||
{
|
||||
wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
|
||||
|
||||
// If the app hasn't started, flush the event queue
|
||||
// If we don't do this, the Dock doesn't get the message that
|
||||
// the app has started so will refuse to activate it.
|
||||
NSApplication *theNSApp = [NSApplication sharedApplication];
|
||||
if (![theNSApp isRunning])
|
||||
{
|
||||
wxMacAutoreleasePool pool;
|
||||
while(NSEvent *event = [theNSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES])
|
||||
{
|
||||
[theNSApp sendEvent:event];
|
||||
}
|
||||
}
|
||||
|
||||
wxModalDialogs.Append(this);
|
||||
|
||||
SetFocus() ;
|
||||
@@ -55,9 +68,23 @@ void wxDialog::DoShowModal()
|
||||
// unsafe
|
||||
[NSApp runModalSession:session];
|
||||
|
||||
// break if ended, perform no further idle processing
|
||||
if (!IsModal())
|
||||
break;
|
||||
|
||||
// do some idle processing
|
||||
bool needMore = false;
|
||||
if (wxTheApp)
|
||||
wxTheApp->ProcessIdle();
|
||||
{
|
||||
wxTheApp->ProcessPendingEvents();
|
||||
needMore = wxTheApp->ProcessIdle();
|
||||
}
|
||||
|
||||
if (!needMore)
|
||||
{
|
||||
// no more idle processing wanted - block until the next event
|
||||
[theNSApp nextEventMatchingMask:NSAnyEventMask untilDate:[NSDate distantFuture] inMode:NSDefaultRunLoopMode dequeue:NO];
|
||||
}
|
||||
}
|
||||
[NSApp endModalSession:session];
|
||||
|
||||
|
@@ -116,6 +116,9 @@ bool wxGUIEventLoop::Dispatch()
|
||||
}
|
||||
else
|
||||
{
|
||||
if (wxTheApp)
|
||||
wxTheApp->ProcessPendingEvents();
|
||||
|
||||
if ( wxTheApp->ProcessIdle() )
|
||||
m_sleepTime = 0.0 ;
|
||||
else
|
||||
@@ -161,6 +164,10 @@ bool wxGUIEventLoop::YieldFor(long eventsToProcess)
|
||||
// OnUpdateUI() which is a nice (and desired) side effect)
|
||||
while ( ProcessIdle() ) {}
|
||||
|
||||
// if there are pending events, we must process them.
|
||||
if (wxTheApp)
|
||||
wxTheApp->ProcessPendingEvents();
|
||||
|
||||
#if wxUSE_LOG
|
||||
wxLog::Resume();
|
||||
#endif // wxUSE_LOG
|
||||
|
Reference in New Issue
Block a user