fix for normall bug EXT-3245 Icon of group in list in "Group" tab is refreshed only after restarting Viewer
--HG-- branch : product-enginemaster
parent
791465bab9
commit
e699dcb0c9
|
|
@ -225,6 +225,11 @@ mGroupID(LLUUID::null)
|
|||
}
|
||||
}
|
||||
|
||||
LLGroupListItem::~LLGroupListItem()
|
||||
{
|
||||
LLGroupMgr::getInstance()->removeObserver(this);
|
||||
}
|
||||
|
||||
//virtual
|
||||
BOOL LLGroupListItem::postBuild()
|
||||
{
|
||||
|
|
@ -277,8 +282,13 @@ void LLGroupListItem::setName(const std::string& name, const std::string& highli
|
|||
|
||||
void LLGroupListItem::setGroupID(const LLUUID& group_id)
|
||||
{
|
||||
LLGroupMgr::getInstance()->removeObserver(this);
|
||||
|
||||
mID = group_id;
|
||||
mGroupID = group_id;
|
||||
setActive(group_id == gAgent.getGroupID());
|
||||
|
||||
LLGroupMgr::getInstance()->addObserver(this);
|
||||
}
|
||||
|
||||
void LLGroupListItem::setGroupIconID(const LLUUID& group_icon_id)
|
||||
|
|
@ -337,4 +347,11 @@ void LLGroupListItem::onProfileBtnClick()
|
|||
LLGroupActions::show(mGroupID);
|
||||
}
|
||||
|
||||
void LLGroupListItem::changed(LLGroupChange gc)
|
||||
{
|
||||
LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(mID);
|
||||
if(group_data)
|
||||
setGroupIconID(group_data->mInsigniaID);
|
||||
}
|
||||
|
||||
//EOF
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "llpanel.h"
|
||||
#include "llpointer.h"
|
||||
#include "llstyle.h"
|
||||
#include "llgroupmgr.h"
|
||||
|
||||
/**
|
||||
* Auto-updating list of agent groups.
|
||||
|
|
@ -80,9 +81,11 @@ class LLIconCtrl;
|
|||
class LLTextBox;
|
||||
|
||||
class LLGroupListItem : public LLPanel
|
||||
, public LLGroupMgrObserver
|
||||
{
|
||||
public:
|
||||
LLGroupListItem();
|
||||
~LLGroupListItem();
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void setValue(const LLSD& value);
|
||||
void onMouseEnter(S32 x, S32 y, MASK mask);
|
||||
|
|
@ -96,6 +99,7 @@ public:
|
|||
void setGroupIconID(const LLUUID& group_icon_id);
|
||||
void setGroupIconVisible(bool visible);
|
||||
|
||||
virtual void changed(LLGroupChange gc);
|
||||
private:
|
||||
void setActive(bool active);
|
||||
void onInfoBtnClick();
|
||||
|
|
|
|||
|
|
@ -758,7 +758,8 @@ void LLGroupMgr::clearGroupData(const LLUUID& group_id)
|
|||
|
||||
void LLGroupMgr::addObserver(LLGroupMgrObserver* observer)
|
||||
{
|
||||
mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer));
|
||||
if( observer->getID() != LLUUID::null )
|
||||
mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer));
|
||||
}
|
||||
|
||||
void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ class LLGroupMgrObserver
|
|||
{
|
||||
public:
|
||||
LLGroupMgrObserver(const LLUUID& id) : mID(id){};
|
||||
LLGroupMgrObserver() : mID(LLUUID::null){};
|
||||
virtual ~LLGroupMgrObserver(){};
|
||||
virtual void changed(LLGroupChange gc) = 0;
|
||||
const LLUUID& getID() { return mID; }
|
||||
|
|
|
|||
Loading…
Reference in New Issue