Right clicking folder with only gestures (no worn items) should still offer remove from outfit if any gesture in that folder is active.
Also follow linked folders when wearing folders, this will make linked folders a lot more useful! Also fixes a warning and some spacing issues
This commit is contained in:
@@ -1526,7 +1526,7 @@ void LLAppearanceMgr::takeOffOutfit(const LLUUID& cat_id)
|
||||
LLInventoryModel::item_array_t items;
|
||||
LLFindWearablesEx collector(/*is_worn=*/ true, /*include_body_parts=*/ false);
|
||||
|
||||
gInventory.collectDescendentsIf(cat_id, cats, items, FALSE, collector);
|
||||
gInventory.collectDescendentsIf(cat_id, cats, items, FALSE, collector, true);
|
||||
|
||||
LLInventoryModel::item_array_t::const_iterator it = items.begin();
|
||||
const LLInventoryModel::item_array_t::const_iterator it_end = items.end();
|
||||
@@ -1539,16 +1539,16 @@ void LLAppearanceMgr::takeOffOutfit(const LLUUID& cat_id)
|
||||
removeItemsFromAvatar(uuids_to_remove);
|
||||
|
||||
// deactivate all gestures in the outfit folder
|
||||
LLInventoryModel::item_array_t gest_items;
|
||||
getDescendentsOfAssetType(cat_id, gest_items, LLAssetType::AT_GESTURE, false);
|
||||
for(U32 i = 0; i < gest_items.count(); ++i)
|
||||
{
|
||||
LLViewerInventoryItem* gest_item = gest_items.get(i);
|
||||
if (LLGestureMgr::instance().isGestureActive(gest_item->getLinkedUUID()))
|
||||
{
|
||||
LLGestureMgr::instance().deactivateGesture(gest_item->getLinkedUUID());
|
||||
}
|
||||
}
|
||||
LLInventoryModel::item_array_t gest_items;
|
||||
getDescendentsOfAssetType(cat_id, gest_items, LLAssetType::AT_GESTURE, true);
|
||||
for(S32 i = 0; i < gest_items.count(); ++i)
|
||||
{
|
||||
LLViewerInventoryItem* gest_item = gest_items.get(i);
|
||||
if (LLGestureMgr::instance().isGestureActive(gest_item->getLinkedUUID()))
|
||||
{
|
||||
LLGestureMgr::instance().deactivateGesture(gest_item->getLinkedUUID());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create a copy of src_id + contents as a subfolder of dst_id.
|
||||
@@ -1724,8 +1724,18 @@ bool LLAppearanceMgr::getCanRemoveFromCOF(const LLUUID& outfit_cat_id)
|
||||
cats,
|
||||
items,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_worn);
|
||||
return items.size() > 0;
|
||||
is_worn,
|
||||
/*follow_folder_links=*/ true);
|
||||
|
||||
if (items.size()) return true;
|
||||
|
||||
// Is there an active gesture in outfit_cat_id?
|
||||
items.reset();
|
||||
gInventory.collectDescendentsIf(outfit_cat_id, cats, items, LLInventoryModel::EXCLUDE_TRASH, LLIsType(LLAssetType::AT_GESTURE), /*follow_folder_links=*/ true);
|
||||
for(S32 i = 0; i < items.count(); ++i)
|
||||
if (LLGestureMgr::instance().isGestureActive(items.get(i)->getLinkedUUID()))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -1956,10 +1966,10 @@ void LLAppearanceMgr::linkAll(const LLUUID& cat_uuid,
|
||||
void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
|
||||
{
|
||||
LLInventoryModel::item_array_t body_items_new, wear_items_new, obj_items_new, gest_items_new;
|
||||
getDescendentsOfAssetType(category, body_items_new, LLAssetType::AT_BODYPART, false);
|
||||
getDescendentsOfAssetType(category, wear_items_new, LLAssetType::AT_CLOTHING, false);
|
||||
getDescendentsOfAssetType(category, obj_items_new, LLAssetType::AT_OBJECT, false);
|
||||
getDescendentsOfAssetType(category, gest_items_new, LLAssetType::AT_GESTURE, false);
|
||||
getDescendentsOfAssetType(category, body_items_new, LLAssetType::AT_BODYPART, true);
|
||||
getDescendentsOfAssetType(category, wear_items_new, LLAssetType::AT_CLOTHING, true);
|
||||
getDescendentsOfAssetType(category, obj_items_new, LLAssetType::AT_OBJECT, true);
|
||||
getDescendentsOfAssetType(category, gest_items_new, LLAssetType::AT_GESTURE, true);
|
||||
updateCOF(body_items_new, wear_items_new, obj_items_new, gest_items_new, append, category);
|
||||
}
|
||||
|
||||
|
||||
@@ -1766,7 +1766,8 @@ BOOL LLItemBridge::removeItem()
|
||||
cat_array,
|
||||
item_array,
|
||||
LLInventoryModel::INCLUDE_TRASH,
|
||||
is_linked_item_match);
|
||||
is_linked_item_match,
|
||||
true);
|
||||
|
||||
const U32 num_links = cat_array.size() + item_array.size();
|
||||
if (num_links > 0)
|
||||
@@ -3254,7 +3255,8 @@ BOOL LLFolderBridge::checkFolderForContentsOfType(LLInventoryModel* model, LLInv
|
||||
cat_array,
|
||||
item_array,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_type);
|
||||
is_type,
|
||||
true);
|
||||
return ((item_array.count() > 0) ? TRUE : FALSE );
|
||||
}
|
||||
|
||||
@@ -5597,7 +5599,8 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_
|
||||
cat_array,
|
||||
item_array,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_wearable);
|
||||
is_wearable,
|
||||
true);
|
||||
S32 i;
|
||||
S32 wearable_count = item_array.count();
|
||||
|
||||
@@ -5608,7 +5611,8 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_
|
||||
obj_cat_array,
|
||||
obj_item_array,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_object);
|
||||
is_object,
|
||||
true);
|
||||
S32 obj_count = obj_item_array.count();
|
||||
|
||||
// Find all gestures in this folder
|
||||
@@ -5619,7 +5623,8 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_
|
||||
gest_cat_array,
|
||||
gest_item_array,
|
||||
LLInventoryModel::EXCLUDE_TRASH,
|
||||
is_gesture);
|
||||
is_gesture,
|
||||
true);
|
||||
S32 gest_count = gest_item_array.count();
|
||||
|
||||
if (wearable_count > 0) //Loop through wearables. If worn, remove.
|
||||
|
||||
Reference in New Issue
Block a user