summaryrefslogtreecommitdiff
path: root/indra/newview/llimview.cpp
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2012-10-29 20:43:32 -0700
committerMerov Linden <merov@lindenlab.com>2012-10-29 20:43:32 -0700
commita7a24dc2f9450e0d51e7110a7eb44e0f27a010db (patch)
tree296b5344b33734babfde6aeecb36af2e005ddc32 /indra/newview/llimview.cpp
parent480c3a1acb32e98d0d64aaf7bb70e4d61e6882f6 (diff)
parent1a1a0b91c0c4400ec3febac183124314f9226127 (diff)
Pull merge from richard/viewer-chui
Diffstat (limited to 'indra/newview/llimview.cpp')
-rw-r--r--indra/newview/llimview.cpp34
1 files changed, 8 insertions, 26 deletions
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 115da54ec8..d5f1e81933 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -49,6 +49,7 @@
#include "llcallingcard.h"
#include "llchat.h"
#include "llimfloater.h"
+#include "llimfloatercontainer.h"
#include "llgroupiconctrl.h"
#include "llmd5.h"
#include "llmutelist.h"
@@ -108,7 +109,7 @@ static void on_avatar_name_cache_toast(const LLUUID& agent_id,
args["FROM"] = av_name.getCompleteName();
args["FROM_ID"] = msg["from_id"];
args["SESSION_ID"] = msg["session_id"];
- LLNotificationsUtil::add("IMToast", args, LLSD(), boost::bind(&LLIMFloater::show, msg["session_id"].asUUID()));
+ LLNotificationsUtil::add("IMToast", args, LLSD(), boost::bind(&LLIMFloaterContainer::showConversation, LLIMFloaterContainer::getInstance(), msg["session_id"].asUUID()));
}
void toast_callback(const LLSD& msg){
@@ -118,12 +119,12 @@ void toast_callback(const LLSD& msg){
return;
}
- // check whether incoming IM belongs to an active session or not
- if (LLIMModel::getInstance()->getActiveSessionID().notNull()
- && LLIMModel::getInstance()->getActiveSessionID() == msg["session_id"])
- {
- return;
- }
+ // Skip toasting if we have open window of IM with this session id
+ LLIMFloater* open_im_floater = LLIMFloater::findInstance(msg["session_id"]);
+ if (open_im_floater && open_im_floater->isInVisibleChain() && open_im_floater->hasFocus())
+ {
+ return;
+ }
// Skip toasting for system messages
if (msg["from_id"].asUUID() == LLUUID::null)
@@ -145,30 +146,11 @@ void toast_callback(const LLSD& msg){
return;
}
- // Skip toasting if we have open window of IM with this session id
- LLIMFloater* open_im_floater = LLIMFloater::findInstance(msg["session_id"]);
- if (open_im_floater && open_im_floater->getVisible())
- {
- return;
- }
-
LLAvatarNameCache::get(msg["from_id"].asUUID(),
boost::bind(&on_avatar_name_cache_toast,
_1, _2, msg));
}
-void LLIMModel::setActiveSessionID(const LLUUID& session_id)
-{
- // check if such an ID really exists
- if (!findIMSession(session_id))
- {
- llwarns << "Trying to set as active a non-existent session!" << llendl;
- return;
- }
-
- mActiveSessionID = session_id;
-}
-
LLIMModel::LLIMModel()
{
addNewMsgCallback(boost::bind(&LLIMFloater::newIMCallback, _1));