#endif // wxDEBUG_LEVEL
-extern "C" void macPostedEventCallback(void *WXUNUSED(unused))
-{
- wxTheApp->ProcessPendingEvents();
-}
-
bool wxApp::Initialize(int& argc, wxChar **argv)
{
// Mac-specific
wxSetWorkingDirectory( cwd ) ;
}
- /* connect posted events to common-mode run loop so that wxPostEvent events
- are handled even while we're in the menu or on a scrollbar */
- /*
- CFRunLoopSourceContext event_posted_context = {0};
- event_posted_context.perform = macPostedEventCallback;
- m_macEventPosted = CFRunLoopSourceCreate(NULL,0,&event_posted_context);
- CFRunLoopAddSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
- // run loop takes ownership
- CFRelease(m_macEventPosted);
- */
return true;
}
wxToolTip::RemoveToolTips() ;
#endif
- if (m_macEventPosted)
- {
- CFRunLoopRemoveSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
- m_macEventPosted = NULL;
- }
-
DoCleanUp();
wxAppBase::CleanUp();
m_macCurrentEvent = NULL ;
m_macCurrentEventHandlerCallRef = NULL ;
- m_macEventPosted = NULL ;
m_macPool = new wxMacAutoreleasePool();
}
void wxApp::WakeUpIdle()
{
- if (m_macEventPosted)
- {
- CFRunLoopSourceSignal(m_macEventPosted);
- }
+ wxEventLoopBase * const loop = wxEventLoopBase::GetActive();
- wxMacWakeUp() ;
+ if ( loop )
+ loop->WakeUp();
}
void wxApp::OnEndSession(wxCloseEvent& WXUNUSED(event))
#endif // wxUSE_GUI
-#if wxUSE_BASE
-// ----------------------------------------------------------------------------
-// Common Event Support
-// ----------------------------------------------------------------------------
-
-void wxMacWakeUp()
-{
- OSStatus err = noErr;
-
-#if wxOSX_USE_CARBON
-#if 0
- // lead sometimes to race conditions, although all calls used should be thread safe ...
- static wxMacCarbonEvent s_wakeupEvent;
- if ( !s_wakeupEvent.IsValid() )
- {
- err = s_wakeupEvent.Create( 'WXMC', 'WXMC', GetCurrentEventTime(),
- kEventAttributeNone );
- }
- if ( err == noErr )
- {
-
- if ( IsEventInQueue( GetMainEventQueue() , s_wakeupEvent ) )
- return;
- s_wakeupEvent.SetCurrentTime();
- err = PostEventToQueue(GetMainEventQueue(), s_wakeupEvent,
- kEventPriorityHigh );
- }
-#else
- wxMacCarbonEvent wakeupEvent;
- wakeupEvent.Create( 'WXMC', 'WXMC', GetCurrentEventTime(),
- kEventAttributeNone );
- err = PostEventToQueue(GetMainEventQueue(), wakeupEvent,
- kEventPriorityHigh );
-#endif
-#endif
-}
-
-#endif // wxUSE_BASE
-
#if wxUSE_GUI
// ----------------------------------------------------------------------------
NSBeep();
}
-// ----------------------------------------------------------------------------
-// Common Event Support
-// ----------------------------------------------------------------------------
-
-void wxMacWakeUp()
-{
- // ensure that we have an auto release pool in place because the event will
- // be autoreleased from NSEvent:otherEventWithType and we might not have a
- // global pool during startup or shutdown and we actually never have it if
- // we're called from another thread
- //
- // FIXME: we can't use wxMacAutoreleasePool here because it's in core and
- // we're in base
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- NSEvent* wakeupEvent = [NSEvent otherEventWithType:NSApplicationDefined
- location:NSZeroPoint
- modifierFlags:NSAnyEventMask
- timestamp:0
- windowNumber:0
- context:nil
- subtype:0
- data1:0
- data2:0];
- [NSApp postEvent:wakeupEvent atStart:NO];
-
- [pool release];
-}
-
#endif // wxUSE_BASE
#if wxUSE_GUI
if (!sm_isEmbedded)
{
wxNSAppController* controller = [[wxNSAppController alloc] init];
- [[NSApplication sharedApplication] setDelegate:controller];
+ [NSApp setDelegate:controller];
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:controller andSelector:@selector(handleGetURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass andEventID:kAEGetURL];
+
+ [NSApp finishLaunching];
}
return true;
}
{
}
-void wxMacWakeUp()
-{
- // TODO
-}
-
#endif // wxUSE_BASE
#if wxUSE_GUI
*height = (int)bounds.size.height;
}
+#if wxUSE_BASE
+
+void wxMacWakeUp()
+{
+ wxEventLoopBase * const loop = wxEventLoopBase::GetActive();
+
+ if ( loop )
+ loop->WakeUp();
+}
+
+#endif
+
#if wxUSE_GUI
// ----------------------------------------------------------------------------