diff options
Diffstat (limited to 'indra/newview/llimfloatercontainer.cpp')
-rw-r--r-- | indra/newview/llimfloatercontainer.cpp | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 49521b5987..d518318b0e 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -39,6 +39,7 @@ #include "llavatariconctrl.h" #include "llgroupiconctrl.h" #include "llagent.h" +#include "lltransientfloatermgr.h" // // LLIMFloaterContainer @@ -47,9 +48,13 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed) : LLMultiFloater(seed) { mAutoResize = FALSE; + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this); } -LLIMFloaterContainer::~LLIMFloaterContainer(){} +LLIMFloaterContainer::~LLIMFloaterContainer() +{ + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this); +} BOOL LLIMFloaterContainer::postBuild() { @@ -91,29 +96,8 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, LLUUID session_id = floaterp->getKey(); - LLIconCtrl* icon = 0; - - if(gAgent.isInGroup(session_id, TRUE)) - { - LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>(); - icon_params.group_id = session_id; - icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params); - - mSessions[session_id] = floaterp; - floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); - } - else - { - LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id); - - LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>(); - icon_params.avatar_id = avatar_id; - icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params); - - mSessions[avatar_id] = floaterp; - floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id)); - } - mTabContainer->setTabImage(floaterp, icon); + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); + mSessions[session_id] = floaterp; } void LLIMFloaterContainer::onCloseFloater(LLUUID& id) @@ -123,7 +107,7 @@ void LLIMFloaterContainer::onCloseFloater(LLUUID& id) void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data) { - LLUUID session_id = data["from_id"].asUUID(); + LLUUID session_id = data["session_id"].asUUID(); LLFloater* floaterp = get_ptr_in_map(mSessions, session_id); LLFloater* current_floater = LLMultiFloater::getActiveFloater(); @@ -145,4 +129,18 @@ LLIMFloaterContainer* LLIMFloaterContainer::getInstance() return LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container"); } +void LLIMFloaterContainer::setMinimized(BOOL b) +{ + if (isMinimized() == b) return; + + LLMultiFloater::setMinimized(b); + + if (isMinimized()) return; + + if (getActiveFloater()) + { + getActiveFloater()->setVisible(TRUE); + } +} + // EOF |