diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 079cd7103966e1cab408105d26775fc66944c8bb..a56705d969e4e9d18639e3590d46ba7b86a6cca3 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -98,7 +98,6 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
 
 void LLFloaterIMContainer::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, BOOL has_offline_msg)
 {
-	llinfos << "Merov debug : sessionAdded, uuid = " << session_id << ", name = " << name << llendl;
 	addConversationListItem(session_id);
 	LLFloaterIMSessionTab::addToHost(session_id);
 }
@@ -998,8 +997,6 @@ void LLFloaterIMContainer::doToSelected(const LLSD& userdata)
     {
     	getParticipantUUIDs(selected_uuids);
 		
-		llinfos << "Merov debug : doToSelected, command = " << command << ", name = " << conversationItem->getName() << ", uuid size = " << selected_uuids.size() << llendl;
-
     	if(conversationItem->getType() == LLConversationItem::CONV_PARTICIPANT)
     	{
     		doToParticipants(command, selected_uuids);
@@ -1070,22 +1067,25 @@ bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_v
 	}
 
 	// Handle all other options
-    if (item == std::string("can_block"))
+	if (("can_invite" == item) || ("can_chat_history" == item) || ("can_share" == item) || ("can_pay" == item))
+	{
+		// Those menu items are enable only if a single avatar is selected
+		return is_single_select;
+	}
+    else if ("can_block" == item)
     {
         return (is_single_select ? LLAvatarActions::canBlock(single_id) : false);
     }
-    else if (item == std::string("can_add"))
+    else if ("can_add" == item)
     {
         // We can add friends if:
         // - there is only 1 selected avatar (EXT-7389)
-        // - this avatar is not a friend yet
+        // - this avatar is not already a friend
         return (is_single_select ? !LLAvatarActions::isFriend(single_id) : false);
     }
-    else if (item == std::string("can_delete"))
+    else if ("can_delete" == item)
     {
-        // We can remove friends if:
-        // - there are selected people
-        // - and there are only friends among the selection
+        // We can remove friends if there are only friends among the selection
         bool result = true;
         for (uuid_vec_t::const_iterator id = uuids.begin(); id != uuids.end(); ++id)
         {
@@ -1093,20 +1093,21 @@ bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_v
         }
         return result;
     }
-    else if (item == std::string("can_call"))
+    else if ("can_call" == item)
     {
         return LLAvatarActions::canCall();
     }
-    else if (item == std::string("can_show_on_map"))
+    else if ("can_show_on_map" == item)
     {
         return (is_single_select ? (LLAvatarTracker::instance().isBuddyOnline(single_id) && is_agent_mappable(single_id)) || gAgent.isGodlike() : false);
     }
-    else if (item == std::string("can_offer_teleport"))
+    else if ("can_offer_teleport" == item)
     {
 		return LLAvatarActions::canOfferTeleport(uuids);
     }
-	else if ("can_moderate_voice" == item || "can_allow_text_chat" == item || "can_mute" == item || "can_unmute" == item)
+	else if (("can_moderate_voice" == item) || ("can_allow_text_chat" == item) || ("can_mute" == item) || ("can_unmute" == item))
 	{
+		// *TODO : get that out of here...
 		return enableModerateContextMenuItem(item);
 	}
 
@@ -1117,14 +1118,19 @@ bool LLFloaterIMContainer::enableContextMenuItem(const std::string& item, uuid_v
 bool LLFloaterIMContainer::checkContextMenuItem(const LLSD& userdata)
 {
     std::string item = userdata.asString();
-    uuid_vec_t mUUIDs;
-    getParticipantUUIDs(mUUIDs);
+	uuid_vec_t uuids;
+	getParticipantUUIDs(uuids);
+	
+	return checkContextMenuItem(item, uuids);
+}
 
-    if(mUUIDs.size() > 0 )
+bool LLFloaterIMContainer::checkContextMenuItem(const std::string& item, uuid_vec_t& uuids)
+{
+    if (uuids.size() == 1)
     {
 		if ("is_blocked" == item)
 		{
-			return LLAvatarActions::isBlocked(mUUIDs.front());
+			return LLAvatarActions::isBlocked(uuids.front());
 		}
 		else if ("is_allowed_text_chat" == item)
 		{
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 3d82ccfc211b2d19134bfdfcea986fc5be889d42..bec0c3ef14d97a6a71c92a9a95a0c705c624ac49 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -101,9 +101,7 @@ class LLFloaterIMContainer
 
 	// Handling of lists of participants is public so to be common with llfloatersessiontab
 	// *TODO : Find a better place for this.
-    void doToSelected(const LLSD& userdata);
-    bool checkContextMenuItem(const LLSD& userdata);
-    bool enableContextMenuItem(const LLSD& userdata);
+    bool checkContextMenuItem(const std::string& item, uuid_vec_t& selectedIDS);
     bool enableContextMenuItem(const std::string& item, uuid_vec_t& selectedIDS);
     void doToParticipants(const std::string& item, uuid_vec_t& selectedIDS);
 
@@ -135,6 +133,9 @@ class LLFloaterIMContainer
     void getSelectedUUIDs(uuid_vec_t& selected_uuids);
     const LLConversationItem * getCurSelectedViewModelItem();
     void getParticipantUUIDs(uuid_vec_t& selected_uuids);
+    void doToSelected(const LLSD& userdata);
+    bool checkContextMenuItem(const LLSD& userdata);
+    bool enableContextMenuItem(const LLSD& userdata);
     void doToSelectedConversation(const std::string& command, uuid_vec_t& selectedIDS);
     void doToSelectedGroup(const LLSD& userdata);
 
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index 5867eb3e84852c30ad73c90c733c331e388ef7eb..7002342c0b222c8d652802b260b10ec6ab45ac5d 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -112,6 +112,7 @@ BOOL LLFloaterIMNearbyChat::postBuild()
 {
     setIsSingleInstance(TRUE);
     BOOL result = LLFloaterIMSessionTab::postBuild();
+	
 	mInputEditor->setCommitCallback(boost::bind(&LLFloaterIMNearbyChat::onChatBoxCommit, this));
 	mInputEditor->setKeystrokeCallback(boost::bind(&onChatBoxKeystroke, _1, this));
 	mInputEditor->setFocusLostCallback(boost::bind(&onChatBoxFocusLost, _1, this));
@@ -122,24 +123,24 @@ BOOL LLFloaterIMNearbyChat::postBuild()
 //	mOutputMonitor->setVisible(FALSE);
 
 	// Register for font change notifications
-	LLViewerChat::setFontChangedCallback(boost::bind(&LLFloaterIMNearbyChat::onChatFontChange, this, _1));
+//	LLViewerChat::setFontChangedCallback(boost::bind(&LLFloaterIMNearbyChat::onChatFontChange, this, _1));
 
 	// title must be defined BEFORE call addConversationListItem() because
 	// it is used for show the item's name in the conversations list
 	setTitle(LLTrans::getString("NearbyChatTitle"));
 
 	//for menu
-	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
-	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
+//	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+//	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
 
-	enable_registrar.add("NearbyChat.Check", boost::bind(&LLFloaterIMNearbyChat::onNearbyChatCheckContextMenuItem, this, _2));
-	registrar.add("NearbyChat.Action", boost::bind(&LLFloaterIMNearbyChat::onNearbyChatContextMenuItemClicked, this, _2));
+//	enable_registrar.add("NearbyChat.Check", boost::bind(&LLFloaterIMNearbyChat::onNearbyChatCheckContextMenuItem, this, _2));
+//	registrar.add("NearbyChat.Action", boost::bind(&LLFloaterIMNearbyChat::onNearbyChatContextMenuItemClicked, this, _2));
 
-	LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_nearby_chat.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-	if(menu)
-	{
-		mPopupMenuHandle = menu->getHandle();
-	}
+//	LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_nearby_chat.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
+//	if(menu)
+//	{
+//		mPopupMenuHandle = menu->getHandle();
+//	}
 
 	// obsolete, but may be needed for backward compatibility?
 	gSavedSettings.declareS32("nearbychat_showicons_and_names", 2, "NearByChat header settings", true);
diff --git a/indra/newview/llfloaterimnearbychat.h b/indra/newview/llfloaterimnearbychat.h
index 1479746fbde636a42de6da1b215b98ff64625207..5ed639136bd34cb3855b3a87e53ca59adec5b692 100644
--- a/indra/newview/llfloaterimnearbychat.h
+++ b/indra/newview/llfloaterimnearbychat.h
@@ -117,7 +117,7 @@ class LLFloaterIMNearbyChat
 
 	/*virtual*/ void refresh();
 
-	LLHandle<LLView>	mPopupMenuHandle;
+//	LLHandle<LLView>	mPopupMenuHandle;
 	std::vector<LLChat> mMessageArchive;
 
 };
diff --git a/indra/newview/llfloaterimsessiontab.cpp b/indra/newview/llfloaterimsessiontab.cpp
index 751b3c9db86816399587e40cfcd109b0ee594b76..3fb24f52c4b595bf85f9908f7988dc2eca1d7611 100644
--- a/indra/newview/llfloaterimsessiontab.cpp
+++ b/indra/newview/llfloaterimsessiontab.cpp
@@ -71,8 +71,7 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)
 			boost::bind(&LLFloaterIMSessionTab::onIMShowModesMenuItemEnable,  this, _2));
 
 	// Right click menu handling
-	LLFloaterIMContainer* floater_container = LLFloaterIMContainer::getInstance();
-    mEnableCallbackRegistrar.add("Avatar.CheckItem",  boost::bind(&LLFloaterIMContainer::checkContextMenuItem,	floater_container, _2));
+    mEnableCallbackRegistrar.add("Avatar.CheckItem",  boost::bind(&LLFloaterIMSessionTab::checkContextMenuItem,	this, _2));
     mEnableCallbackRegistrar.add("Avatar.EnableItem", boost::bind(&LLFloaterIMSessionTab::enableContextMenuItem, this, _2));
     mCommitCallbackRegistrar.add("Avatar.DoToSelected", boost::bind(&LLFloaterIMSessionTab::doToSelected, this, _2));
 }
@@ -774,35 +773,40 @@ bool LLFloaterIMSessionTab::checkIfTornOff()
 void LLFloaterIMSessionTab::doToSelected(const LLSD& userdata)
 {
 	// Get the list of selected items in the tab
-	// Note: By construction, those can only be participants so we do not check if they are sessions or something else
     std::string command = userdata.asString();
     uuid_vec_t selected_uuids;
 	getSelectedUUIDs(selected_uuids);
 		
-	llinfos << "Merov debug : doToSelected, command = " << command << ", uuid size = " << selected_uuids.size() << llendl;
-		
 	// Perform the command (IM, profile, etc...) on the list using the general conversation container method
-	// *TODO : Move this method to LLAvatarActions
 	LLFloaterIMContainer* floater_container = LLFloaterIMContainer::getInstance();
+	// Note: By construction, those can only be participants so we can call doToParticipants() directly
 	floater_container->doToParticipants(command, selected_uuids);
 }
 
 bool LLFloaterIMSessionTab::enableContextMenuItem(const LLSD& userdata)
 {
 	// Get the list of selected items in the tab
-	// Note: By construction, those can only be participants so we do not check if they are sessions or something else
     std::string command = userdata.asString();
     uuid_vec_t selected_uuids;
 	getSelectedUUIDs(selected_uuids);
 	
-	llinfos << "Merov debug : enableContextMenuItem, command = " << command << ", uuid size = " << selected_uuids.size() << llendl;
-	
-	// Perform the command (IM, profile, etc...) on the list using the general conversation container method
-	// *TODO : Move this method to LLAvatarActions
+	// Perform the item enable test on the list using the general conversation container method
 	LLFloaterIMContainer* floater_container = LLFloaterIMContainer::getInstance();
 	return floater_container->enableContextMenuItem(command, selected_uuids);
 }
 
+bool LLFloaterIMSessionTab::checkContextMenuItem(const LLSD& userdata)
+{
+	// Get the list of selected items in the tab
+    std::string command = userdata.asString();
+    uuid_vec_t selected_uuids;
+	getSelectedUUIDs(selected_uuids);
+	
+	// Perform the item check on the list using the general conversation container method
+	LLFloaterIMContainer* floater_container = LLFloaterIMContainer::getInstance();
+	return floater_container->checkContextMenuItem(command, selected_uuids);
+}
+
 void LLFloaterIMSessionTab::getSelectedUUIDs(uuid_vec_t& selected_uuids)
 {
     const std::set<LLFolderViewItem*> selected_items = mConversationsRoot->getSelectionList();
diff --git a/indra/newview/llfloaterimsessiontab.h b/indra/newview/llfloaterimsessiontab.h
index 0154839287cbaa87df95134e53481adb36571083..8efa0955fc0649001d1a1c67241b73aa781fe3a9 100644
--- a/indra/newview/llfloaterimsessiontab.h
+++ b/indra/newview/llfloaterimsessiontab.h
@@ -158,9 +158,11 @@ class LLFloaterIMSessionTab
 
 private:
 	// Handling selection and contextual menu
-    void getSelectedUUIDs(uuid_vec_t& selected_uuids);
     void doToSelected(const LLSD& userdata);
     bool enableContextMenuItem(const LLSD& userdata);
+    bool checkContextMenuItem(const LLSD& userdata);
+	
+    void getSelectedUUIDs(uuid_vec_t& selected_uuids);
 	
 	/// Refreshes the floater at a constant rate.
 	virtual void refresh() = 0;