aboutsummaryrefslogtreecommitdiffstats
path: root/lib/wx/c_src/wxe_ps_init.c
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2013-12-02 09:51:11 +0100
committerDan Gudmundsson <[email protected]>2013-12-02 09:51:11 +0100
commitd3e5761436cfbcb5b53edad9e1140e445ce94bfd (patch)
tree71a4fa03858907b43f68c06a733b0f28bce63d51 /lib/wx/c_src/wxe_ps_init.c
parent0201ed20979a8828c2e989552684c09f320d0126 (diff)
parent76a1a59d320f3b48c86fe82c6d47c6bfa232196b (diff)
downloadotp-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.c68
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