summaryrefslogtreecommitdiff
path: root/indra/newview/llweb.cpp
diff options
context:
space:
mode:
authorRichard Linden <none@none>2010-05-27 18:26:06 -0700
committerRichard Linden <none@none>2010-05-27 18:26:06 -0700
commit68ca9dc95729d9659b8318898dcbd1c813aca678 (patch)
treee0a48f5e4ba771800d74e8d5c155c44b4eba0ea5 /indra/newview/llweb.cpp
parent7477f9054846e1d8a11d0e31c51bd35efa9b4c18 (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.cpp25
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;
}