diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 34a179f95bbdfa1550f47be3a7881c2e5039773d..255bb48f6506f8906b9dd0a2d5cac52b21af7e42 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -13405,5 +13405,20 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+     <key>WebProfileRect</key>
+    <map>
+      <key>Comment</key>
+      <string>Web profile dimensions</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Rect</string>
+      <key>Value</key>
+      <array>
+        <integer>0</integer>
+        <integer>650</integer>
+        <integer>490</integer>
+        <integer>0</integer>
+      </array>    </map>
 </map>
 </llsd>
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index d426afb17cc23af8b547dea7f1631cd63d5bbadb..36272f0c7ca3c0abf52f99bb9a203a4901c967f5 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -33,7 +33,6 @@
 #include "llagentwearablesfetch.h"
 #include "llappearancemgr.h"
 #include "llcallbacklist.h"
-#include "llfolderview.h"
 #include "llgesturemgr.h"
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
@@ -45,6 +44,7 @@
 #include "llsidepanelappearance.h"
 #include "llsidetray.h"
 #include "lltexlayer.h"
+#include "lltooldraganddrop.h"
 #include "llviewerregion.h"
 #include "llvoavatarself.h"
 #include "llwearable.h"
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index eeb4ec8458c82948fdb163a60be337f0535fe09d..4685865bceacb3915e688b733f08829704c7d6d5 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -49,6 +49,7 @@
 #include "llfloaterpay.h"
 #include "llfloaterwebcontent.h"
 #include "llfloaterworldmap.h"
+#include "llfolderview.h"
 #include "llgiveinventory.h"
 #include "llinventorybridge.h"
 #include "llinventorymodel.h"	// for gInventory.findCategoryUUIDForType
@@ -313,7 +314,9 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa
 	std::string url = getProfileURL(username);
 
 	// PROFILES: open in webkit window
-	LLWeb::loadWebURLInternal(url, "", agent_id.asString());
+	const bool show_chrome = false;
+	static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
+	LLFloaterWebContent::create(url, "", agent_id.asString(), show_chrome, profile_rect);
 }
 
 // static
diff --git a/indra/newview/llfilteredwearablelist.cpp b/indra/newview/llfilteredwearablelist.cpp
index cd5e779c4d751d6f911a19af41c8f9fdc5a206de..a29ccf2b6ddccd6cd3d396fc64705dd018142e5e 100644
--- a/indra/newview/llfilteredwearablelist.cpp
+++ b/indra/newview/llfilteredwearablelist.cpp
@@ -31,6 +31,7 @@
 #include "llinventoryfunctions.h"
 #include "llinventoryitemslist.h"
 #include "llinventorymodel.h"
+#include "llviewerinventory.h"
 
 
 LLFilteredWearableListManager::LLFilteredWearableListManager(LLInventoryItemsList* list, LLInventoryCollectFunctor* collector)
diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index 058567492be7ad57ee9a8a14cfd6b812b3827788..43eecbf0485f1c796f37c2a98e98ec4ac0ec9c3b 100644
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -99,7 +99,7 @@ void LLFloaterWebContent::initializeURLHistory()
 }
 
 //static
-void LLFloaterWebContent::create( const std::string &url, const std::string& target, const std::string& uuid )
+void LLFloaterWebContent::create( const std::string &url, const std::string& target, const std::string& uuid,  bool show_chrome, const LLRect& preferred_media_size)
 {
 	lldebugs << "url = " << url << ", target = " << target << ", uuid = " << uuid << llendl;
 
@@ -155,6 +155,20 @@ void LLFloaterWebContent::create( const std::string &url, const std::string& tar
 		// tell the browser instance to load the specified URL
 		browser->open_media(url, target);
 		LLViewerMedia::proxyWindowOpened(target, uuid);
+
+		browser->getChild<LLLayoutPanel>("status_bar")->setVisible(show_chrome);
+		browser->getChild<LLLayoutPanel>("nav_controls")->setVisible(show_chrome);
+
+		if (!show_chrome)
+		{
+			browser->setResizeLimits(100, 100);
+		}
+
+		if (!preferred_media_size.isEmpty())
+		{
+			//ignore x, y for now
+			browser->geometryChanged(browser->getRect().mLeft, browser->getRect().mBottom, preferred_media_size.getWidth(), preferred_media_size.getHeight());
+		}
 	}
 }
 
@@ -210,7 +224,7 @@ void LLFloaterWebContent::geometryChanged(S32 x, S32 y, S32 width, S32 height)
 
 	lldebugs << "geometry change: " << geom << llendl;
 
-	handleReshape(geom,false);
+	setShape(geom);
 }
 
 void LLFloaterWebContent::open_media(const std::string& web_url, const std::string& target)
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
index ecc7e970d865c5ac94f181abe08224e0962cdf7b..56b6ef12c8ea30b7f38a6750359ee34d6848d9d6 100644
--- a/indra/newview/llfloaterwebcontent.h
+++ b/indra/newview/llfloaterwebcontent.h
@@ -46,7 +46,7 @@ public:
 
 	void initializeURLHistory();
 
-	static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null);
+	static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null, bool show_chrome = true, const LLRect& preferred_media_size = LLRect() );
 
 	static void closeRequest(const std::string &uuid);
 	static void geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 29ed70dea5ef0b6f84843f36a64dc92dc093fe50..28b95e751e10fa448abf413b340bfebe2e62c2af 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -172,6 +172,7 @@ LLFolderView::Params::Params()
 	title("title"),
 	use_label_suffix("use_label_suffix"),
 	allow_multiselect("allow_multiselect", true),
+	show_load_status("show_load_status", true),
 	use_ellipses("use_ellipses", false)
 {
 }
@@ -209,6 +210,8 @@ LLFolderView::LLFolderView(const Params& p)
 {
 	mRoot = this;
 
+	mShowLoadStatus = p.show_load_status();
+
 	LLRect rect = p.rect;
 	LLRect new_rect(rect.mLeft, rect.mBottom + getRect().getHeight(), rect.mLeft + getRect().getWidth(), rect.mBottom);
 	setRect( rect );
@@ -322,7 +325,7 @@ void LLFolderView::setSortOrder(U32 order)
 		LLFastTimer t(FTM_SORT);
 		
 		mSortOrder = order;
-		
+
 		sortBy(order);
 		arrangeAll();
 	}
@@ -349,7 +352,7 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)
 	{
 		recursiveIncrementNumDescendantsSelected(folder->numSelected());
 	}
-	folder->setShowLoadStatus(true);
+	folder->setShowLoadStatus(mShowLoadStatus);
 	folder->setOrigin(0, 0);
 	folder->reshape(getRect().getWidth(), 0);
 	folder->setVisible(FALSE);
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 12f6170a7daea6df88b4a7f307635331c56fbc3c..0b92548fd0f76737a0cf71a6ed35e58a32ee4dad 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -58,22 +58,6 @@ class LLScrollContainer;
 class LLUICtrl;
 class LLTextBox;
 
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-// Class LLFolderViewFunctor
-//
-// Simple abstract base class for applying a functor to folders and
-// items in a folder view hierarchy. This is suboptimal for algorithms
-// that only work folders or only work on items, but I'll worry about
-// that later when it's determined to be too slow.
-//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLFolderViewFunctor
-{
-public:
-	virtual ~LLFolderViewFunctor() {}
-	virtual void doFolder(LLFolderViewFolder* folder) = 0;
-	virtual void doItem(LLFolderViewItem* item) = 0;
-};
-
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLFolderView
 //
@@ -91,6 +75,7 @@ public:
 		Optional<std::string>   title;
 		Optional<bool>			use_label_suffix,
 								allow_multiselect,
+								show_load_status,
 								use_ellipses;
 
 		Params();
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 8f56d812328492a79ad94e6b903c7507a6c8be55..87bbe76320fb698879948509026993466bac4d09 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -33,6 +33,7 @@
 #include "llviewerfoldertype.h"
 #include "llinventorybridge.h"	// for LLItemBridge in LLInventorySort::operator()
 #include "llinventoryfilter.h"
+#include "llinventoryfunctions.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llpanel.h"
 #include "llviewercontrol.h"	// gSavedSettings
@@ -1902,9 +1903,9 @@ void LLFolderViewFolder::sortBy(U32 order)
 		folders_t::iterator fit = iter++;
 		(*fit)->sortBy(order);
 	}
-	
-	// Don't sort the topmost folders (My Inventory and Library)
-	if (mListener->getUUID().notNull())
+
+	// Don't sort the topmost folders (My Inventory and Library)
+	if (mListener->getUUID().notNull())
 	{
 		mFolders.sort(mSortFunction);
 		mItems.sort(mSortFunction);
@@ -2046,7 +2047,7 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
 	requestArrange();
 	requestSort();
 	LLFolderViewFolder* parentp = getParentFolder();
-	while (parentp && !parentp->getCreationDate())
+	while (parentp && parentp->mSortFunction.isByDate())
 	{
 		// parent folder doesn't have a time stamp yet, so get it from us
 		parentp->requestSort();
@@ -2072,7 +2073,7 @@ BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)
 	folder->requestArrange(TRUE);
 	requestSort();
 	LLFolderViewFolder* parentp = getParentFolder();
-	while (parentp && !parentp->getCreationDate())
+	while (parentp && !parentp->mSortFunction.isByDate())
 	{
 		// parent folder doesn't have a time stamp yet, so get it from us
 		parentp->requestSort();
diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h
index f9b47e29eecbc854181533ce89de26369a696b10..e2f94a2b633130f4b688ddff01d3de38355a00b3 100644
--- a/indra/newview/llfolderviewitem.h
+++ b/indra/newview/llfolderviewitem.h
@@ -66,6 +66,7 @@ public:
 	// Returns true if order has changed
 	bool updateSort(U32 order);
 	U32 getSort() { return mSortOrder; }
+	bool isByDate() { return mByDate; }
 
 	bool operator()(const LLFolderViewItem* const& a, const LLFolderViewItem* const& b);
 private:
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 6644eea219542798a4c14dd5ddcbf279ebb16070..75d4c4e80d4b6da20f7c62c6bfb381df38ce3c06 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -40,6 +40,7 @@
 #include "llfloateropenobject.h"
 #include "llfloaterreg.h"
 #include "llfloaterworldmap.h"
+#include "llfolderview.h"
 #include "llfriendcard.h"
 #include "llgesturemgr.h"
 #include "llgiveinventory.h" 
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index cfe1747fd4d7435adb8e128c3cfac90a215742f9..2016b92666d9ea168425196e462be886dc7bc2f6 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -28,9 +28,9 @@
 #ifndef LL_LLINVENTORYFUNCTIONS_H
 #define LL_LLINVENTORYFUNCTIONS_H
 
-#include "llinventorytype.h"
-#include "llfolderview.h"
-#include "llfolderviewitem.h"
+#include "llinventorymodel.h"
+#include "llinventory.h"
+#include "llwearabletype.h"
 
 /********************************************************************************
  **                                                                            **
@@ -417,6 +417,24 @@ public:
 /**                    Inventory Collector Functions
  **                                                                            **
  *******************************************************************************/
+class LLFolderViewItem;
+class LLFolderViewFolder;
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLFolderViewFunctor
+//
+// Simple abstract base class for applying a functor to folders and
+// items in a folder view hierarchy. This is suboptimal for algorithms
+// that only work folders or only work on items, but I'll worry about
+// that later when it's determined to be too slow.
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+class LLFolderViewFunctor
+{
+public:
+	virtual ~LLFolderViewFunctor() {}
+	virtual void doFolder(LLFolderViewFolder* folder) = 0;
+	virtual void doItem(LLFolderViewItem* item) = 0;
+};
 
 class LLInventoryState
 {
diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp
index 7b1ff102e704ce89afb7cabd15f25e338cdfecb2..afaf660cb71a7661e6fd60aaa64e3ec791757cfe 100644
--- a/indra/newview/llinventorymodelbackgroundfetch.cpp
+++ b/indra/newview/llinventorymodelbackgroundfetch.cpp
@@ -31,7 +31,9 @@
 #include "llappviewer.h"
 #include "llcallbacklist.h"
 #include "llinventorypanel.h"
+#include "llinventorymodel.h"
 #include "llviewercontrol.h"
+#include "llviewerinventory.h"
 #include "llviewermessage.h"
 #include "llviewerregion.h"
 #include "llviewerwindow.h"
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 49170caee8171c85e5c8b81a098e14ef6612a0f6..d11e7572fe059c14c1d63dd6c825d5e3946da72a 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -35,6 +35,7 @@
 #include "llavataractions.h"
 #include "llfloaterinventory.h"
 #include "llfloaterreg.h"
+#include "llfolderview.h"
 #include "llimfloater.h"
 #include "llimview.h"
 #include "llinventorybridge.h"
@@ -130,6 +131,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
 	mInventory(p.inventory),
 	mAllowMultiSelect(p.allow_multi_select),
 	mShowItemLinkOverlays(p.show_item_link_overlays),
+	mShowLoadStatus(p.show_load_status),
 	mViewsInitialized(false),
 	mInvFVBridgeBuilder(NULL)
 {
@@ -339,6 +341,17 @@ void LLInventoryPanel::setFilterTypes(U64 types, LLInventoryFilter::EFilterType
 		getFilter()->setFilterCategoryTypes(types);
 }
 
+U32 LLInventoryPanel::getFilterObjectTypes() const 
+{ 
+	return mFolderRoot->getFilterObjectTypes(); 
+}
+
+U32 LLInventoryPanel::getFilterPermMask() const 
+{ 
+	return mFolderRoot->getFilterPermissions(); 
+}
+
+
 void LLInventoryPanel::setFilterPermMask(PermissionMask filter_perm_mask)
 {
 	getFilter()->setFilterPermissions(filter_perm_mask);
@@ -354,6 +367,12 @@ void LLInventoryPanel::setFilterSubString(const std::string& string)
 	getFilter()->setFilterSubString(string);
 }
 
+const std::string LLInventoryPanel::getFilterSubString() 
+{ 
+	return mFolderRoot->getFilterSubString(); 
+}
+
+
 void LLInventoryPanel::setSortOrder(U32 order)
 {
 	getFilter()->setSortOrder(order);
@@ -365,6 +384,12 @@ void LLInventoryPanel::setSortOrder(U32 order)
 	}
 }
 
+U32 LLInventoryPanel::getSortOrder() const 
+{ 
+	return mFolderRoot->getSortOrder(); 
+}
+
+
 void LLInventoryPanel::setSinceLogoff(BOOL sl)
 {
 	getFilter()->setDateRangeLastLogoff(sl);
@@ -536,6 +561,12 @@ void LLInventoryPanel::modelChanged(U32 mask)
 	}
 }
 
+LLFolderView* LLInventoryPanel::getRootFolder() 
+{ 
+	return mFolderRoot; 
+}
+
+
 // static
 void LLInventoryPanel::onIdle(void *userdata)
 {
@@ -617,6 +648,7 @@ LLFolderView * LLInventoryPanel::createFolderView(LLInvFVBridge * bridge, bool u
 	p.listener =  bridge;
 	p.use_label_suffix = useLabelSuffix;
 	p.allow_multiselect = mAllowMultiSelect;
+	p.show_load_status = mShowLoadStatus;
 
 	return LLUICtrlFactory::create<LLFolderView>(p);
 }
@@ -798,6 +830,12 @@ void LLInventoryPanel::openSelected()
 	bridge->openItem();
 }
 
+void LLInventoryPanel::unSelectAll()	
+{ 
+	mFolderRoot->setSelection(NULL, FALSE, FALSE); 
+}
+
+
 BOOL LLInventoryPanel::handleHover(S32 x, S32 y, MASK mask)
 {
 	BOOL handled = LLView::handleHover(x, y, mask);
@@ -877,7 +915,7 @@ void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_foc
 	mFolderRoot->setSelectionByID(obj_id, take_keyboard_focus);
 }
 
-void LLInventoryPanel::setSelectCallback(const LLFolderView::signal_t::slot_type& cb) 
+void LLInventoryPanel::setSelectCallback(const boost::function<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)>& cb) 
 { 
 	if (mFolderRoot) 
 	{
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 4d06573ad9cac9f0a05eb3cbf83a0dc9b39aac98..4894b43a56f04796e51f927c9443053b52708b5a 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -33,12 +33,12 @@
 #include "llfloater.h"
 #include "llinventory.h"
 #include "llinventoryfilter.h"
-#include "llfolderview.h"
 #include "llinventorymodel.h"
 #include "llscrollcontainer.h"
 #include "lluictrlfactory.h"
 #include <set>
 
+class LLFolderView;
 class LLFolderViewFolder;
 class LLFolderViewItem;
 class LLInventoryFilter;
@@ -84,6 +84,7 @@ public:
 		Optional<Filter>					filter;
 		Optional<std::string>               start_folder;
 		Optional<bool>						use_label_suffix;
+		Optional<bool>						show_load_status;
 		Optional<LLScrollContainer::Params>	scroll;
 
 		Params()
@@ -94,6 +95,7 @@ public:
 			filter("filter"),
 			start_folder("start_folder"),
 			use_label_suffix("use_label_suffix", true),
+			show_load_status("show_load_status"),
 			scroll("scroll")
 		{}
 	};
@@ -126,17 +128,17 @@ public:
 	// Call this method to set the selection.
 	void openAllFolders();
 	void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus);
-	void setSelectCallback(const LLFolderView::signal_t::slot_type& cb);
+	void setSelectCallback(const boost::function<void (const std::deque<LLFolderViewItem*>& items, BOOL user_action)>& cb);
 	void clearSelection();
 	LLInventoryFilter* getFilter();
 	const LLInventoryFilter* getFilter() const;
 	void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT);
-	U32 getFilterObjectTypes() const { return mFolderRoot->getFilterObjectTypes(); }
+	U32 getFilterObjectTypes() const;
 	void setFilterPermMask(PermissionMask filter_perm_mask);
-	U32 getFilterPermMask() const { return mFolderRoot->getFilterPermissions(); }
+	U32 getFilterPermMask() const;
 	void setFilterWearableTypes(U64 filter);
 	void setFilterSubString(const std::string& string);
-	const std::string getFilterSubString() { return mFolderRoot->getFilterSubString(); }
+	const std::string getFilterSubString();
 	void setSinceLogoff(BOOL sl);
 	void setHoursAgo(U32 hours);
 	BOOL getSinceLogoff();
@@ -146,7 +148,7 @@ public:
 	LLInventoryFilter::EFolderShow getShowFolderState();
 	// This method is called when something has changed about the inventory.
 	void modelChanged(U32 mask);
-	LLFolderView* getRootFolder() { return mFolderRoot; }
+	LLFolderView* getRootFolder();
 	LLScrollContainer* getScrollableContainer() { return mScroller; }
 	
 	void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
@@ -161,7 +163,7 @@ public:
 	static void dumpSelectionInformation(void* user_data);
 
 	void openSelected();
-	void unSelectAll()	{ mFolderRoot->setSelection(NULL, FALSE, FALSE); }
+	void unSelectAll();
 	
 	static void onIdle(void* user_data);
 
@@ -178,6 +180,7 @@ protected:
 	LLInvPanelComplObserver*	mCompletionObserver;
 	BOOL 						mAllowMultiSelect;
 	BOOL 						mShowItemLinkOverlays; // Shows link graphic over inventory item icons
+	BOOL						mShowLoadStatus;
 
 	LLFolderView*				mFolderRoot;
 	LLScrollContainer*			mScroller;
@@ -201,7 +204,7 @@ public:
 	static const std::string INHERIT_SORT_ORDER;
 	
 	void setSortOrder(U32 order);
-	U32 getSortOrder() const { return mFolderRoot->getSortOrder(); }
+	U32 getSortOrder() const;
 private:
 	std::string					mSortOrderSetting;
 
diff --git a/indra/newview/llpanelappearancetab.cpp b/indra/newview/llpanelappearancetab.cpp
index 9910a3a2ac476458b34bed02c51806fed38a398f..8fa8867c696fca1358eda2c37a006b8899bac65c 100644
--- a/indra/newview/llpanelappearancetab.cpp
+++ b/indra/newview/llpanelappearancetab.cpp
@@ -31,6 +31,7 @@
 
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
+#include "llviewerinventory.h"
 
 //virtual
 bool LLPanelAppearanceTab::canTakeOffSelected()
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 9b9573d06b31980fe64f6d31d2fcd34fe357ad06..a9cc247d1b81ca7a728c0874c2ea9f3fff6091c0 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -46,6 +46,7 @@
 #include "llfolderviewitem.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
+#include "llinventoryfunctions.h"
 #include "lllandmarkactions.h"
 #include "llmenubutton.h"
 #include "llplacesinventorybridge.h"
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index 4e7e72a469e8c80a351bc6bc580ec5316740520c..af74f8f26133ae010dab2d97c57463531e9667eb 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -31,6 +31,7 @@
 #include "llappviewer.h"
 #include "llbutton.h"
 #include "llinventorypanel.h"
+#include "llfolderview.h"
 #include "llsidepanelinventory.h"
 
 
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 50f3451b6fd2c3ebbddb76a01df6d43f8102f5b8..b644f0e5cbeb6a7740ec6402005052e3424dca67 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -103,25 +103,14 @@ void LLInboxInventoryPanel::buildFolderView(const LLInventoryPanel::Params& para
 		root_id = LLUUID::generateNewID();
 	}
 	
-	LLRect folder_rect(0, 0, getRect().getWidth(), 0);
-
-	LLFolderView::Params p;
-
-	p.name = getName();
-	p.title = getLabel();
-	p.rect = folder_rect;
-	p.parent_panel = this;
-	p.tool_tip = p.name;
-	p.listener =  mInvFVBridgeBuilder->createBridge(LLAssetType::AT_CATEGORY,
-													LLAssetType::AT_CATEGORY,
-													LLInventoryType::IT_CATEGORY,
-													this,
-													NULL,
-													root_id);
-	p.use_label_suffix = params.use_label_suffix;
-	p.allow_multiselect = mAllowMultiSelect;
+	LLInvFVBridge* new_listener = mInvFVBridgeBuilder->createBridge(LLAssetType::AT_CATEGORY,
+																	LLAssetType::AT_CATEGORY,
+																	LLInventoryType::IT_CATEGORY,
+																	this,
+																	NULL,
+																	root_id);
 	
-	mFolderRoot = LLUICtrlFactory::create<LLFolderView>(p);
+	mFolderRoot = createFolderView(new_listener, params.use_label_suffix());
 }
 
 LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge)
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index 71b8d0be67ab29fdebd70aaccd866322d8656824..8f198c41c1aa69b98f0c3a3d41ddd8b5efde8db9 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -32,7 +32,6 @@
 #include "llinventorypanel.h"
 #include "llfolderviewitem.h"
 
-
 class LLInboxInventoryPanel : public LLInventoryPanel
 {
 public:
@@ -48,7 +47,7 @@ public:
 	void buildFolderView(const LLInventoryPanel::Params& params);
 
 	// virtual
-	LLFolderViewFolder*	createFolderViewFolder(LLInvFVBridge * bridge);
+	class LLFolderViewFolder*	createFolderViewFolder(LLInvFVBridge * bridge);
 };
 
 
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index e0d023992982036a33345eb8e004983803115284..e3b61f695a3c57b23e5ed981b5a467045a8c256e 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -44,6 +44,7 @@
 #include "llcallbacklist.h"
 #include "llbuycurrencyhtml.h"
 #include "llfloaterreg.h"
+#include "llfolderview.h"
 #include "llinventorybridge.h"
 #include "llinventorydefines.h"
 #include "llinventoryfilter.h"
@@ -58,8 +59,10 @@
 #include "llselectmgr.h"
 #include "llsidetray.h"
 #include "llstatusbar.h"
+#include "lltooldraganddrop.h"
 #include "lltrans.h"
 #include "llviewerassettype.h"
+#include "llviewerinventory.h"
 #include "llviewerregion.h"
 #include "llviewerobjectlist.h"
 #include "llviewermessage.h"
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 62f582c34366c9e4a92fca6aa8e196ba922c285e..35e2e96bab8effdac176544724408faa4ba72339 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -36,7 +36,7 @@
 #include "lloutfitobserver.h"
 #include "llcofwearables.h"
 #include "llfilteredwearablelist.h"
-#include "llfolderviewitem.h"
+#include "llfolderview.h"
 #include "llinventory.h"
 #include "llinventoryitemslist.h"
 #include "llviewercontrol.h"
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 9f5c55bad124c673d14131a4cc262a23b198e822..f47928b1314896c7eabdd84c5d985ea727aa6393 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -42,6 +42,7 @@
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
 #include "llinventorymodelbackgroundfetch.h"
+#include "llkeyboard.h"
 #include "llmultigesture.h"
 #include "llnotificationsutil.h"
 #include "llradiogroup.h"
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 16729f045a0d4e91d1182b5a9b017b0af30e7f34..28ec11d1c7b99361ae3d888e8bf9c70c4f40b062 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -32,6 +32,7 @@
 #include "llagentcamera.h"
 #include "llagentwearables.h"
 #include "llappearancemgr.h"
+#include "llfolderview.h"
 #include "llinventorypanel.h"
 #include "llfiltereditor.h"
 #include "llfloaterreg.h"
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 41d8b57f36753624ea1f4116840f4a17cbb3441c..4035928904a198438ae98a7b8ad5d27de96f82c2 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -107,6 +107,7 @@
 #include "lltrans.h"
 #include "lleconomy.h"
 #include "lltoolgrab.h"
+#include "llwindow.h"
 #include "boost/unordered_map.hpp"
 
 using namespace LLVOAvatarDefines;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 2ff540b625bbed400d427a7d973134ad6b85af34..30485d5e078716a764809ff10ecbf19fbf47ee9d 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -37,6 +37,7 @@
 #include "lleconomy.h"
 #include "lleventtimer.h"
 #include "llfloaterreg.h"
+#include "llfolderview.h"
 #include "llfollowcamparams.h"
 #include "llinventorydefines.h"
 #include "lllslconstants.h"
@@ -87,6 +88,7 @@
 #include "lluri.h"
 #include "llviewergenericmessage.h"
 #include "llviewermenu.h"
+#include "llviewerinventory.h"
 #include "llviewerjoystick.h"
 #include "llviewerobjectlist.h"
 #include "llviewerparcelmgr.h"
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 43729d7c9fd0da284a6a19b7e50fb6932f270cc9..5a1f920398b2817ee93cd475fb0889d3d0474b3b 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -5,7 +5,7 @@
  height="440"
  layout="topleft"
  min_height="140"
- min_width="467"
+ min_width="0"
  name="floater_about"
  help_topic="floater_about"
  save_rect="true"
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 e04a72cbc001c54aaf539e42eb7fb32af9957d48..a62ff21589c8ef1dab2a528207e79812b368e2c8 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -18,6 +18,7 @@
     follows="left|right|top|bottom"
     layout="topleft"
     left="5"
+    animate="false"
     name="stack1"
     orientation="vertical"
     top="20"
@@ -156,14 +157,18 @@
       name="external_controls"
       top_delta="0"
       user_resize="false"
+      auto_resize="true"
       width="585">
       <web_browser
-        bottom="-22"
+        bottom="-2"
         follows="all"
         layout="topleft"
         left="0"
         name="webbrowser"
         top="0"/>
+    </layout_panel>
+    <layout_panel name="status_bar" 
+                  height="23">
       <text
         type="string"
         length="200"
@@ -174,7 +179,7 @@
         name="statusbartext"
         parse_urls="false"
         text_color="0.4 0.4 0.4 1"
-        top_pad="5"
+        top_pad="3"
         width="495"/>
       <progress_bar
         color_bar="0.3 1.0 0.3 1"
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..830c27bdac83f47af3727942ac17d96a60c3e87f
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inbox_inventory_panel show_load_status="false" />
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
index 3164cc5ebabb064b72b417fc82f96dc4e99737aa..00f4c43915517e15ab65089f422c1e9783acec40 100644
--- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
@@ -3,6 +3,7 @@
   bg_opaque_color="InventoryBackgroundColor"
   background_visible="true"
   background_opaque="true"
+  show_load_status="true"
   >
     <scroll
 		name="Inventory Scroller"
diff --git a/indra/newview/skins/minimal/xui/en/floater_web_content.xml b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
index 50cb5b14ce7c0c4f1d8ac60962e2cefdb7379059..fd45ef2f62d15924ba75d5e2848bc1362939a147 100644
--- a/indra/newview/skins/minimal/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
@@ -17,6 +17,7 @@
     follows="left|right|top|bottom"
     layout="topleft"
     left="5"
+    animate="false"
     name="stack1"
     orientation="vertical"
     top="20"
@@ -155,14 +156,18 @@
       name="external_controls"
       top_delta="0"
       user_resize="false"
+      auto_resize="true"
       width="585">
       <web_browser
-        bottom="-22"
+        bottom="-2"
         follows="all"
         layout="topleft"
         left="0"
         name="webbrowser"
         top="0"/>
+      </layout_panel>
+    <layout_panel name="status_bar" 
+                  height="23">
       <text
         type="string"
         length="200"
@@ -173,7 +178,7 @@
         name="statusbartext"
         parse_urls="false"
         text_color="0.4 0.4 0.4 1"
-        top_pad="5"
+        top_pad="3"
         width="495"/>
       <progress_bar
         color_bar="0.3 1.0 0.3 1"