From: Gilles Depeyrot Date: Sat, 27 Apr 2002 11:03:18 +0000 (+0000) Subject: ignore process serial number command line argument (-psn) passed to application X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e94e53ac8f432c5966ba0648b4a8e29859dbec0a ignore process serial number command line argument (-psn) passed to application when launched from the Finder git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/app.cpp b/src/mac/app.cpp index ac9d45b2c8..76ab2b8675 100644 --- a/src/mac/app.cpp +++ b/src/mac/app.cpp @@ -690,19 +690,16 @@ int WXDLLEXPORT wxEntryStart( int argc, char *argv[] ) return wxApp::Initialize(); } - int WXDLLEXPORT wxEntryInitGui() { return wxTheApp->OnInitGui(); } - void WXDLLEXPORT wxEntryCleanup() { wxApp::CleanUp(); } - int wxEntry( int argc, char *argv[] , bool enterLoop ) { gCurrentResource = CurResFile() ; @@ -734,7 +731,22 @@ int wxEntry( int argc, char *argv[] , bool enterLoop ) wxCHECK_MSG( wxTheApp, 0, wxT("You have to define an instance of wxApp!") ); -#ifndef __DARWIN__ +#ifdef __DARWIN__ + // Mac OS X passes a process serial number command line argument when + // the application is launched from the Finder. This argument must be + // removed from the command line arguments before being handled by the + // application (otherwise applications would need to handle it) + + if (argc > 1) { + char buf[6] = ""; + strncpy(buf, argv[1], 5); + + if (strcmp(buf, "-psn_") == 0) { + // assume the argument is always the only one and remove it + --argc; + } + } +#else argc = 0 ; // currently we don't support files as parameters #endif // we could try to get the open apple events here to adjust argc and argv better @@ -745,7 +757,6 @@ int wxEntry( int argc, char *argv[] , bool enterLoop ) // GUI-specific initialization, such as creating an app context. wxEntryInitGui(); - // Here frames insert themselves automatically // into wxTopLevelWindows by getting created // in OnInit(). diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp index ac9d45b2c8..76ab2b8675 100644 --- a/src/mac/carbon/app.cpp +++ b/src/mac/carbon/app.cpp @@ -690,19 +690,16 @@ int WXDLLEXPORT wxEntryStart( int argc, char *argv[] ) return wxApp::Initialize(); } - int WXDLLEXPORT wxEntryInitGui() { return wxTheApp->OnInitGui(); } - void WXDLLEXPORT wxEntryCleanup() { wxApp::CleanUp(); } - int wxEntry( int argc, char *argv[] , bool enterLoop ) { gCurrentResource = CurResFile() ; @@ -734,7 +731,22 @@ int wxEntry( int argc, char *argv[] , bool enterLoop ) wxCHECK_MSG( wxTheApp, 0, wxT("You have to define an instance of wxApp!") ); -#ifndef __DARWIN__ +#ifdef __DARWIN__ + // Mac OS X passes a process serial number command line argument when + // the application is launched from the Finder. This argument must be + // removed from the command line arguments before being handled by the + // application (otherwise applications would need to handle it) + + if (argc > 1) { + char buf[6] = ""; + strncpy(buf, argv[1], 5); + + if (strcmp(buf, "-psn_") == 0) { + // assume the argument is always the only one and remove it + --argc; + } + } +#else argc = 0 ; // currently we don't support files as parameters #endif // we could try to get the open apple events here to adjust argc and argv better @@ -745,7 +757,6 @@ int wxEntry( int argc, char *argv[] , bool enterLoop ) // GUI-specific initialization, such as creating an app context. wxEntryInitGui(); - // Here frames insert themselves automatically // into wxTopLevelWindows by getting created // in OnInit().