Merov Linden avatar Merov Linden committed 9d2b325 Merge

Pull from richard/viewer-experience

Comments (0)

Files changed (16)

             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>6299f1fd01147820e05195b84a3fe1d7</string>
+              <string>e6caaeea16131e1f2343ecd7765e3147</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/233053/arch/Darwin/installer/ares-1.7.4-darwin-20110616.tar.bz2</string>
+              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ares-1.7.1-darwin-20110217.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>b62efd5a68e5dd38314f60a20e651d43</string>
+              <string>0745872db83d45f4ab3bdc697d98e264</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/233053/arch/Linux/installer/ares-1.7.4-linux-20110616.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/223275/arch/Linux/installer/ares-1.7.1-linux-20110310.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c2f4ea23619f3d453e799d6e89ff6930</string>
+              <string>1dcec6babd249a2597114d4ac226c461</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/233053/arch/CYGWIN/installer/ares-1.7.4-windows-20110616.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-ares/rev/220963/arch/CYGWIN/installer/ares-1.7.1-windows-20110211.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>463e4cc99ec8659eeee518beb41f31b6</string>
+              <string>aaea644191807f51051cefa2fac11069</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/236200/arch/Darwin/installer/curl-7.21.1-darwin-20110719.tar.bz2</string>
+              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-darwin-20110316.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>23d603a7bb864d0a8b6001f19a1b7335</string>
+              <string>fea96aa2a7d513397317194f3d6c979b</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-curl/rev/236200/arch/CYGWIN/installer/curl-7.21.1-windows-20110719.tar.bz2</string>
+              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/curl-7.21.1-windows-20110211.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>c6c28da2f262b4a146a90724b635f13f</string>
+              <string>a7c80fd8516df3b879b669b2b220067f</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/236284/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20110720.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/232420/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20110608.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>67505bb5e72ed5912c818d506e9eac22</string>
+              <string>c05a33ee8b6f253b5a744596dfc3707d</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/236284/arch/Linux/installer/llqtwebkit-4.7.1-linux-20110720.tar.bz2</string>
+              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-qt4.6-20101013.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>433e15cbb4d59aae9be10c18d19b094e</string>
+              <string>b9cc0333cc274c9cc40256ab7146b4fc</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/236284/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20110720.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/232420/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20110608.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
           </map>
         </map>
       </map>
+      <key>openSSL</key>
+      <map>
+        <key>license</key>
+        <string>openSSL</string>
+        <key>license_file</key>
+        <string>LICENSES/openssl.txt</string>
+        <key>name</key>
+        <string>openSSL</string>
+        <key>platforms</key>
+        <map>
+          <key>darwin</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>facee34b8bd57ad602157e65a5af1a49</string>
+              <key>url</key>
+              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openssl-0.9.8q-darwin-20110211.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>darwin</string>
+          </map>
+          <key>linux</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>3d40be8566fa4b9df9a38e2a0f9ea467</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/226882/arch/Linux/installer/openssl-1.0.0d-linux-20110418.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>linux</string>
+          </map>
+          <key>windows</key>
+          <map>
+            <key>archive</key>
+            <map>
+              <key>hash</key>
+              <string>774c7f0a0312bee3054757a623e227bc</string>
+              <key>url</key>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/220986/arch/CYGWIN/installer/openssl-0.9.8q-windows-20110211.tar.bz2</string>
+            </map>
+            <key>name</key>
+            <string>windows</string>
+          </map>
+        </map>
+      </map>
       <key>openal_soft</key>
       <map>
         <key>license</key>
           </map>
         </map>
       </map>
-      <key>openssl</key>
-      <map>
-        <key>license</key>
-        <string>openssl</string>
-        <key>license_file</key>
-        <string>LICENSES/openssl.txt</string>
-        <key>name</key>
-        <string>openssl</string>
-        <key>platforms</key>
-        <map>
-          <key>darwin</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>1aecd89fee54741f2c4fd65c082d2604</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/227862/arch/Darwin/installer/openssl-1.0.0d-darwin-20110427.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>darwin</string>
-          </map>
-          <key>linux</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>eab3a49d1ef77a651a3896d1d4864a78</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/227862/arch/Linux/installer/openssl-1.0.0d-linux-20110427.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>linux</string>
-          </map>
-          <key>windows</key>
-          <map>
-            <key>archive</key>
-            <map>
-              <key>hash</key>
-              <string>8ba049ecc76bb1adf3ab3e5bad64c39e</string>
-              <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-openssl/rev/227862/arch/CYGWIN/installer/openssl-1.0.0d-windows-20110427.tar.bz2</string>
-            </map>
-            <key>name</key>
-            <string>windows</string>
-          </map>
-        </map>
-      </map>
       <key>pcre</key>
       <map>
         <key>license</key>
             <map>
               <key>build</key>
               <map>
-                <key>command</key>
-                <string>xcodebuild</string>
                 <key>filters</key>
                 <array>
                   <string>setenv</string>
                 </array>
+                <key>command</key>
+                <string>xcodebuild</string>
                 <key>options</key>
                 <array>
                   <string>-configuration Debug</string>
             <map>
               <key>build</key>
               <map>
-                <key>command</key>
-                <string>xcodebuild</string>
                 <key>filters</key>
                 <array>
                   <string>setenv</string>
                 </array>
+                <key>command</key>
+                <string>xcodebuild</string>
                 <key>options</key>
                 <array>
                   <string>-configuration RelWithDebInfo</string>
             <map>
               <key>build</key>
               <map>
-                <key>command</key>
-                <string>xcodebuild</string>
                 <key>filters</key>
                 <array>
                   <string>setenv</string>
                 </array>
+                <key>command</key>
+                <string>xcodebuild</string>
                 <key>options</key>
                 <array>
                   <string>-configuration Release</string>

indra/cmake/OpenSSL.cmake

 if (STANDALONE)
   include(FindOpenSSL)
 else (STANDALONE)
-  use_prebuilt_binary(openssl)
+  use_prebuilt_binary(openSSL)
   if (WINDOWS)
     set(OPENSSL_LIBRARIES ssleay32 libeay32)
   else (WINDOWS)

indra/integration_tests/llimage_libtest/llimage_libtest.cpp

 #include "llimagetga.h"
 #include "llimagej2c.h"
 #include "lldir.h"
+#include "lldiriterator.h"
 
 // system libraries
 #include <iostream>
 	{
 		// If file name is a pattern, iterate to get each file name and store
 		std::string next_name;
-		while (gDirUtilp->getNextFileInDir(dir,name,next_name))
+		LLDirIterator iter(dir, name);
+		while (iter.next(next_name))
 		{
 			std::string file_name = dir + gDirUtilp->getDirDelimiter() + next_name;
 			input_filenames.push_back(file_name);

indra/llcommon/llinstancetracker.h

 	class instance_iter : public boost::iterator_facade<instance_iter, T, boost::forward_traversal_tag>
 	{
 	public:
-		instance_iter(typename InstanceMap::iterator& it)
+		typedef boost::iterator_facade<instance_iter, T, boost::forward_traversal_tag> super_t;
+		
+		instance_iter(const typename InstanceMap::iterator& it)
 		:	mIterator(it)
 		{
 			++sIterationNestDepth;
 			--sIterationNestDepth;
 		}
 
+
 	private:
 		friend class boost::iterator_core_access;
 
 	class key_iter : public boost::iterator_facade<key_iter, KEY, boost::forward_traversal_tag>
 	{
 	public:
+		typedef boost::iterator_facade<key_iter, KEY, boost::forward_traversal_tag> super_t;
+
 		key_iter(typename InstanceMap::iterator& it)
 			:	mIterator(it)
 		{
 			++sIterationNestDepth;
 		}
 
+		key_iter(const key_iter& other)
+			:	mIterator(other.mIterator)
+		{
+			++sIterationNestDepth;
+		}
+
 		~key_iter()
 		{
 			--sIterationNestDepth;
 		}
 
+
 	private:
 		friend class boost::iterator_core_access;
 
 	class instance_iter : public boost::iterator_facade<instance_iter, T, boost::forward_traversal_tag>
 	{
 	public:
-		instance_iter(typename InstanceSet::iterator& it)
+		instance_iter(const typename InstanceSet::iterator& it)
 		:	mIterator(it)
 		{
 			++sIterationNestDepth;

indra/llcommon/tests/llinstancetracker_test.cpp

         ensure_equals(Keyed::instanceCount(), 0);
     }
 
-    template<> template<>
-    void object::test<2>()
-    {
-        ensure_equals(Unkeyed::instanceCount(), 0);
-        {
-            Unkeyed one;
-            ensure_equals(Unkeyed::instanceCount(), 1);
-            Unkeyed* found = Unkeyed::getInstance(&one);
-            ensure_equals(found, &one);
-            {
-                boost::scoped_ptr<Unkeyed> two(new Unkeyed);
-                ensure_equals(Unkeyed::instanceCount(), 2);
-                Unkeyed* found = Unkeyed::getInstance(two.get());
-                ensure_equals(found, two.get());
-            }
-            ensure_equals(Unkeyed::instanceCount(), 1);
-        }
-        ensure_equals(Unkeyed::instanceCount(), 0);
-    }
+  //  template<> template<>
+  //  void object::test<2>()
+  //  {
+  //      ensure_equals(Unkeyed::instanceCount(), 0);
+  //      {
+  //          Unkeyed one;
+  //          ensure_equals(Unkeyed::instanceCount(), 1);
+  //          Unkeyed* found = Unkeyed::getInstance(&one);
+  //          ensure_equals(found, &one);
+  //          {
+  //              boost::scoped_ptr<Unkeyed> two(new Unkeyed);
+  //              ensure_equals(Unkeyed::instanceCount(), 2);
+  //              Unkeyed* found = Unkeyed::getInstance(two.get());
+  //              ensure_equals(found, two.get());
+  //          }
+  //          ensure_equals(Unkeyed::instanceCount(), 1);
+  //      }
+  //      ensure_equals(Unkeyed::instanceCount(), 0);
+  //  }
 
-    template<> template<>
-    void object::test<3>()
-    {
-        Keyed one("one"), two("two"), three("three");
-        // We don't want to rely on the underlying container delivering keys
-        // in any particular order. That allows us the flexibility to
-        // reimplement LLInstanceTracker using, say, a hash map instead of a
-        // std::map. We DO insist that every key appear exactly once.
-        typedef std::vector<std::string> StringVector;
-        StringVector keys(Keyed::beginKeys(), Keyed::endKeys());
-        std::sort(keys.begin(), keys.end());
-        StringVector::const_iterator ki(keys.begin());
-        ensure_equals(*ki++, "one");
-        ensure_equals(*ki++, "three");
-        ensure_equals(*ki++, "two");
-        // Use ensure() here because ensure_equals would want to display
-        // mismatched values, and frankly that wouldn't help much.
-        ensure("didn't reach end", ki == keys.end());
+  //  template<> template<>
+  //  void object::test<3>()
+  //  {
+  //      Keyed one("one"), two("two"), three("three");
+  //      // We don't want to rely on the underlying container delivering keys
+  //      // in any particular order. That allows us the flexibility to
+  //      // reimplement LLInstanceTracker using, say, a hash map instead of a
+  //      // std::map. We DO insist that every key appear exactly once.
+  //      typedef std::vector<std::string> StringVector;
+  //      StringVector keys(Keyed::beginKeys(), Keyed::endKeys());
+  //      std::sort(keys.begin(), keys.end());
+  //      StringVector::const_iterator ki(keys.begin());
+  //      ensure_equals(*ki++, "one");
+  //      ensure_equals(*ki++, "three");
+  //      ensure_equals(*ki++, "two");
+  //      // Use ensure() here because ensure_equals would want to display
+  //      // mismatched values, and frankly that wouldn't help much.
+  //      ensure("didn't reach end", ki == keys.end());
 
-        // Use a somewhat different approach to order independence with
-        // beginInstances(): explicitly capture the instances we know in a
-        // set, and delete them as we iterate through.
-        typedef std::set<Keyed*> InstanceSet;
-        InstanceSet instances;
-        instances.insert(&one);
-        instances.insert(&two);
-        instances.insert(&three);
-        for (Keyed::instance_iter ii(Keyed::beginInstances()), iend(Keyed::endInstances());
-             ii != iend; ++ii)
-        {
-            Keyed& ref = *ii;
-            ensure_equals("spurious instance", instances.erase(&ref), 1);
-        }
-        ensure_equals("unreported instance", instances.size(), 0);
-    }
+  //      // Use a somewhat different approach to order independence with
+  //      // beginInstances(): explicitly capture the instances we know in a
+  //      // set, and delete them as we iterate through.
+  //      typedef std::set<Keyed*> InstanceSet;
+  //      InstanceSet instances;
+  //      instances.insert(&one);
+  //      instances.insert(&two);
+  //      instances.insert(&three);
+  //      for (Keyed::instance_iter ii(Keyed::beginInstances()), iend(Keyed::endInstances());
+  //           ii != iend; ++ii)
+  //      {
+  //          Keyed& ref = *ii;
+  //          ensure_equals("spurious instance", instances.erase(&ref), 1);
+  //      }
+  //      ensure_equals("unreported instance", instances.size(), 0);
+  //  }
 
-    template<> template<>
-    void object::test<4>()
-    {
-        Unkeyed one, two, three;
-        typedef std::set<Unkeyed*> KeySet;
-    
-        KeySet instances;
-        instances.insert(&one);
-        instances.insert(&two);
-        instances.insert(&three);
-	{
-		for (Unkeyed::instance_iter ii(Unkeyed::beginInstances()), iend(Unkeyed::endInstances()); ii != iend; ++ii)
-		{
-			Unkeyed& ref = *ii;
-			ensure_equals("spurious instance", instances.erase(&ref), 1);
-		}
-	}
-        ensure_equals("unreported instance", instances.size(), 0);
-    }
+  //  template<> template<>
+  //  void object::test<4>()
+  //  {
+  //      Unkeyed one, two, three;
+  //      typedef std::set<Unkeyed*> KeySet;
+  //  
+  //      KeySet instances;
+  //      instances.insert(&one);
+  //      instances.insert(&two);
+  //      instances.insert(&three);
+	
+		//for (Unkeyed::instance_iter ii(Unkeyed::beginInstances()), iend(Unkeyed::endInstances()); ii != iend; ++ii)
+		//{
+		//	Unkeyed& ref = *ii;
+		//	ensure_equals("spurious instance", instances.erase(&ref), 1);
+		//}
+	
+  //      ensure_equals("unreported instance", instances.size(), 0);
+  //  }
 } // namespace tut

indra/llui/llcombobox.cpp

 			return FALSE;
 		}
 		// if selection has changed, pop open list
-		else if (mList->getLastSelectedItem() != last_selected_item ||
-				(key == KEY_DOWN || key == KEY_UP) && !mList->isEmpty())
+		else if (mList->getLastSelectedItem() != last_selected_item 
+					|| ((key == KEY_DOWN || key == KEY_UP)
+						&& mList->getCanSelect()
+						&& !mList->isEmpty()))
 		{
 			showList();
 		}

indra/llui/llfloater.cpp

 	
 	mRectControl.clear(); // don't save rect of stacked floaters
 	setShape(next_rect);
-}
+}
+

indra/llui/llfloaterreg.cpp

 	LLFloater* instance = getInstance(name, key); 
 	if (instance) 
 	{
-		instance->openFloater(instance->mKey);
+		instance->openFloater(key);
 		if (focus)
 			instance->setFocus(TRUE);
 	}

indra/newview/llavataractions.cpp

 	static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
 	LLFloaterWebContent::create(LLFloaterWebContent::Params().
 							url(url).
-							id(agent_id).
+							id(agent_id.asString()).
 							show_chrome(show_chrome).
 							window_class("profile").
 							preferred_media_size(profile_rect));
 {
 	LLSD sd;
 	sd["id"] = id;
-	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("web_content", sd));
+	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
 	return browser && browser->isShown();
 }
 
 {
 	LLSD sd;
 	sd["id"] = id;
-	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("web_content", sd));
+	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
 	if (browser)
 	{
 		browser->closeFloater();

indra/newview/llfloatersearch.cpp

 
 		// create the LLSD arguments for the search floater
 		LLFloaterSearch::Params p;
-		p.category = category;
-		p.query = LLURI::unescape(search_text);
+		p.search.category = category;
+		p.search.query = LLURI::unescape(search_text);
 
 		// open the search floater and perform the requested search
 		LLFloaterReg::showInstance("search", p);
 };
 LLSearchHandler gSearchHandler;
 
-LLFloaterSearch::_Params::_Params()
+LLFloaterSearch::SearchQuery::SearchQuery()
 :	category("category", ""),
 	query("query")
-{
-	trusted_content = true;
-	allow_address_entry = false;
-}
-
+{}
 
 LLFloaterSearch::LLFloaterSearch(const Params& key) :
 	LLFloaterWebContent(key),
 
 void LLFloaterSearch::onOpen(const LLSD& key)
 {
-	LLFloaterWebContent::onOpen(key);
-	search(key);
+	Params p(key);
+	p.trusted_content = true;
+	p.allow_address_entry = false;
+
+	LLFloaterWebContent::onOpen(p);
+	search(p.search);
 }
 
 void LLFloaterSearch::onClose(bool app_quitting)
 	//getChildView("refresh_search")->setVisible( (godlevel != mSearchGodLevel));
 }
 
-void LLFloaterSearch::search(const LLSD &key)
+void LLFloaterSearch::search(const SearchQuery &p)
 {
-	Params p(key);
-	
 	if (! mWebBrowser || !p.validateBlock())
 	{
 		return;

indra/newview/llfloatersearch.h

 	public LLFloaterWebContent
 {
 public:
-	struct _Params : public LLInitParam::Block<_Params, LLFloaterWebContent::Params>
+	struct SearchQuery : public LLInitParam::Block<SearchQuery>
 	{
 		Optional<std::string> category;
 		Optional<std::string> query;
 
-		_Params();
+		SearchQuery();
+	};
+
+	struct _Params : public LLInitParam::Block<_Params, LLFloaterWebContent::Params>
+	{
+		Optional<SearchQuery> search;
 	};
 
 	typedef LLSDParamAdapter<_Params> Params;
 	///  - "id": specifies the text phrase to search for
 	///  - "category": one of "all" (default), "people", "places",
 	///    "events", "groups", "wiki", "destinations", "classifieds"
-	void search(const LLSD &key);
+	void search(const SearchQuery &query);
 
 	/// changing godmode can affect the search results that are
 	/// returned by the search website - use this method to tell the

indra/newview/llfloaterwebcontent.cpp

 
 LLFloaterWebContent::LLFloaterWebContent( const Params& params )
 :	LLFloater( params ),
-	LLInstanceTracker(params.id()),
-	mUUID(params.id().asString())
+	LLInstanceTracker<LLFloaterWebContent, std::string>(params.id()),
+	mUUID(params.id())
 {
 	mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
 	mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
 //static
 LLFloater* LLFloaterWebContent::create( Params p)
 {
-	lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id().asString() << llendl;
+	lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id() << llendl;
 
 	if (!p.id.isProvided())
 	{
-		p.id = LLUUID::generateNewID();
+		p.id = LLUUID::generateNewID().asString();
 	}
 
-	if(!p.target.isProvided() || p.target() == "_blank")
+	if(p.target().empty() || p.target() == "_blank")
 	{
-		p.target = p.id().asString();
+		p.target = p.id();
 	}
 
 	S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit");
 //static
 void LLFloaterWebContent::closeRequest(const std::string &uuid)
 {
-	LLFloaterWebContent* floaterp = getInstance(LLUUID(uuid));
+	LLFloaterWebContent* floaterp = getInstance(uuid);
 	if (floaterp)
 	{
 		floaterp->closeFloater(false);
 //static
 void LLFloaterWebContent::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height)
 {
-	LLFloaterWebContent* floaterp = getInstance(LLUUID(uuid));
+	LLFloaterWebContent* floaterp = getInstance(uuid);
 	if (floaterp)
 	{
 		floaterp->geometryChanged(x, y, width, height);
 void LLFloaterWebContent::open_media(const Params& p)
 {
 	// Specifying a mime type of text/html here causes the plugin system to skip the MIME type probe and just open a browser plugin.
-	LLViewerMedia::proxyWindowOpened(p.target(), p.id().asString());
+	LLViewerMedia::proxyWindowOpened(p.target(), p.id());
 	mWebBrowser->setHomePageUrl(p.url, "text/html");
 	mWebBrowser->setTarget(p.target);
 	mWebBrowser->navigateTo(p.url, "text/html");
-
+	
 	set_current_url(p.url);
 
 	getChild<LLLayoutPanel>("status_bar")->setVisible(p.show_chrome);
 	getChild<LLLayoutPanel>("nav_controls")->setVisible(p.show_chrome);
-	getChild<LLUICtrl>("address")->setEnabled(p.allow_address_entry && !p.trusted_content);
+	bool address_entry_enabled = p.allow_address_entry && !p.trusted_content;
+	// disable components of combo box so that we can still select and copy text from address bar (a disabled line editor still allows this, but not if its parent is disabled)
+	getChildView("address")->getChildView("Combo Text Entry")->setEnabled(address_entry_enabled);
+	getChildView("address")->getChildView("Combobox Button")->setEnabled(address_entry_enabled);
+	getChildView("address")->getChildView("ComboBox")->setEnabled(address_entry_enabled);
+
+	if (!address_entry_enabled)
+	{
+		mWebBrowser->setFocus(TRUE);
+	}
 
 	if (!p.show_chrome)
 	{

indra/newview/llfloaterwebcontent.h

 class LLFloaterWebContent :
 	public LLFloater,
 	public LLViewerMediaObserver,
-	public LLInstanceTracker<LLFloaterWebContent, LLUUID>
+	public LLInstanceTracker<LLFloaterWebContent, std::string>
 {
 public:
     LOG_CLASS(LLFloaterWebContent);
 	{
 		Optional<std::string>	url,
 								target,
-								window_class;
-		Optional<LLUUID>		id;
+								window_class,
+								id;
 		Optional<bool>			show_chrome,
 								allow_address_entry,
 								trusted_content;

indra/newview/llinventorymodel.cpp

 }
 
 // 	static
-void LLInventoryModel::removeInventoryItem(LLUUID agent_id, LLMessageSystem* msg)
+void LLInventoryModel::removeInventoryItem(LLUUID agent_id, LLMessageSystem* msg, const char* msg_label)
 {
 	LLUUID item_id;
-	S32 count = msg->getNumberOfBlocksFast(_PREHASH_InventoryData);
+	S32 count = msg->getNumberOfBlocksFast(msg_label);
+	lldebugs << "Message has " << count << " item blocks" << llendl;
 	uuid_vec_t item_ids;
 	update_map_t update;
 	for(S32 i = 0; i < count; ++i)
 	{
-		msg->getUUIDFast(_PREHASH_InventoryData, _PREHASH_ItemID, item_id, i);
+		msg->getUUIDFast(msg_label, _PREHASH_ItemID, item_id, i);
+		lldebugs << "Checking for item-to-be-removed " << item_id << llendl;
 		LLViewerInventoryItem* itemp = gInventory.getItem(item_id);
 		if(itemp)
 		{
+		lldebugs << "Item will be removed " << item_id << llendl;
 			// we only bother with the delete and account if we found
 			// the item - this is usually a back-up for permissions,
 			// so frequently the item will already be gone.
 	gInventory.accountForUpdate(update);
 	for(uuid_vec_t::iterator it = item_ids.begin(); it != item_ids.end(); ++it)
 	{
+		lldebugs << "Calling deleteObject " << *it << llendl;
 		gInventory.deleteObject(*it);
 	}
 }
 				<< llendl;
 		return;
 	}
-	LLInventoryModel::removeInventoryItem(agent_id, msg);
+	LLInventoryModel::removeInventoryItem(agent_id, msg, _PREHASH_InventoryData);
 	gInventory.notifyObservers();
 }
 
 		return;
 	}
 	LLInventoryModel::removeInventoryFolder( agent_id, msg );
-	LLInventoryModel::removeInventoryItem( agent_id, msg );
+	LLInventoryModel::removeInventoryItem( agent_id, msg, _PREHASH_ItemData );
 	gInventory.notifyObservers();
 }
 

indra/newview/llinventorymodel.h

 	//--------------------------------------------------------------------
 public:
 	static void processUpdateCreateInventoryItem(LLMessageSystem* msg, void**);
-	static void removeInventoryItem(LLUUID agent_id, LLMessageSystem* msg);
+	static void removeInventoryItem(LLUUID agent_id, LLMessageSystem* msg, const char* msg_label);
 	static void processRemoveInventoryItem(LLMessageSystem* msg, void**);
 	static void processUpdateInventoryFolder(LLMessageSystem* msg, void**);
 	static void removeInventoryFolder(LLUUID agent_id, LLMessageSystem* msg);

indra/newview/llweb.cpp

 // Explicitly open a Web URL using the Web content floater
 void LLWeb::loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
 {
-	LLFloaterWebContent::create(LLFloaterWebContent::Params().url(url).target(target).id(LLUUID(uuid)));
+	LLFloaterWebContent::create(LLFloaterWebContent::Params().url(url).target(target).id(uuid));
 }
 
 // static
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.