From 61b675e0afb96d1d46b1f36a8d54bb8146ef27d6 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Wed, 8 Dec 2010 14:38:20 -0800
Subject: SOCIAL-358 FIX Add button to Web Content floater to open current URL
 in system browser

---
 indra/newview/llfloaterwebcontent.cpp              | 22 ++++++++++++++++++----
 indra/newview/llfloaterwebcontent.h                |  2 +-
 .../skins/default/xui/en/floater_web_content.xml   | 19 ++++++++++++++++++-
 3 files changed, 37 insertions(+), 6 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index ed66be165e..d9748b2235 100644
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -33,6 +33,7 @@
 #include "llprogressbar.h"
 #include "lltextbox.h"
 #include "llviewercontrol.h"
+#include "llweb.h"
 #include "llwindow.h"
 
 #include "llfloaterwebcontent.h"
@@ -43,8 +44,8 @@ LLFloaterWebContent::LLFloaterWebContent( const LLSD& key )
 	mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
 	mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
 	mCommitCallbackRegistrar.add( "WebContent.Reload", boost::bind( &LLFloaterWebContent::onClickReload, this ));
-
 	mCommitCallbackRegistrar.add( "WebContent.EnterAddress", boost::bind( &LLFloaterWebContent::onEnterAddress, this ));
+	mCommitCallbackRegistrar.add( "WebContent.PopExternal", boost::bind( &LLFloaterWebContent::onPopExternal, this ));
 }
 
 BOOL LLFloaterWebContent::postBuild()
@@ -58,8 +59,9 @@ BOOL LLFloaterWebContent::postBuild()
 	// observe browser events
 	mWebBrowser->addObserver( this );
 
-	// these button are always enabled
+	// these buttons are always enabled
 	getChildView("reload")->setEnabled( true );
+	getChildView("popexternal")->setEnabled( true );
 
 	return TRUE;
 }
@@ -323,8 +325,20 @@ void LLFloaterWebContent::onEnterAddress()
 {
 	// make sure there is at least something there.
 	// (perhaps this test should be for minimum length of a URL)
-	if ( mAddressCombo->getValue().asString().length() > 0 )
+	std::string url = mAddressCombo->getValue().asString();
+	if ( url.length() > 0 )
+	{
+		mWebBrowser->navigateTo( url, "text/html");
+	};
+}
+
+void LLFloaterWebContent::onPopExternal()
+{
+	// make sure there is at least something there.
+	// (perhaps this test should be for minimum length of a URL)
+	std::string url = mAddressCombo->getValue().asString();
+	if ( url.length() > 0 )
 	{
-		mWebBrowser->navigateTo( mAddressCombo->getValue().asString(), "text/html");
+		LLWeb::loadURLExternal( url );
 	};
 }
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
index 1effa2c4ab..09b4945b65 100644
--- a/indra/newview/llfloaterwebcontent.h
+++ b/indra/newview/llfloaterwebcontent.h
@@ -61,7 +61,7 @@ public:
 	void onClickReload();
 	void onClickStop();
 	void onEnterAddress();
-	void onClickGo();
+	void onPopExternal();
 
 private:
 	void open_media(const std::string& media_url, const std::string& target);
diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml
index eac1b4e712..3072ca1b0e 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -110,10 +110,27 @@
         name="address"
         combo_editor.select_on_focus="true"
         top_delta="0"
-        width="729">
+        width="702">
         <combo_box.commit_callback
           function="WebContent.EnterAddress" />
       </combo_box>
+      <button
+        image_overlay="ExternalBrowser_Off"
+		    image_disabled="PushButton_Disabled"
+		    image_disabled_selected="PushButton_Disabled"
+		    image_selected="PushButton_Selected"
+		    image_unselected="PushButton_Off"
+        follows="right|top"
+        enabled="true" 
+        height="22"
+        layout="topleft"
+        name="popexternal"
+        right="800"
+        top_delta="0"
+        width="22">
+        <button.commit_callback
+          function="WebContent.PopExternal" />
+      </button>
     </layout_panel>
     <layout_panel
       height="40"
-- 
cgit v1.2.3