From 56fbafe03a94a2650e7e871dc5094926503012af Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Sun, 18 Aug 2019 16:58:58 +0300 Subject: [PATCH] cc(): fix -x objective-c; ui.focus_app() --- compiler/main.v | 11 ++++++----- compiler/parser.v | 2 +- vlib/ui/ui_mac.v | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 vlib/ui/ui_mac.v diff --git a/compiler/main.v b/compiler/main.v index 652e8bff9d..d2253b4258 100644 --- a/compiler/main.v +++ b/compiler/main.v @@ -841,10 +841,14 @@ mut args := '' if os.dir_exists(v.out_name) { panic('\'$v.out_name\' is a directory') } + if v.os == .mac { + a << '-x objective-c' + } // The C file we are compiling - //a << '"$TmpPath/$v.out_name_c"' a << '".$v.out_name_c"' - // } + if v.os == .mac { + a << '-x none' + } // Min macos version is mandatory I think? if v.os == .mac { a << '-mmacosx-version-min=10.7' @@ -852,9 +856,6 @@ mut args := '' a << flags a << libs // macOS code can include objective C TODO remove once objective C is replaced with C - if v.os == .mac { - a << '-x objective-c' - } // Without these libs compilation will fail on Linux // || os.user_os() == 'linux' if v.pref.build_mode != .build && (v.os == .linux || v.os == .freebsd || v.os == .openbsd || diff --git a/compiler/parser.v b/compiler/parser.v index 3868bef221..58c4885a4b 100644 --- a/compiler/parser.v +++ b/compiler/parser.v @@ -176,7 +176,7 @@ fn (p mut Parser) parse() { } p.fgenln('\n') p.builtin_mod = p.mod == 'builtin' - p.can_chash = p.mod == 'freetype' || p.mod=='ui' || p.file_path.contains('/focus.v') // TODO tmp remove + p.can_chash = p.mod == 'freetype' || p.mod=='ui' // TODO tmp remove // Import pass - the first and the smallest pass that only analyzes imports // fully qualify the module name, eg base64 to encoding.base64 fq_mod := p.table.qualify_module(p.mod, p.file_path) diff --git a/vlib/ui/ui_mac.v b/vlib/ui/ui_mac.v new file mode 100644 index 0000000000..fe1b8485ba --- /dev/null +++ b/vlib/ui/ui_mac.v @@ -0,0 +1,32 @@ +module ui + +#flag -framework Carbon +#flag -framework Cocoa + +#include +#include + + +fn focus_app(next, event, data voidptr) { + #NSLog(@"2The hot key was pressed."); + #NSApplication *myApp = [NSApplication sharedApplication]; + #[myApp activateIgnoringOtherApps:YES]; + //return noErr; +} + +pub fn reg_key_vid() { + println('REGISTERING VID KEY') + #EventHotKeyRef gMyHotKeyRef; + + #EventHotKeyID gMyHotKeyID; + #EventTypeSpec eventType; + #eventType.eventClass = kEventClassKeyboard; + #eventType.eventKind = kEventHotKeyPressed; + #InstallApplicationEventHandler(&focus_app, 1, &eventType, NULL, NULL); + #gMyHotKeyID.signature = 'rml1'; + #gMyHotKeyID.id = 1; + #RegisterEventHotKey(kVK_ANSI_1, cmdKey, gMyHotKeyID, + #GetApplicationEventTarget(), 0, &gMyHotKeyRef); +} + +