X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f06832c1b6caae13c0bddf8f3a8aeb1114f4392b..107b52ed174279e09b0bb79fe474ae90dcfdb206:/src/common/utilscmn.cpp diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index c77b3e3743..24cd3374d3 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -941,7 +941,12 @@ bool wxLaunchDefaultApplication(const wxString& document, int flags) { wxUnusedVar(flags); -#if defined(__UNIX__) +#ifdef __WXMAC__ + static const char * const OPEN_CMD = "/usr/bin/open"; + if ( wxFileExists(OPEN_CMD) && + wxExecute(wxString(OPEN_CMD) + " " + document) ) + return true; +#elif defined(__UNIX__) // Our best best is to use xdg-open from freedesktop.org cross-desktop // compatibility suite xdg-utils // (see http://portland.freedesktop.org/wiki/) -- this is installed on @@ -959,7 +964,7 @@ bool wxLaunchDefaultApplication(const wxString& document, int flags) ( NULL, // parent window _T("open"), - document, + document.wx_str(), NULL, // parameters NULL, // working directory SW_SHOWDEFAULT @@ -1016,13 +1021,13 @@ static bool DoLaunchDefaultBrowser(const wxString& urlOrig, int flags) wxRegKey keyDDE(key, wxT("DDEExec")); if ( keyDDE.Exists() ) { - const wxString ddeTopic = wxRegKey(keyDDE, wxT("topic")); - // we only know the syntax of WWW_OpenURL DDE request for IE, // optimistically assume that all other browsers are compatible // with it + static const wxChar *TOPIC_OPEN_URL = wxT("WWW_OpenURL"); wxString ddeCmd; - bool ok = ddeTopic == wxT("WWW_OpenURL"); + wxRegKey keyTopic(keyDDE, wxT("topic")); + bool ok = keyTopic.Exists() && keyTopic == TOPIC_OPEN_URL; if ( ok ) { ddeCmd = keyDDE.QueryDefaultValue(); @@ -1035,7 +1040,7 @@ static bool DoLaunchDefaultBrowser(const wxString& urlOrig, int flags) // in is -1 (meaning "current") by default, replace it with // 0 which means "new" (see KB article 160957) ok = ddeCmd.Replace(wxT("-1"), wxT("0"), - false /* only first occurence */) == 1; + false /* only first occurrence */) == 1; } if ( ok ) @@ -1051,7 +1056,7 @@ static bool DoLaunchDefaultBrowser(const wxString& urlOrig, int flags) wxLogNull noLog; const wxString ddeServer = wxRegKey(keyDDE, wxT("application")); - if ( wxExecuteDDE(ddeServer, ddeTopic, ddeCmd) ) + if ( wxExecuteDDE(ddeServer, TOPIC_OPEN_URL, ddeCmd) ) return true; // this is not necessarily an error: maybe browser is @@ -1069,6 +1074,7 @@ static bool DoLaunchDefaultBrowser(const wxString& urlOrig, int flags) sei.lpFile = url.c_str(); sei.lpVerb = _T("open"); sei.nShow = SW_SHOWNORMAL; + sei.fMask = SEE_MASK_FLAG_NO_UI; // we give error message ourselves ::ShellExecuteEx(&sei);