From 68b687b73e69e90d605680d51452f9ddc7e48e64 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Thu, 17 Dec 2009 15:47:21 +0200 Subject: Fixed major bug EXT-3539 (IM well floater doesn't appear after IM well button has been pressed) - Fixed wrong condition to chech if item for passed session already exists in the list --HG-- branch : product-engine --- indra/newview/llsyswellwindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview/llsyswellwindow.cpp') diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index f49e7ef0da..feaa22e7f0 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -709,8 +709,8 @@ BOOL LLIMWellWindow::postBuild() void LLIMWellWindow::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) { - if (!mMessageList->getItemByValue(session_id)) return; - + if (mMessageList->getItemByValue(session_id)) return; + // For im sessions started as voice call chiclet gets created on the first incoming message if (gIMMgr->isVoiceCall(session_id)) return; -- cgit v1.2.3 From 30f3397e35df30d444f17b00c43fb6135ddc0604 Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Thu, 17 Dec 2009 17:49:08 +0200 Subject: fix. EXT-2884 Initiation of a voice call should not bring text chat (p2p, ad-hoc, group) correct chiclet handling functionality in IM when im session is started as voice call --HG-- branch : product-engine --- indra/newview/llsyswellwindow.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'indra/newview/llsyswellwindow.cpp') diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index feaa22e7f0..3769ddb1cc 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -32,6 +32,8 @@ #include "llviewerprecompiledheaders.h" // must be first include +#include "llagent.h" + #include "llflatlistview.h" #include "llfloaterreg.h" #include "llnotifications.h" @@ -857,4 +859,36 @@ void LLIMWellWindow::removeObjectRow(const LLUUID& object_id) } } + +void LLIMWellWindow::addIMRow(const LLUUID& session_id) +{ + if (hasIMRow(session_id)) return; + + LLIMModel* im_model = LLIMModel::getInstance(); + addIMRow(session_id, 0, im_model->getName(session_id), im_model->getOtherParticipantID(session_id)); + reshapeWindow(); +} + +bool LLIMWellWindow::hasIMRow(const LLUUID& session_id) +{ + return mMessageList->getItemByValue(session_id); +} + +void LLIMWellWindow::onNewIM(const LLSD& data) +{ + LLUUID from_id = data["from_id"]; + if (from_id.isNull() || gAgentID == from_id) return; + + LLUUID session_id = data["session_id"]; + if (session_id.isNull()) return; + + if (!gIMMgr->isVoiceCall(session_id)) return; + + if (hasIMRow(session_id)) return; + + //first real message, time to create chiclet + addIMRow(session_id); +} + + // EOF -- cgit v1.2.3