Skip to content
Snippets Groups Projects
Commit e6d5cc3b authored by Brad Payne (Vir Linden)'s avatar Brad Payne (Vir Linden)
Browse files

EXT-8283 FIX, EXT-8360 FIX - original fixes got broken, presumably during some merge

parent cf58852a
No related branches found
No related tags found
No related merge requests found
...@@ -396,7 +396,11 @@ void LLCOFWearables::refresh() ...@@ -396,7 +396,11 @@ void LLCOFWearables::refresh()
return; return;
} }
if (mCOFVersion == catp->getVersion()) return; // BAP - this check has to be removed because an item name change does not
// change cat version - ie, checking version is not a complete way
// of finding out whether anything has changed in this category.
//if (mCOFVersion == catp->getVersion()) return;
mCOFVersion = catp->getVersion(); mCOFVersion = catp->getVersion();
typedef std::vector<LLSD> values_vector_t; typedef std::vector<LLSD> values_vector_t;
......
...@@ -708,7 +708,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask) ...@@ -708,7 +708,7 @@ void LLInventoryCategoriesObserver::changed(U32 mask)
const S32 current_num_known_descendents = cats->count() + items->count(); const S32 current_num_known_descendents = cats->count() + items->count();
LLCategoryData cat_data = (*iter).second; LLCategoryData& cat_data = (*iter).second;
bool cat_changed = false; bool cat_changed = false;
...@@ -722,11 +722,17 @@ void LLInventoryCategoriesObserver::changed(U32 mask) ...@@ -722,11 +722,17 @@ void LLInventoryCategoriesObserver::changed(U32 mask)
} }
// If any item names have changed, update the name hash // If any item names have changed, update the name hash
LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id); // Only need to check if (a) name hash has not previously been
if (cat_data.mItemNameHash != item_name_hash) // computed, or (b) a name has changed.
if (!cat_data.mIsNameHashInitialized || (mask & LLInventoryObserver::LABEL))
{ {
cat_data.mItemNameHash = item_name_hash; LLMD5 item_name_hash = gInventory.hashDirectDescendentNames(cat_id);
cat_changed = true; if (cat_data.mItemNameHash != item_name_hash)
{
cat_data.mIsNameHashInitialized = true;
cat_data.mItemNameHash = item_name_hash;
cat_changed = true;
}
} }
// If anything has changed above, fire the callback. // If anything has changed above, fire the callback.
...@@ -773,7 +779,8 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t ...@@ -773,7 +779,8 @@ bool LLInventoryCategoriesObserver::addCategory(const LLUUID& cat_id, callback_t
if (can_be_added) if (can_be_added)
{ {
mCategoryMap.insert(category_map_value_t(cat_id, LLCategoryData(cb, version, current_num_known_descendents))); mCategoryMap.insert(category_map_value_t(
cat_id,LLCategoryData(cat_id, cb, version, current_num_known_descendents)));
} }
return can_be_added; return can_be_added;
...@@ -783,3 +790,15 @@ void LLInventoryCategoriesObserver::removeCategory(const LLUUID& cat_id) ...@@ -783,3 +790,15 @@ void LLInventoryCategoriesObserver::removeCategory(const LLUUID& cat_id)
{ {
mCategoryMap.erase(cat_id); mCategoryMap.erase(cat_id);
} }
LLInventoryCategoriesObserver::LLCategoryData::LLCategoryData(
const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents)
: mCatID(cat_id)
, mCallback(cb)
, mVersion(version)
, mDescendentsCount(num_descendents)
, mIsNameHashInitialized(false)
{
mItemNameHash.finalize();
}
...@@ -295,18 +295,14 @@ public: ...@@ -295,18 +295,14 @@ public:
protected: protected:
struct LLCategoryData struct LLCategoryData
{ {
LLCategoryData(callback_t cb, S32 version, S32 num_descendents) LLCategoryData(const LLUUID& cat_id, callback_t cb, S32 version, S32 num_descendents);
: mCallback(cb)
, mVersion(version)
, mDescendentsCount(num_descendents)
{
mItemNameHash.finalize();
}
callback_t mCallback; callback_t mCallback;
S32 mVersion; S32 mVersion;
S32 mDescendentsCount; S32 mDescendentsCount;
LLMD5 mItemNameHash; LLMD5 mItemNameHash;
bool mIsNameHashInitialized;
LLUUID mCatID;
}; };
typedef std::map<LLUUID, LLCategoryData> category_map_t; typedef std::map<LLUUID, LLCategoryData> category_map_t;
......
...@@ -1100,7 +1100,11 @@ void LLPanelOutfitEdit::getSelectedItemsUUID(uuid_vec_t& uuid_list) ...@@ -1100,7 +1100,11 @@ void LLPanelOutfitEdit::getSelectedItemsUUID(uuid_vec_t& uuid_list)
void LLPanelOutfitEdit::onCOFChanged() void LLPanelOutfitEdit::onCOFChanged()
{ {
//the panel is only updated when is visible to a user //the panel is only updated when is visible to a user
if (!isInVisibleChain()) return;
// BAP - this check has to be removed because otherwise item name
// changes made when the panel is not visible will not be
// propagated to the panel.
// if (!isInVisibleChain()) return;
update(); update();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment