diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llchiclet.cpp | 7 | ||||
-rw-r--r-- | indra/newview/llchiclet.h | 9 |
2 files changed, 15 insertions, 1 deletions
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 8d627dc4c2..6b9e616e47 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -135,6 +135,13 @@ LLIMWellChiclet::LLIMWellChiclet(const Params& p) { LLIMModel::instance().addNewMsgCallback(boost::bind(&LLIMWellChiclet::messageCountChanged, this, _1)); LLIMModel::instance().addNoUnreadMsgsCallback(boost::bind(&LLIMWellChiclet::messageCountChanged, this, _1)); + + LLIMMgr::getInstance()->addSessionObserver(this); +} + +LLIMWellChiclet::~LLIMWellChiclet() +{ + LLIMMgr::getInstance()->removeSessionObserver(this); } void LLIMWellChiclet::messageCountChanged(const LLSD& session_data) diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index 8727e97aad..609ce16713 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -39,6 +39,7 @@ #include "lltextbox.h" #include "lloutputmonitorctrl.h" #include "llgroupmgr.h" +#include "llimview.h" class LLVoiceControlPanel; class LLMenuGL; @@ -787,9 +788,15 @@ protected: * * It displays a count of unread messages from other participants in all IM sessions. */ -class LLIMWellChiclet : public LLSysWellChiclet +class LLIMWellChiclet : public LLSysWellChiclet, LLIMSessionObserver { friend class LLUICtrlFactory; +public: + virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id) {} + virtual void sessionRemoved(const LLUUID& session_id) { messageCountChanged(LLSD()); } + virtual void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id) {} + + ~LLIMWellChiclet(); protected: LLIMWellChiclet(const Params& p); |