diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 472d2ccf243fa39600bcf892d60d75e718b7fdc8..f278fb6a7b767fcfc8f119af6fa915a30b619d7d 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -372,6 +372,11 @@ void LLCOFWearables::refresh()
 		 iter != iter_end; ++iter)
 	{
 		LLFlatListView* list = iter->first;
+		if (!list) continue;
+
+		//restoring selection should not fire commit callbacks
+		list->setCommitOnSelectionChange(false);
+
 		const values_vector_t& values = iter->second;
 		for (values_vector_t::const_iterator
 				 value_it = values.begin(),
@@ -385,6 +390,8 @@ void LLCOFWearables::refresh()
 				list->selectItemByValue(*value_it);
 			}
 		}
+
+		list->setCommitOnSelectionChange(true);
 	}
 }
 
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index fa7e06d3236a92f7df37bbd0fd9b1e757c1c5ecc..29ce3449d17ef9559b42f7fa556e82fb04df8bef 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -53,6 +53,8 @@
 #include "lltooldraganddrop.h"
 #include "llviewermenu.h"
 #include "llviewertexturelist.h"
+#include "llsidepanelinventory.h"
+#include "llsidetray.h"
 
 const std::string FILTERS_FILENAME("filters.xml");
 
@@ -1163,6 +1165,12 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
 		return FALSE;
 	}
 
+	if (command_name == "share")
+	{
+		LLSidepanelInventory* parent = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+		return parent ? parent->canShare() : FALSE;
+	}
+
 	return TRUE;
 }
 
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index 951fdd630ca5c921b9252177a3060ada2030cf40..f2f2509f9a5cfd57c92acf20ac1babd9947b46fc 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -58,6 +58,9 @@ class LLSidepanelInventory : public LLPanel
 	void showTaskInfoPanel();
 	void showInventoryPanel();
 
+	// checks can share selected item(s)
+	bool canShare();
+
 protected:
 	// Tracks highlighted (selected) item in inventory panel.
 	LLInventoryItem *getSelectedItem();
@@ -65,8 +68,6 @@ class LLSidepanelInventory : public LLPanel
 	void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
 	// "wear", "teleport", etc.
 	void performActionOnSelection(const std::string &action);
-	bool canShare();
-
 	void updateVerbs();
 
 	//
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
index 62365f7cc281b6398693d82dd6fb7998007fb68a..c3947000816edb47eaa692dada293ee85067a293 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_gear_default.xml
@@ -81,6 +81,17 @@
 			 function="Inventory.GearDefault.Enable"
 			 parameter="save_texture" />
         </menu_item_call>
+    <menu_item_call
+     label="Share"
+     layout="topleft"
+     name="Share"
+     visible="true">
+     <on_click
+         function="Inventory.Share" />
+     <on_enable
+         function="Inventory.GearDefault.Enable"
+         parameter="share" />
+    </menu_item_call>
     <menu_item_call 
          label="Find Original"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
index d5943ea156ecc4802d005870781499866a42060d..f438e3d42d3f8bf2c0ce99a034529effa330e703 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -22,40 +22,40 @@
      width="311">
         <accordion_tab
          layout="topleft"
-         name="tab_attachments"
-         title="Attachments">
+         name="tab_clothing"
+         title="Clothing">
             <flat_list_view
              allow_select="true"
              follows="all"
              height="10"
              item_pad="3"
+             keep_selection_visible_on_reshape="true"
              layout="topleft"
              left="0"
-             keep_selection_visible_on_reshape="true"
              multi_select="true"
-             name="list_attachments"
+             name="list_clothing"
              top="0"
-             width="311">
-              <flat_list_view.no_items_text
-               value="No attachments worn" />
-              </flat_list_view>
+             width="311" />
         </accordion_tab>
         <accordion_tab
          layout="topleft"
-         name="tab_clothing"
-         title="Clothing">
+         name="tab_attachments"
+         title="Attachments">
             <flat_list_view
              allow_select="true"
              follows="all"
              height="10"
              item_pad="3"
-             keep_selection_visible_on_reshape="true"
              layout="topleft"
              left="0"
+             keep_selection_visible_on_reshape="true"
              multi_select="true"
-             name="list_clothing"
+             name="list_attachments"
              top="0"
-             width="311" />
+             width="311">
+              <flat_list_view.no_items_text
+               value="No attachments worn" />
+              </flat_list_view>
         </accordion_tab>
         <accordion_tab
          layout="topleft"