diff options
author | Richard Linden <none@none> | 2010-05-27 18:26:06 -0700 |
---|---|---|
committer | Richard Linden <none@none> | 2010-05-27 18:26:06 -0700 |
commit | 68ca9dc95729d9659b8318898dcbd1c813aca678 (patch) | |
tree | e0a48f5e4ba771800d74e8d5c155c44b4eba0ea5 /indra/newview/llweb.cpp | |
parent | 7477f9054846e1d8a11d0e31c51bd35efa9b4c18 (diff) |
VI-49 FIX "_external" links should work in shared media
monroe already did most of this, just moved dialog for confirming opening external browser to common code that calls out to external browser
so no way to skip notification unless the user opts out
Diffstat (limited to 'indra/newview/llweb.cpp')
-rw-r--r-- | indra/newview/llweb.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index aa03b1afd1..5c9633c036 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -54,6 +54,10 @@ #include "llviewerparcelmgr.h" #include "llviewerregion.h" #include "llviewerwindow.h" +#include "llnotificationsutil.h" + +bool on_load_url_external_response(const LLSD& notification, const LLSD& response, bool async ); + class URLLoader : public LLToastAlertPanel::URLLoader { @@ -110,11 +114,26 @@ void LLWeb::loadURLExternal(const std::string& url) // static void LLWeb::loadURLExternal(const std::string& url, bool async) { - std::string escaped_url = escapeURL(url); - if (gViewerWindow) + LLSD payload; + payload["url"] = url; + LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, boost::bind(on_load_url_external_response, _1, _2, async)); +} + +// static +bool on_load_url_external_response(const LLSD& notification, const LLSD& response, bool async ) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if ( 0 == option ) { - gViewerWindow->getWindow()->spawnWebBrowser(escaped_url, async); + LLSD payload = notification["payload"]; + std::string url = payload["url"].asString(); + std::string escaped_url = LLWeb::escapeURL(url); + if (gViewerWindow) + { + gViewerWindow->getWindow()->spawnWebBrowser(escaped_url, async); + } } + return false; } |