summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorPaul Guslisty <pguslisty@productengine.com>2010-02-02 14:33:38 +0200
committerPaul Guslisty <pguslisty@productengine.com>2010-02-02 14:33:38 +0200
commit81487c2a4c05042b35da114037068f478035a76a (patch)
treedc678be918f8ad25d7b75e837e02bd15dc973da7 /indra
parent61609d93bbc01dc5a6f87c4afbc6e0faad1f1711 (diff)
Fxed normal bug EXT - 4106 (Tabbed IM floater isn't highlighting labels when new IMs are received)
--HG-- branch : product-engine
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llimfloatercontainer.cpp16
-rw-r--r--indra/newview/llimfloatercontainer.h4
2 files changed, 19 insertions, 1 deletions
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 784c2eaaf9..22eb9a51d2 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -52,6 +52,7 @@ LLIMFloaterContainer::~LLIMFloaterContainer(){}
BOOL LLIMFloaterContainer::postBuild()
{
+ LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
// Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button
// mTabContainer will be initialized in LLMultiFloater::addChild()
return TRUE;
@@ -162,6 +163,21 @@ void LLIMFloaterContainer::onCloseFloater(LLUUID id)
{
LLAvatarPropertiesProcessor::instance().removeObserver(id, this);
LLGroupMgr::instance().removeObserver(id, this);
+
+}
+
+void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data)
+{
+ LLUUID session_id = data["from_id"].asUUID();
+ LLFloater* floaterp = get_ptr_in_map(mSessions, session_id);
+ LLFloater* current_floater = LLMultiFloater::getActiveFloater();
+
+ if(floaterp && current_floater && floaterp != current_floater)
+ {
+ if(LLMultiFloater::isFloaterFlashing(floaterp))
+ LLMultiFloater::setFloaterFlashing(floaterp, FALSE);
+ LLMultiFloater::setFloaterFlashing(floaterp, TRUE);
+ }
}
LLIMFloaterContainer* LLIMFloaterContainer::findInstance()
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index e4a32dbe1d..bc06f0cbd3 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -66,10 +66,12 @@ public:
static LLIMFloaterContainer* getInstance();
private:
- typedef std::map<LLUUID,LLPanel*> avatarID_panel_map_t;
+ typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
avatarID_panel_map_t mSessions;
void onCloseFloater(LLUUID avatar_id);
+
+ void onNewMessageReceived(const LLSD& data);
};
#endif // LL_LLIMFLOATERCONTAINER_H