#ifndef WX_PRECOMP
#include "wx/defs.h"
#include "wx/app.h"
- #include "wx/frame.h"
- #include "wx/dialog.h"
#include "wx/dc.h"
#include "wx/intl.h"
#include "wx/log.h"
#include "wx/cocoa/ObjcPose.h"
#include "wx/cocoa/autorelease.h"
#include "wx/cocoa/mbarman.h"
+#include "wx/cocoa/NSApplication.h"
#if wxUSE_WX_RESOURCES
# include "wx/resource.h"
#import <AppKit/NSApplication.h>
#import <Foundation/NSRunLoop.h>
-#import <Foundation/NSArray.h>
-#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSThread.h>
#import <AppKit/NSEvent.h>
#import <Foundation/NSString.h>
&& ([NSDefaultRunLoopMode isEqualToString:mode] || [NSModalPanelRunLoopMode isEqualToString:mode]))
{
sg_needIdle = false;
- wxLogDebug(wxT("Processing idle events"));
+ wxLogTrace(wxTRACE_COCOA,wxT("Processing idle events"));
while(wxTheApp->ProcessIdle())
{
// Get the same events except don't block
if(event)
return event;
// we didn't get one, do some idle work
- wxLogDebug(wxT("Looping idle events"));
+ wxLogTrace(wxTRACE_COCOA,wxT("Looping idle events"));
}
// No more idle work requested, block
- wxLogDebug(wxT("Finished idle processing"));
+ wxLogTrace(wxTRACE_COCOA,wxT("Finished idle processing"));
}
else
- wxLogDebug(wxT("Avoiding idle processing sg_needIdle=%d"),sg_needIdle);
+ wxLogTrace(wxTRACE_COCOA,wxT("Avoiding idle processing sg_needIdle=%d"),sg_needIdle);
return [super nextEventMatchingMask:mask untilDate:expiration inMode:mode dequeue:flag];
}
- (void)sendEvent: (NSEvent*)anEvent
{
- wxLogDebug(wxT("SendEvent"));
+ wxLogTrace(wxTRACE_COCOA,wxT("SendEvent"));
sg_needIdle = true;
[super sendEvent: anEvent];
}
// ========================================================================
// wxNSApplicationDelegate
// ========================================================================
-@interface wxNSApplicationDelegate : NSObject
-{
-}
-
-// Delegate methods
-- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication;
-- (void)applicationWillBecomeActive:(NSNotification *)notification;
-- (void)applicationDidBecomeActive:(NSNotification *)notification;
-- (void)applicationWillResignActive:(NSNotification *)notification;
-- (void)applicationDidResignActive:(NSNotification *)notification;
-@end // interface wxNSApplicationDelegate : NSObject
-
@implementation wxNSApplicationDelegate : NSObject
// NOTE: Terminate means that the event loop does NOT return and thus
s_inYield = true;
// Run the event loop until it is out of events
- while(NSEvent *event = [GetNSApplication()
+ while(1)
+ {
+ wxAutoNSAutoreleasePool pool;
+ NSEvent *event = [GetNSApplication()
nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate distantPast]
+ untilDate:nil /* ==[NSDate distantPast] */
inMode:NSDefaultRunLoopMode
- dequeue: YES])
- {
+ dequeue: YES];
+ if(!event)
+ break;
[GetNSApplication() sendEvent: event];
}