thunderbrew/src/app/mac/MainApp.mm

91 lines
2.1 KiB
Plaintext

#include "app/mac/MainApp.h"
#include "event/Event.hpp"
#include "event/Input.hpp"
#include "event/Scheduler.hpp"
#include "os/Compat.hpp"
@implementation MainApp
+ (void)initialize {
[[NSUserDefaults standardUserDefaults]
registerDefaults: [NSDictionary
dictionaryWithObject: @"YES"
forKey: @"NSDisabledCharacterPaletteMenuItem"]];
[NSApp
setActivationPolicy: NSApplicationActivationPolicyRegular];
}
- (void)applicationDidFinishLaunching:(id)a1 {
self.m_pollTimer = [NSTimer
timerWithTimeInterval: 0.0001
target: self
selector: @selector(poll:)
userInfo: nil
repeats: true];
[[NSRunLoop currentRunLoop]
addTimer: self.m_pollTimer
forMode: NSDefaultRunLoopMode];
}
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
OsQueuePut(OS_INPUT_CLOSE, 0, 0, 0, 0);
return NSTerminateCancel;
}
- (void)captureFrame:(id)a1 {
}
- (void)copy:(id)a3 {
MacClient::PostClipboardKeyEvents(MacClient::ClipboardCopy);
}
- (void)cut:(id)a3 {
MacClient::PostClipboardKeyEvents(MacClient::ClipboardCut);
}
- (void)paste:(id)a3 {
MacClient::PostClipboardKeyEvents(MacClient::ClipboardPaste);
}
- (void)poll:(id)a1 {
if (!Event::s_shouldLoopTerminate) {
Event::s_shouldLoopTerminate = SchedulerMainProcess();
if (Event::s_shouldLoopTerminate) {
[self.m_pollTimer invalidate];
self.m_pollTimer = nil;
[NSApp stop:self];
[NSApp
postEvent:
[NSEvent
otherEventWithType: NSEventTypeApplicationDefined
location: NSMakePoint(0, 0)
modifierFlags: 0
timestamp: 0
windowNumber: 0
context: 0
subtype: 0
data1: 0
data2: 0]
atStart: 0];
}
}
}
- (void)showBatchViewer:(id)a1 {
}
- (void)showGLLayerSetup:(id)a1 {
}
- (void)toggleFullscreenMode:(id)a1 {
// TODO
}
@end