diff options
author | Dan Gudmundsson <[email protected]> | 2013-12-02 09:51:11 +0100 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2013-12-02 09:51:11 +0100 |
commit | d3e5761436cfbcb5b53edad9e1140e445ce94bfd (patch) | |
tree | 71a4fa03858907b43f68c06a733b0f28bce63d51 /lib/wx/c_src/wxe_ps_init.c | |
parent | 0201ed20979a8828c2e989552684c09f320d0126 (diff) | |
parent | 76a1a59d320f3b48c86fe82c6d47c6bfa232196b (diff) | |
download | otp-d3e5761436cfbcb5b53edad9e1140e445ce94bfd.tar.gz otp-d3e5761436cfbcb5b53edad9e1140e445ce94bfd.tar.bz2 otp-d3e5761436cfbcb5b53edad9e1140e445ce94bfd.zip |
Merge branch 'dgud/wx/fix-wx-init-macosx/OTP-11393' into maint
* dgud/wx/fix-wx-init-macosx/OTP-11393:
wx: Fix initialization
wx: Fix compiler options for xcode 5.0
wx: Update documentation links to wxWidgets
wx: wxListBox::Set crashes on wxWidgets 3.0 with NULL argument
wx: Fix crash in wxe_server cleanup
wx: Fix looping debug printout
wx: Fix compilation on old macs
wx: Fix compiler warnings
wx: Fix cleanup of event handlers
wx: Enable configure flags --with-wxdir --with-wx-prefix on windows
wx: Fix initializations on mac osx
Diffstat (limited to 'lib/wx/c_src/wxe_ps_init.c')
-rw-r--r-- | lib/wx/c_src/wxe_ps_init.c | 68 |
1 files changed, 49 insertions, 19 deletions
diff --git a/lib/wx/c_src/wxe_ps_init.c b/lib/wx/c_src/wxe_ps_init.c index 541d188098..d000e242de 100644 --- a/lib/wx/c_src/wxe_ps_init.c +++ b/lib/wx/c_src/wxe_ps_init.c @@ -19,6 +19,7 @@ #include <stdio.h> #include "wxe_driver.h" + /* Platform specific initialisation stuff */ #ifdef _MACOSX @@ -30,34 +31,63 @@ extern OSErr CPSSetProcessName (ProcessSerialNumber *psn, char *processname); void * wxe_ps_init() { ProcessSerialNumber psn; - NSAutoreleasePool *pool; // Enable GUI - GetCurrentProcess(&psn); - char *app_title = getenv("WX_APP_TITLE"); - // Undocumented function (but no documented way of doing this exists) - CPSSetProcessName(&psn, app_title?app_title:"Erlang"); - TransformProcessType(&psn, kProcessTransformToForegroundApplication); - SetFrontProcess(&psn); - // Enable Cocoa calls from Carbon app - NSApplicationLoad(); + if(!GetCurrentProcess(&psn)) { + TransformProcessType(&psn, kProcessTransformToForegroundApplication); +#ifdef MAC_OS_X_VERSION_10_6 + [[NSRunningApplication currentApplication] activateWithOptions: + (NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)]; +#else + SetFrontProcess(&psn); +#endif + } + return (void *) 0; +} + +int is_packaged_app() { + // Can get lost in when execing around, we use the name instead + /* if(mainBundle) { */ + /* return (CFBundleGetValueForInfoDictionaryKey(mainBundle, CFSTR("CFBundlePackageType")) != nil); */ + /* } */ +#ifdef MAC_OS_X_VERSION_10_6 + NSString * appName = [[NSRunningApplication currentApplication] localizedName]; + return (strncmp("beam", [appName UTF8String], 4) != 0); +#else + return 0; +#endif +} + +void * wxe_ps_init2() { + NSAutoreleasePool *pool; + ProcessSerialNumber psn; // Setup and enable gui pool = [[NSAutoreleasePool alloc] init]; - - NSApplication *app = [NSApplication sharedApplication]; - // Load and set icon - NSMutableString *file = [[NSMutableString alloc] init]; - [file appendFormat:@"%s/%s", erl_wx_privdir, "erlang-logo64.png"]; - NSImage *icon = [[NSImage alloc] initWithContentsOfFile: file]; - [app setApplicationIconImage: icon]; + if( !is_packaged_app() ) { + // Undocumented function (but no documented way of doing this exists) + char *app_title = getenv("WX_APP_TITLE"); + if(!GetCurrentProcess(&psn)) { + CPSSetProcessName(&psn, app_title?app_title:"Erlang"); + } + // Load and set icon + NSMutableString *file = [[NSMutableString alloc] init]; + [file appendFormat:@"%s/%s", erl_wx_privdir, "erlang-logo64.png"]; + NSImage *icon = [[NSImage alloc] initWithContentsOfFile: file]; + [NSApp setApplicationIconImage: icon]; + }; - return (void *) pool; + return pool; } + /* _MACOSX */ #else -void * wxe_ps_init() +void * wxe_ps_init() +{ + return (void *) 0; +} +void * wxe_ps_init2() { return (void *) 0; } -#endif +#endif |