diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 95395531218bba055d8aef01753abdb74b07186a..ba034609e9a380bea1392cd5a94695d23d551d22 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -100,6 +100,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params); mSessions[session_id] = floaterp; + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); } else { @@ -110,10 +111,16 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, 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); } +void LLIMFloaterContainer::onCloseFloater(LLUUID& id) +{ + mSessions.erase(id); +} + void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type) { if (APT_PROPERTIES == type) diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index daf367da11363bbf168db786c1c8e324308ce6f9..b07ef2d71dd8e496a86873240fa70c8deb07f52f 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -51,6 +51,7 @@ class LLIMFloaterContainer : public LLMultiFloater, public LLAvatarPropertiesObs /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); + void onCloseFloater(LLUUID& id); /*virtual*/ void addFloater(LLFloater* floaterp, BOOL select_added_floater,