diff --git a/indra/newview/llfloatermarketplacelistings.cpp b/indra/newview/llfloatermarketplacelistings.cpp
index dcf27baae7f9aec010446c7171d8e083be7dbbfc..59e3e8442e43f464d1dcf415c953f6871ce5587c 100755
--- a/indra/newview/llfloatermarketplacelistings.cpp
+++ b/indra/newview/llfloatermarketplacelistings.cpp
@@ -65,20 +65,24 @@ BOOL LLPanelMarketplaceListings::postBuild()
 	LLInventoryPanel* panel = getChild<LLInventoryPanel>("All Items");
 	panel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME);
 	panel->getFilter().markDefault();
-    
+    panel->setSelectCallback(boost::bind(&LLPanelMarketplaceListings::onSelectionChange, this, panel, _1, _2));
+
     // Set filters on the 3 prefiltered panels
 	panel = getChild<LLInventoryPanel>("Active Items");
 	panel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME);
 	panel->getFilter().setFilterMarketplaceActiveFolders();
 	panel->getFilter().markDefault();
+    panel->setSelectCallback(boost::bind(&LLPanelMarketplaceListings::onSelectionChange, this, panel, _1, _2));
 	panel = getChild<LLInventoryPanel>("Inactive Items");
 	panel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME);
 	panel->getFilter().setFilterMarketplaceInactiveFolders();
 	panel->getFilter().markDefault();
+    panel->setSelectCallback(boost::bind(&LLPanelMarketplaceListings::onSelectionChange, this, panel, _1, _2));
 	panel = getChild<LLInventoryPanel>("Unassociated Items");
 	panel->getFolderViewModel()->setSorter(LLInventoryFilter::SO_FOLDERS_BY_NAME);
 	panel->getFilter().setFilterMarketplaceUnassociatedFolders();
 	panel->getFilter().markDefault();
+    panel->setSelectCallback(boost::bind(&LLPanelMarketplaceListings::onSelectionChange, this, panel, _1, _2));
 	
     return LLPanel::postBuild();
 }
@@ -88,6 +92,11 @@ void LLPanelMarketplaceListings::draw()
 	LLPanel::draw();
 }
 
+void LLPanelMarketplaceListings::onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action)
+{
+	panel->onSelectionChange(items, user_action);
+}
+
 void LLPanelMarketplaceListings::onAddButtonClicked()
 {
 	LLUUID marketplacelistings_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MARKETPLACE_LISTINGS, true);
diff --git a/indra/newview/llfloatermarketplacelistings.h b/indra/newview/llfloatermarketplacelistings.h
index 03c4fa6818d961c29c2128874fb42378d041b518..c9fe68a70c0758ddb3325baeda15eac44aa804f7 100755
--- a/indra/newview/llfloatermarketplacelistings.h
+++ b/indra/newview/llfloatermarketplacelistings.h
@@ -55,6 +55,7 @@ class LLPanelMarketplaceListings : public LLPanel
 	void onViewSortMenuItemClicked(const LLSD& userdata);
 	bool onViewSortMenuItemCheck(const LLSD& userdata);
 	void onAddButtonClicked();
+	void onSelectionChange(LLInventoryPanel *panel, const std::deque<LLFolderViewItem*>& items, BOOL user_action);
     
     LLInventoryPanel* mAllPanel;
     LLInventoryFilter::ESortOrderType mSortOrder;
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index d38f6cffca240d9e0fd30636c91176fcdd1d36f8..4283643c7650fabb8e5b7be9e33b23c787502434 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -897,7 +897,7 @@ void LLInvFVBridge::addMarketplaceContextMenuOptions(U32 flags,
             }
         }
     }
-    // Options available at all levels on all items
+    // Options available at all levels on items and categories
     items.push_back(std::string("Marketplace Show Listing"));
     LLUUID listing_folder_id = nested_parent_id(mUUID,depth);
     if (!LLMarketplaceData::instance().isListed(listing_folder_id))
@@ -3663,6 +3663,10 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 	{
 		disabled_items.push_back(std::string("New Folder"));
 	}
+    if (isMarketplaceListingsFolder())
+    {
+		addMarketplaceContextMenuOptions(flags, items, disabled_items);
+    }
 	if(trash_id == mUUID)
 	{
 		// This is the trash.
@@ -3678,11 +3682,6 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 	{
 		addOutboxContextMenuOptions(flags, items, disabled_items);
 	}
-    else if (isMarketplaceListingsFolder())
-    {
-		addMarketplaceContextMenuOptions(flags, items, disabled_items);
-        getClipboardEntries(false, items, disabled_items, flags);
-    }
 	else if(isAgentInventory()) // do not allow creating in library
 	{
 		LLViewerInventoryCategory *cat = getCategory();
@@ -3697,12 +3696,14 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 				{
 					items.push_back(std::string("New Folder"));
 				}
-
-				items.push_back(std::string("New Script"));
-				items.push_back(std::string("New Note"));
-				items.push_back(std::string("New Gesture"));
-				items.push_back(std::string("New Clothes"));
-				items.push_back(std::string("New Body Parts"));
+                if (!isMarketplaceListingsFolder())
+                {
+                    items.push_back(std::string("New Script"));
+                    items.push_back(std::string("New Note"));
+                    items.push_back(std::string("New Gesture"));
+                    items.push_back(std::string("New Clothes"));
+                    items.push_back(std::string("New Body Parts"));
+                }
 			}
 #if SUPPORT_ENSEMBLES
 			// Changing folder types is an unfinished unsupported feature
@@ -3746,9 +3747,9 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 		LLIsType is_object( LLAssetType::AT_OBJECT );
 		LLIsType is_gesture( LLAssetType::AT_GESTURE );
 
-		if (checkFolderForContentsOfType(model, is_wearable)  ||
-			checkFolderForContentsOfType(model, is_object) ||
-			checkFolderForContentsOfType(model, is_gesture) )
+		if (checkFolderForContentsOfType(model, is_wearable) ||
+            checkFolderForContentsOfType(model, is_object)   ||
+            checkFolderForContentsOfType(model, is_gesture)    )
 		{
 			mWearables=TRUE;
 		}
@@ -3770,7 +3771,7 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 	}
 	// Add menu items that are dependent on the contents of the folder.
 	LLViewerInventoryCategory* category = (LLViewerInventoryCategory *) model->getCategory(mUUID);
-	if (category && !isMarketplaceListingsFolder())
+	if (category)
 	{
 		uuid_vec_t folders;
 		folders.push_back(category->getUUID());
@@ -3789,8 +3790,8 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t&   items
 		{
 			// it's all on its way - add an observer, and the inventory will call done for us when everything is here.
 			gInventory.addObserver(fetch);
-	}
-}
+        }
+    }
 }
 
 void LLFolderBridge::buildContextMenuFolderOptions(U32 flags,   menuentry_vec_t& items, menuentry_vec_t& disabled_items)
@@ -3807,6 +3808,12 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags,   menuentry_vec_t&
 	if (isItemInTrash()) return;
 	if (!isAgentInventory()) return;
 	if (isOutboxFolder()) return;
+    
+	if (!isItemRemovable())
+	{
+		disabled_items.push_back(std::string("Delete"));
+	}
+    if (isMarketplaceListingsFolder()) return;
 
 	LLFolderType::EType type = category->getPreferredType();
 	const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
@@ -3826,11 +3833,6 @@ void LLFolderBridge::buildContextMenuFolderOptions(U32 flags,   menuentry_vec_t&
 		}
 	}
 
-	if (!isItemRemovable())
-	{
-		disabled_items.push_back(std::string("Delete"));
-	}
-
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 	if (LLFolderType::lookupIsProtectedType(type))
 	{