From f6fceac081a1f2d165679ce3eb233e97806cebe7 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 15:51:49 +0200
Subject: [PATCH] fixed EXT-3841 [BSI] "Send IM..." choosable in IM floater
 context menu

--HG--
branch : product-engine
---
 indra/llcommon/llchat.h         | 4 +++-
 indra/newview/llchathistory.cpp | 8 ++++++++
 indra/newview/llimfloater.cpp   | 1 +
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h
index 5af7991006..46456882ba 100644
--- a/indra/llcommon/llchat.h
+++ b/indra/llcommon/llchat.h
@@ -87,7 +87,8 @@ public:
 		mTimeStr(),
 		mPosAgent(),
 		mURL(),
-		mChatStyle(CHAT_STYLE_NORMAL)
+		mChatStyle(CHAT_STYLE_NORMAL),
+		mSessionID()
 	{ }
 	
 	std::string		mText;		// UTF-8 line of text
@@ -102,6 +103,7 @@ public:
 	LLVector3		mPosAgent;
 	std::string		mURL;
 	EChatStyle		mChatStyle;
+	LLUUID			mSessionID;
 };
 
 #endif
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index d6a7edee5b..2cdbd18996 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -34,6 +34,7 @@
 
 #include "llinstantmessage.h"
 
+#include "llimview.h"
 #include "llchathistory.h"
 #include "llpanel.h"
 #include "lluictrlfactory.h"
@@ -183,6 +184,7 @@ public:
 	void setup(const LLChat& chat,const LLStyle::Params& style_params) 
 	{
 		mAvatarID = chat.mFromID;
+		mSessionID = chat.mSessionID;
 		mSourceType = chat.mSourceType;
 		gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
 		if(chat.mFromID.isNull())
@@ -305,6 +307,11 @@ protected:
 				menu->setItemEnabled("Remove Friend", false);
 			}
 
+			if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
+			{
+				menu->setItemVisible("Send IM", false);
+			}
+
 			menu->buildDrawLabels();
 			menu->updateParent(LLMenuGL::sMenuContainer);
 			LLMenuGL::showPopup(this, menu, x, y);
@@ -344,6 +351,7 @@ protected:
 	std::string			mFirstName;
 	std::string			mLastName;
 	std::string			mFrom;
+	LLUUID				mSessionID;
 
 	S32					mMinUserNameWidth;
 };
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 73597e7de3..c0f22fcea2 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -599,6 +599,7 @@ void LLIMFloater::updateMessages()
 
 			LLChat chat;
 			chat.mFromID = from_id;
+			chat.mSessionID = mSessionID;
 			chat.mFromName = from;
 			chat.mText = message;
 			chat.mTimeStr = time;
-- 
GitLab