STORM-288 FIXED New name resets to old if change it on 'Item Profile' panel while fetching inventory

Reason: 'item info panel' updated EACH time some inventory object changed

Fix: update 'item info panel' only if changed inventory object is the object for which 'item profile panel' is shown
meow-7.2.2
Paul Guslisty 2010-11-01 15:12:14 +02:00
parent 42b49397d2
commit db56afd656
2 changed files with 22 additions and 3 deletions

View File

@ -68,10 +68,22 @@ private:
void LLItemPropertiesObserver::changed(U32 mask)
{
// if there's a change we're interested in.
if((mask & (LLInventoryObserver::LABEL | LLInventoryObserver::INTERNAL | LLInventoryObserver::REMOVE)) != 0)
const std::set<LLUUID>& mChangedItemIDs = gInventory.getChangedIDs();
std::set<LLUUID>::const_iterator it;
const LLUUID& object_id = mFloater->getObjectID();
for (it = mChangedItemIDs.begin(); it != mChangedItemIDs.end(); it++)
{
mFloater->dirty();
// set dirty for 'item profile panel' only if changed item is the item for which 'item profile panel' is shown (STORM-288)
if (*it == object_id)
{
// if there's a change we're interested in.
if((mask & (LLInventoryObserver::LABEL | LLInventoryObserver::INTERNAL | LLInventoryObserver::REMOVE)) != 0)
{
mFloater->dirty();
}
}
}
}
@ -179,6 +191,11 @@ void LLSidepanelItemInfo::setItemID(const LLUUID& item_id)
mItemID = item_id;
}
const LLUUID& LLSidepanelItemInfo::getObjectID() const
{
return mObjectID;
}
void LLSidepanelItemInfo::reset()
{
LLSidepanelInventorySubpanel::reset();

View File

@ -54,6 +54,8 @@ public:
void setItemID(const LLUUID& item_id);
void setEditMode(BOOL edit);
const LLUUID& getObjectID() const;
protected:
/*virtual*/ void refresh();
/*virtual*/ void save();