From 05c7270dcf21b0dae820bcd543c2712a1cb94c6f Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Thu, 20 Mar 2014 03:53:11 -0400 Subject: [PATCH] Merge changes for STORM-2008 "Remove from outfit" should deactivate gestures in a folder as well as take off items Credit to Lance Corrimal --- indra/newview/llappearancemgr.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 7692b95be..d5c0629e0 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1537,6 +1537,18 @@ void LLAppearanceMgr::takeOffOutfit(const LLUUID& cat_id) uuids_to_remove.push_back(item->getUUID()); } 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()); + } + } } // Create a copy of src_id + contents as a subfolder of dst_id. @@ -3976,6 +3988,11 @@ void LLAppearanceMgr::wearBaseOutfit() void LLAppearanceMgr::removeItemsFromAvatar(const uuid_vec_t& ids_to_remove) { + if (ids_to_remove.empty()) + { + llwarns << "called with empty list, nothing to do" << llendl; + } + // [RLVa:KB] - Checked: 2013-02-12 (RLVa-1.4.8) bool fUpdateAppearance = false; for (uuid_vec_t::const_iterator it = ids_to_remove.begin(); it != ids_to_remove.end(); ++it)