diff --git a/indra/newview/floaterlocalassetbrowse.cpp b/indra/newview/floaterlocalassetbrowse.cpp index abcb19c98..24b6a192f 100644 --- a/indra/newview/floaterlocalassetbrowse.cpp +++ b/indra/newview/floaterlocalassetbrowse.cpp @@ -858,9 +858,9 @@ void FloaterLocalAssetBrowser::onClickUpload(void* userdata) void FloaterLocalAssetBrowser::onChooseBitmapList() { - bool button_status = mBitmapList->isEmpty(); - mDelBtn->setEnabled(!button_status); - mUploadBtn->setEnabled(!button_status); + bool button_status = !mBitmapList->isEmpty() && mBitmapList->getFirstSelected(); + mDelBtn->setEnabled(button_status); + mUploadBtn->setEnabled(button_status); UpdateRightSide(); } @@ -943,7 +943,7 @@ void FloaterLocalAssetBrowser::UpdateBitmapScrollList() } } - sLFInstance->UpdateRightSide(); + sLFInstance->onChooseBitmapList(); } void FloaterLocalAssetBrowser::UpdateRightSide() diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 643fe5f0e..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) @@ -4423,7 +4440,6 @@ void wear_multiple(const uuid_vec_t& ids, bool replace) // SLapp for easy-wearing of a stock (library) avatar // -/* class LLWearFolderHandler : public LLCommandHandler { public: @@ -4453,4 +4469,4 @@ public: } }; -LLWearFolderHandler gWearFolderHandler;*/ +LLWearFolderHandler gWearFolderHandler; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index ba83afd25..210d91062 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -6146,7 +6146,7 @@ class LLWorldCreateLandmark : public view_listener_t create_inventory_item(gAgent.getID(), gAgent.getSessionID(), folder_id, LLTransactionID::tnull, - pos_string, pos_string, // name, desc + pos_string, agent_parcel->getDesc(), // name, desc, // name, desc LLAssetType::AT_LANDMARK, LLInventoryType::IT_LANDMARK, NOT_WEARABLE, PERM_ALL, diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index ea9e5605c..dbb276389 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -40,6 +40,7 @@ #include "llviewercontrol.h" #include "lldir.h" #include "llflexibleobject.h" +#include "llfloaterinspect.h" #include "llfloatertools.h" #include "llmaterialid.h" #include "llmaterialtable.h" @@ -3643,7 +3644,7 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& if (mDrawable->isState(LLDrawable::RIGGED)) { static const LLCachedControl allow_mesh_picking("SGAllowRiggedMeshSelection"); - if (allow_mesh_picking && gFloaterTools->getVisible() && getAvatar()->isSelf()) + if (allow_mesh_picking && (gFloaterTools->getVisible() || LLFloaterInspect::instanceExists())) { updateRiggedVolume(); //genBBoxes(FALSE); @@ -3825,10 +3826,8 @@ BOOL LLVOVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& bool LLVOVolume::treatAsRigged() { - return gFloaterTools->getVisible() && + return (gFloaterTools->getVisible() || LLFloaterInspect::instanceExists()) && isAttachment() && - getAvatar() && - getAvatar()->isSelf() && mDrawable.notNull() && mDrawable->isState(LLDrawable::RIGGED); } diff --git a/indra/newview/skins/default/xui/en-us/floater_tools.xml b/indra/newview/skins/default/xui/en-us/floater_tools.xml index c6f7658b3..2a07de761 100644 --- a/indra/newview/skins/default/xui/en-us/floater_tools.xml +++ b/indra/newview/skins/default/xui/en-us/floater_tools.xml @@ -52,7 +52,7 @@ function="BuildTool.setTool" parameter="Land" /> -