diff options
| author | Loren Shih <seraph@lindenlab.com> | 2010-03-17 17:55:12 -0400 |
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2010-03-17 17:55:12 -0400 |
| commit | 896b88063ed0e08362c9e277e7ef8aba5afef0db (patch) | |
| tree | dd876340dfc0d453b4e3fcd53ebbfa609d37473c /indra/newview/llagentwearables.cpp | |
| parent | 6e761bb5f2fac9155b03b74008cfca141968ae6c (diff) | |
EXT-6252 : "Duplicate items (not links) in inventory are both displayed in bold as (worn) when only one is actually worn"
Simple special-case fix for this specific issue, although I added a comment to llwearablelist.h that eventually the whole LLWearableList class will need some redesign.
Core issue is that you can have multiple itemIDs pointing to the same assetID and LLWearableList doesn't account for this possibility during lookup-wearable-by-assetID operations.
Diffstat (limited to 'indra/newview/llagentwearables.cpp')
| -rw-r--r-- | indra/newview/llagentwearables.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index ea10917901..65503d4998 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1702,6 +1702,16 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it LLWearable* old_wearable = getWearable(type, 0); if (old_wearable) { + // Special case where you're putting on a wearable that has the same assetID + // as the previous (e.g. wear a shirt then wear a copy of that shirt) since in this + // case old_wearable == new_wearable. + if (old_wearable == new_wearable) + { + old_wearable->setLabelUpdated(); + new_wearable->setName(new_item->getName()); + new_wearable->setItemID(new_item->getUUID()); + } + const LLUUID& old_item_id = getWearableItemID(type, 0); if ((old_wearable->getAssetID() == new_wearable->getAssetID()) && (old_item_id == new_item->getUUID())) @@ -1717,7 +1727,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it continue; } } - + new_wearable->setItemID(new_item->getUUID()); setWearable(type,0,new_wearable); } |
