summaryrefslogtreecommitdiff
path: root/indra/newview/llmediactrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llmediactrl.cpp')
-rw-r--r--indra/newview/llmediactrl.cpp45
1 files changed, 15 insertions, 30 deletions
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 87ebce1d34..6b0f9b709d 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -84,6 +84,7 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
mHomePageUrl( "" ),
mIgnoreUIScale( true ),
mAlwaysRefresh( false ),
+ mExternalUrl( "" ),
mMediaSource( 0 ),
mTakeFocusOnClick( true ),
mCurrentNavUrl( "" ),
@@ -876,27 +877,9 @@ bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if ( 0 == option )
{
- LLSD payload = notification["payload"];
- std::string url = payload["url"].asString();
- S32 target_type = payload["target_type"].asInteger();
-
- switch (target_type)
- {
- case LLPluginClassMedia::TARGET_EXTERNAL:
- // load target in an external browser
- LLWeb::loadURLExternal(url);
- break;
-
- case LLPluginClassMedia::TARGET_BLANK:
- // load target in the user's preferred browser
- LLWeb::loadURL(url);
- break;
-
- default:
- // unsupported link target - shouldn't happen
- LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL;
- break;
- }
+ // open in external browser because we don't support
+ // creation of our own secondary browser windows
+ LLWeb::loadURLExternal( notification["payload"]["external_url"].asString() );
}
return false;
}
@@ -1010,18 +993,20 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
{
// retrieve the event parameters
+ std::string target = self->getClickTarget();
std::string url = self->getClickURL();
- U32 target_type = self->getClickTargetType();
- // is there is a target specified for the link?
- if (target_type == LLPluginClassMedia::TARGET_EXTERNAL ||
- target_type == LLPluginClassMedia::TARGET_BLANK)
+ // if there is a value for the target
+ if ( !target.empty() )
{
- LLSD payload;
- payload["url"] = url;
- payload["target_type"] = LLSD::Integer(target_type);
- LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
- return;
+ if ( target == "_external" )
+ {
+ mExternalUrl = url;
+ LLSD payload;
+ payload["external_url"] = mExternalUrl;
+ LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget);
+ return;
+ }
}
const std::string protocol1( "http://" );