60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
|
#import "SkNSWindow.h"
|
||
|
#import "SkEvent.h"
|
||
|
#define SkEventClass @"SkEvent"
|
||
|
@implementation SkNSWindow
|
||
|
|
||
|
-(id) initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle
|
||
|
backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {
|
||
|
self = [super initWithContentRect:contentRect styleMask:aStyle
|
||
|
backing:bufferingType defer:flag];
|
||
|
if (self) {
|
||
|
//Register as an observer for SkEventClass events and call
|
||
|
//receiveSkEvent: upon receiving the event
|
||
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
||
|
selector:@selector(receiveSkEvent:) name:SkEventClass object:nil];
|
||
|
}
|
||
|
return self;
|
||
|
}
|
||
|
|
||
|
-(void) dealloc {
|
||
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||
|
[super dealloc];
|
||
|
}
|
||
|
|
||
|
-(void) installSkViews {
|
||
|
//to be overwritten by subclass
|
||
|
}
|
||
|
|
||
|
-(BOOL) acceptsFirstResponder {
|
||
|
return YES;
|
||
|
}
|
||
|
|
||
|
-(void) receiveSkEvent:(NSNotification *)notification {
|
||
|
if(SkEvent::ProcessEvent())
|
||
|
SkEvent::SignalNonEmptyQueue();
|
||
|
}
|
||
|
|
||
|
+(void) postTimedEvent:(NSTimeInterval)ti {
|
||
|
[NSTimer scheduledTimerWithTimeInterval:ti target:self
|
||
|
selector:@selector(timerFireMethod:)
|
||
|
userInfo:nil repeats:NO];
|
||
|
}
|
||
|
|
||
|
+(void) timerFireMethod:(NSTimer*)theTimer {
|
||
|
SkEvent::ServiceQueueTimer();
|
||
|
}
|
||
|
@end
|
||
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
void SkEvent::SignalNonEmptyQueue() {
|
||
|
//post a SkEventClass event to the default notification center
|
||
|
[[NSNotificationCenter defaultCenter] postNotificationName:SkEventClass
|
||
|
object:nil];
|
||
|
}
|
||
|
|
||
|
void SkEvent::SignalQueueTimer(SkMSec delay) {
|
||
|
if (delay) {
|
||
|
//Convert to seconds
|
||
|
NSTimeInterval ti = delay/(float)SK_MSec1;
|
||
|
[SkNSWindow postTimedEvent:ti];
|
||
|
}
|
||
|
}
|