From ae24afec8fc9fc357b25e2ff36fd040a68f8f163 Mon Sep 17 00:00:00 2001
From: Mnikolenko Productengine <mnikolenko@productengine.com>
Date: Fri, 22 May 2020 14:37:14 +0300
Subject: [PATCH] SL-13190  Allow Edit Attached Object Position From Inventory

---
 doc/contributions.txt                         |  1 +
 indra/newview/llcofwearables.cpp              | 16 +++++++
 indra/newview/llinventorybridge.cpp           | 11 +++++
 indra/newview/llinventoryfunctions.cpp        | 45 +++++++++++++++++++
 indra/newview/llinventoryfunctions.h          |  4 ++
 indra/newview/llpanelwearing.cpp              | 37 ++++++++++++---
 indra/newview/llviewermenu.cpp                | 15 ++++++-
 indra/newview/llviewermenu.h                  |  1 +
 indra/newview/llwearableitemslist.cpp         |  8 ++--
 .../default/xui/da/menu_cof_attachment.xml    |  1 +
 .../default/xui/da/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/da/menu_wearing_tab.xml |  3 +-
 .../default/xui/de/menu_cof_attachment.xml    |  1 +
 .../default/xui/de/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/de/menu_wearing_tab.xml |  2 +-
 .../default/xui/en/menu_cof_attachment.xml    | 10 +++++
 .../skins/default/xui/en/menu_inventory.xml   | 16 +++----
 .../xui/en/menu_wearable_list_item.xml        | 13 +++---
 .../default/xui/en/menu_wearing_gear.xml      | 17 +++++--
 .../skins/default/xui/en/menu_wearing_tab.xml | 18 ++++----
 .../default/xui/es/menu_cof_attachment.xml    |  1 +
 .../default/xui/es/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/es/menu_wearing_tab.xml |  2 +-
 .../default/xui/fr/menu_cof_attachment.xml    |  1 +
 .../default/xui/fr/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/fr/menu_wearing_tab.xml |  2 +-
 .../default/xui/it/menu_cof_attachment.xml    |  1 +
 .../default/xui/it/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/it/menu_wearing_tab.xml |  2 +-
 .../default/xui/ja/menu_cof_attachment.xml    |  1 +
 .../default/xui/ja/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/ja/menu_wearing_tab.xml |  2 +-
 .../default/xui/pl/menu_cof_attachment.xml    |  1 +
 .../default/xui/pl/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/pl/menu_wearing_tab.xml |  3 +-
 .../default/xui/pt/menu_cof_attachment.xml    |  1 +
 .../default/xui/pt/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/pt/menu_wearing_tab.xml |  2 +-
 .../default/xui/ru/menu_cof_attachment.xml    |  1 +
 .../default/xui/ru/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/ru/menu_wearing_tab.xml |  2 +-
 .../default/xui/tr/menu_cof_attachment.xml    |  1 +
 .../default/xui/tr/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/tr/menu_wearing_tab.xml |  2 +-
 .../default/xui/zh/menu_cof_attachment.xml    |  1 +
 .../default/xui/zh/menu_wearing_gear.xml      |  3 +-
 .../skins/default/xui/zh/menu_wearing_tab.xml |  2 +-
 47 files changed, 219 insertions(+), 61 deletions(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 7e6d6552252..244c82a87e7 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -829,6 +829,7 @@ Khyota Wulluf
 Kimar Coba
 Kithrak Kirkorian
 Kitty Barnett
+	BUG-228664
 	BUG-228665
 	VWR-19699
 	STORM-288
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 1caefd58abb..aede623f58d 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -140,10 +140,26 @@ class CofAttachmentContextMenu : public CofContextMenu
 	{
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 
+		registrar.add("Attachment.Edit", boost::bind(handleMultiple, handle_item_edit, mUUIDs));
 		registrar.add("Attachment.Detach", boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), mUUIDs));
 
+		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
+		enable_registrar.add("Attachment.OnEnable", boost::bind(&CofAttachmentContextMenu::onEnable, this, _2));
+
 		return createFromFile("menu_cof_attachment.xml");
 	}
+
+	bool onEnable(const LLSD& userdata)
+	{
+		const std::string event_name = userdata.asString();
+
+		if ("edit" == event_name)
+		{
+			return (1 == mUUIDs.size()) && (get_is_item_editable(mUUIDs.front()));
+		}
+
+		return true;
+	}
 };
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 657c65c68d8..bb7f219ed92 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -6385,6 +6385,10 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action)
 	{
 		LLAppearanceMgr::instance().wearItemOnAvatar(mUUID, true, false); // Don't replace if adding.
 	}
+	else if ("edit" == action)
+	{
+		handle_attachment_edit(mUUID);
+	}
 	else if (isRemoveAction(action))
 	{
 		LLAppearanceMgr::instance().removeItemFromAvatar(mUUID);
@@ -6535,6 +6539,13 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			if( get_is_item_worn( mUUID ) )
 			{
 				items.push_back(std::string("Wearable And Object Separator"));
+
+				items.push_back(std::string("Wearable Edit"));
+				if ( ((flags & FIRST_SELECTED_ITEM) == 0) || !get_is_item_editable(mUUID) )
+				{
+					disabled_items.push_back(std::string("Wearable Edit"));
+				}
+
 				items.push_back(std::string("Detach From Yourself"));
 			}
 			else if (!isItemInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing() && !isCOFFolder())
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 646d92b9e15..d069aa32232 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -78,6 +78,7 @@
 #include "lltooldraganddrop.h"
 #include "lltrans.h"
 #include "lluictrlfactory.h"
+#include "llviewermenu.h"
 #include "llviewermessage.h"
 #include "llviewerfoldertype.h"
 #include "llviewerobjectlist.h"
@@ -655,6 +656,50 @@ BOOL get_is_item_removable(const LLInventoryModel* model, const LLUUID& id)
 	return TRUE;
 }
 
+bool get_is_item_editable(const LLUUID& inv_item_id)
+{
+	if (const LLInventoryItem* inv_item = gInventory.getLinkedItem(inv_item_id))
+	{
+		switch (inv_item->getType())
+		{
+			case LLAssetType::AT_BODYPART:
+			case LLAssetType::AT_CLOTHING:
+				return gAgentWearables.isWearableModifiable(inv_item_id);
+			case LLAssetType::AT_OBJECT:
+				return true;
+			default:
+                return false;;
+		}
+	}
+	return gAgentAvatarp->getWornAttachment(inv_item_id) != nullptr;
+}
+
+void handle_item_edit(const LLUUID& inv_item_id)
+{
+	if (get_is_item_editable(inv_item_id))
+	{
+		if (const LLInventoryItem* inv_item = gInventory.getLinkedItem(inv_item_id))
+		{
+			switch (inv_item->getType())
+			{
+				case LLAssetType::AT_BODYPART:
+				case LLAssetType::AT_CLOTHING:
+					LLAgentWearables::editWearable(inv_item_id);
+					break;
+				case LLAssetType::AT_OBJECT:
+					handle_attachment_edit(inv_item_id);
+					break;
+				default:
+					break;
+			}
+		}
+		else
+		{
+			handle_attachment_edit(inv_item_id);
+		}
+	}
+}
+
 BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id)
 {
 	// NOTE: This function doesn't check the folder's children.
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index fd106bc2d85..04eb9623726 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -53,6 +53,10 @@ BOOL get_can_item_be_worn(const LLUUID& id);
 
 BOOL get_is_item_removable(const LLInventoryModel* model, const LLUUID& id);
 
+// Performs the appropiate edit action (if one exists) for this item
+bool get_is_item_editable(const LLUUID& inv_item_id);
+void handle_item_edit(const LLUUID& inv_item_id);
+
 BOOL get_is_category_removable(const LLInventoryModel* model, const LLUUID& id);
 
 BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id);
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index 89cb495db94..6b187c74855 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -64,7 +64,8 @@ class LLWearingGearMenu
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
 
-		registrar.add("Gear.Edit", boost::bind(&edit_outfit));
+		registrar.add("Gear.EditItem", boost::bind(&LLWearingGearMenu::handleMultiple, this, handle_item_edit));
+		registrar.add("Gear.EditOutfit", boost::bind(&edit_outfit));
 		registrar.add("Gear.TakeOff", boost::bind(&LLPanelWearing::onRemoveItem, mPanelWearing));
 		registrar.add("Gear.Copy", boost::bind(&LLPanelWearing::copyToClipboard, mPanelWearing));
 
@@ -78,6 +79,16 @@ class LLWearingGearMenu
 	LLToggleableMenu* getMenu() { return mMenu; }
 
 private:
+	void handleMultiple(std::function<void(const LLUUID& id)> functor)
+	{
+		uuid_vec_t selected_item_ids;
+		mPanelWearing->getSelectedItemsUUIDs(selected_item_ids);
+
+		for (const LLUUID& item_id : selected_item_ids)
+		{
+			functor(item_id);
+		}
+	}
 
 	LLToggleableMenu*		mMenu;
 	LLPanelWearing* 		mPanelWearing;
@@ -92,7 +103,8 @@ class LLWearingContextMenu : public LLListContextMenu
 	{
 		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 
-		registrar.add("Wearing.Edit", boost::bind(&edit_outfit));
+		registrar.add("Wearing.EditItem", boost::bind(handleMultiple, handle_item_edit, mUUIDs));
+		registrar.add("Wearing.EditOutfit", boost::bind(&edit_outfit));
 		registrar.add("Wearing.ShowOriginal", boost::bind(show_item_original, mUUIDs.front()));
 		registrar.add("Wearing.TakeOff",
 					  boost::bind(&LLAppearanceMgr::removeItemsFromAvatar, LLAppearanceMgr::getInstance(), mUUIDs));
@@ -138,14 +150,16 @@ class LLWearingContextMenu : public LLListContextMenu
 		}
 
 		// Enable/disable some menu items depending on the selection.
+		bool show_edit = bp_selected || clothes_selected || attachments_selected;
 		bool allow_detach = !bp_selected && !clothes_selected && attachments_selected;
 		bool allow_take_off = !bp_selected && clothes_selected && !attachments_selected;
 
+		menu->setItemVisible("edit_item",          show_edit);
+		menu->setItemEnabled("edit_item",          1 == mUUIDs.size() && get_is_item_editable(mUUIDs.front()));
 		menu->setItemVisible("take_off",	allow_take_off);
 		menu->setItemVisible("detach",		allow_detach);
-		menu->setItemVisible("edit_outfit_separator", allow_take_off || allow_detach);
+		menu->setItemVisible("edit_outfit_separator", show_edit | allow_take_off || allow_detach);
 		menu->setItemVisible("show_original", mUUIDs.size() == 1);
-		menu->setItemVisible("edit_item", FALSE);
 	}
 };
 
@@ -173,12 +187,13 @@ class LLTempAttachmentsContextMenu : public LLListContextMenu
 
 	void updateMenuItemsVisibility(LLContextMenu* menu)
 	{
+		menu->setItemVisible("edit_item", TRUE);
+		menu->setItemEnabled("edit_item", 1 == mUUIDs.size());
 		menu->setItemVisible("take_off", FALSE);
 		menu->setItemVisible("detach", TRUE);
-		menu->setItemVisible("edit_outfit_separator", TRUE);
+		menu->setItemVisible("edit_outfit_separator", FALSE);
 		menu->setItemVisible("show_original", FALSE);
-		menu->setItemVisible("edit_item", TRUE);
-		menu->setItemVisible("edit", FALSE);
+		menu->setItemVisible("edit_outfit", FALSE);
 	}
 
 	LLPanelWearing* 		mPanelWearing;
@@ -350,6 +365,14 @@ bool LLPanelWearing::isActionEnabled(const LLSD& userdata)
 		}
 	}
 
+	uuid_vec_t selected_uuids;
+	getSelectedItemsUUIDs(selected_uuids);
+
+	if (command_name == "edit_item")
+	{
+		return (1 == selected_uuids.size()) && (get_is_item_editable(selected_uuids.front()));
+	}
+
 	return false;
 }
 
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index b6c7be2ed35..b388d6a1bdd 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2777,7 +2777,6 @@ class LLObjectBuild : public view_listener_t
 	}
 };
 
-
 void handle_object_edit()
 {
 	LLViewerParcelMgr::getInstance()->deselectLand();
@@ -2822,6 +2821,20 @@ void handle_object_edit()
 	return;
 }
 
+void handle_attachment_edit(const LLUUID& inv_item_id)
+{
+	if (isAgentAvatarValid())
+	{
+		if (LLViewerObject* attached_obj = gAgentAvatarp->getWornAttachment(inv_item_id))
+		{
+			LLSelectMgr::getInstance()->deselectAll();
+			LLSelectMgr::getInstance()->selectObjectAndFamily(attached_obj);
+
+			handle_object_edit();
+		}
+	}
+}
+
 void handle_object_inspect()
 {
 	LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index 68824054073..ce84a4bbc34 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -109,6 +109,7 @@ void handle_zoom_to_object(LLUUID object_id);
 void handle_object_return();
 void handle_object_delete();
 void handle_object_edit();
+void handle_attachment_edit(const LLUUID& inv_item_id);
 
 void handle_buy_land();
 
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index e7bbee5efd9..93bb0a7eedb 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -794,7 +794,7 @@ LLContextMenu* LLWearableItemsList::ContextMenu::createMenu()
 	// Register handlers common for all wearable types.
 	registrar.add("Wearable.Wear", boost::bind(wear_multiple, ids, true));
 	registrar.add("Wearable.Add", boost::bind(wear_multiple, ids, false));
-	registrar.add("Wearable.Edit", boost::bind(handleMultiple, LLAgentWearables::editWearable, ids));
+	registrar.add("Wearable.Edit", boost::bind(handle_item_edit, selected_id));
 	registrar.add("Wearable.CreateNew", boost::bind(createNewWearable, selected_id));
 	registrar.add("Wearable.ShowOriginal", boost::bind(show_item_original, selected_id));
 	registrar.add("Wearable.TakeOffDetach", 
@@ -858,7 +858,7 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
 		const LLWearableType::EType wearable_type = item->getWearableType();
 		const bool is_link = item->getIsLinkType();
 		const bool is_worn = get_is_item_worn(id);
-		const bool is_editable = gAgentWearables.isWearableModifiable(id);
+		const bool is_editable = get_is_item_editable(id);
 		const bool is_already_worn = gAgentWearables.selfHasWearable(wearable_type);
 		if (is_worn)
 		{
@@ -893,8 +893,8 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
 	setMenuItemEnabled(menu, "wear_add",			LLAppearanceMgr::instance().canAddWearables(ids));
 	setMenuItemVisible(menu, "wear_replace",		n_worn == 0 && n_already_worn != 0 && can_be_worn);
 	//visible only when one item selected and this item is worn
-	setMenuItemVisible(menu, "edit",				!standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1);
-	setMenuItemEnabled(menu, "edit",				n_editable == 1 && n_worn == 1 && n_items == 1);
+	setMenuItemVisible(menu, "edit",				!standalone && mask & (MASK_CLOTHING|MASK_BODYPART|MASK_ATTACHMENT) && n_worn == n_items);
+	setMenuItemEnabled(menu, "edit",				n_editable && n_worn == 1 && n_items == 1);
 	setMenuItemVisible(menu, "create_new",			mask & (MASK_CLOTHING|MASK_BODYPART) && n_items == 1);
 	setMenuItemEnabled(menu, "create_new",			LLAppearanceMgr::instance().canAddWearables(ids));
 	setMenuItemVisible(menu, "show_original",		!standalone);
diff --git a/indra/newview/skins/default/xui/da/menu_cof_attachment.xml b/indra/newview/skins/default/xui/da/menu_cof_attachment.xml
index 9d7fc0f2239..ede33b8efb3 100644
--- a/indra/newview/skins/default/xui/da/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/da/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Redigér" name="edit_item" />
 	<menu_item_call label="Tag af" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/da/menu_wearing_gear.xml b/indra/newview/skins/default/xui/da/menu_wearing_gear.xml
index 515a15b287e..da33c67a02a 100644
--- a/indra/newview/skins/default/xui/da/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/da/menu_wearing_gear.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Gear Wearing">
-	<menu_item_call label="Redigér sæt" name="edit"/>
+	<menu_item_call label="Redigér" name="edit_item"/>
+	<menu_item_call label="Redigér sæt" name="edit_outfit"/>
 	<menu_item_call label="Tag af" name="takeoff"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/da/menu_wearing_tab.xml b/indra/newview/skins/default/xui/da/menu_wearing_tab.xml
index c0db7b68426..98b80c2c4d1 100644
--- a/indra/newview/skins/default/xui/da/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/da/menu_wearing_tab.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Wearing">
+	<menu_item_call label="Redigér" name="edit_item"/>
 	<menu_item_call label="Tag af" name="take_off"/>
 	<menu_item_call label="Tag af" name="detach"/>
-	<menu_item_call label="Redigér sæt" name="edit"/>
+	<menu_item_call label="Redigér sæt" name="edit_outfit"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_cof_attachment.xml b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml
index 05d3dfca9dd..cf0270b2732 100644
--- a/indra/newview/skins/default/xui/de/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/de/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Bearbeiten" name="edit_item" />
 	<menu_item_call label="Abnehmen" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
index dacf898b6a4..dfe2759bcb9 100644
--- a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Outfit bearbeiten" name="edit"/>
+	<menu_item_call label="Bearbeiten" name="edit_item"/>
+	<menu_item_call label="Outfit bearbeiten" name="edit_outfit"/>
 	<menu_item_call label="Ausziehen" name="takeoff"/>
 	<menu_item_call label="Outfitliste in Zwischenablage kopieren" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml
index 61002b3dad2..fff325c9303 100644
--- a/indra/newview/skins/default/xui/de/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/de/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Ausziehen" name="take_off"/>
 	<menu_item_call label="Abnehmen" name="detach"/>
-	<menu_item_call label="Outfit bearbeiten" name="edit"/>
+	<menu_item_call label="Outfit bearbeiten" name="edit_outfit"/>
 	<menu_item_call label="Bearbeiten" name="edit_item"/>
 	<menu_item_call label="Original anzeigen" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
index c402100fb1e..42f81d2c94e 100644
--- a/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/en/menu_cof_attachment.xml
@@ -2,6 +2,16 @@
 <context_menu
  layout="topleft"
  name="COF Attachment">
+    <menu_item_call
+     label="Edit"
+     layout="topleft"
+     name="edit_item">
+        <on_click
+         function="Attachment.Edit" />
+        <on_enable
+         function="Attachment.OnEnable"
+         parameter="edit" />
+   </menu_item_call>
     <menu_item_call
      label="Detach"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 9aa84c1bac4..455193e5542 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -810,14 +810,6 @@
     <menu_item_separator
      layout="topleft" 
      name="Wearable And Object Separator"/>
-    <menu_item_call
-     label="Detach From Yourself"
-     layout="topleft"
-     name="Detach From Yourself">
-        <menu_item_call.on_click
-         function="Inventory.DoToSelected"
-         parameter="detach" />
-    </menu_item_call>
 	<!-- COMMENTED OUT for DEV-32347 -->
 	<!--
     <menu_item_call
@@ -861,6 +853,14 @@
          function="Inventory.DoToSelected"
          parameter="wear_add" />
     </menu_item_call>
+    <menu_item_call
+     label="Detach From Yourself"
+     layout="topleft"
+     name="Detach From Yourself">
+        <menu_item_call.on_click
+         function="Inventory.DoToSelected"
+         parameter="detach" />
+    </menu_item_call>
     <menu_item_call
      label="Take Off"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
index aa56b4ba63c..b1f649d1db9 100644
--- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml
@@ -22,6 +22,12 @@
         <on_click
          function="Wearable.Add" />
     </menu_item_call>
+    <menu_item_call
+     label="Edit"
+     layout="topleft"
+     name="edit"
+     on_click.function="Wearable.Edit"
+     />
     <menu_item_call
      label="Take Off / Detach"
      layout="topleft"
@@ -51,13 +57,6 @@
         <on_click
          function="Clothing.TakeOff" />
     </menu_item_call>
-    <menu_item_call
-     label="Edit"
-     layout="topleft"
-     name="edit">
-        <on_click
-         function="Wearable.Edit" />
-    </menu_item_call>
     <menu_item_call
      label="Item Profile"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
index 0e858ccf107..6c7f6282a1d 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -4,11 +4,14 @@
  visible="false"
  name="Gear Wearing">
     <menu_item_call
-     label="Edit Outfit"
+     label="Edit"
      layout="topleft"
-     name="edit">
+     name="edit_item">
         <on_click
-         function="Gear.Edit" />
+         function="Gear.EditItem" />
+        <on_enable
+         function="Gear.OnEnable"
+         parameter="edit_item" />
     </menu_item_call>
     <menu_item_call
      label="Take Off"
@@ -20,6 +23,14 @@
          function="Gear.OnEnable"
          parameter="take_off" />
     </menu_item_call>
+    <menu_item_separator />
+    <menu_item_call
+     label="Edit Outfit"
+     layout="topleft"
+     name="edit_outfit">
+        <on_click
+         function="Gear.EditOutfit" />
+    </menu_item_call>
     <menu_item_call
      label="Copy outfit list to clipboard"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
index 75c1de24aa2..423a450763e 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_tab.xml
@@ -2,6 +2,13 @@
 <context_menu
  layout="topleft"
  name="Wearing">
+    <menu_item_call
+     label="Edit"
+     layout="topleft"
+     name="edit_item">
+        <on_click
+         function="Wearing.EditItem" />
+    </menu_item_call>
     <menu_item_call
      label="Take Off"
      layout="topleft"
@@ -23,16 +30,9 @@
     <menu_item_call
      label="Edit Outfit"
      layout="topleft"
-     name="edit">
+     name="edit_outfit">
         <on_click
-         function="Wearing.Edit" />
-    </menu_item_call>
-    <menu_item_call
-     label="Edit"
-     layout="topleft"
-     name="edit_item">
-        <on_click
-         function="Wearing.EditItem" />
+         function="Wearing.EditOutfit" />
     </menu_item_call>
     <menu_item_call
      label="Show Original"
diff --git a/indra/newview/skins/default/xui/es/menu_cof_attachment.xml b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml
index 7541530601d..ca0ef937892 100644
--- a/indra/newview/skins/default/xui/es/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/es/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Editar" name="edit_item" />
 	<menu_item_call label="Quitar" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
index ec13f99a016..bd0843d8261 100644
--- a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Editar el vestuario" name="edit"/>
+	<menu_item_call label="Editar" name="edit_item"/>
+	<menu_item_call label="Editar el vestuario" name="edit_outfit"/>
 	<menu_item_call label="Quitarme" name="takeoff"/>
 	<menu_item_call label="Copiar la lista del vestuario al portapapeles" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml
index 637a14cf5b5..b86b6f4d15d 100644
--- a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Quitarme" name="take_off"/>
 	<menu_item_call label="Quitar" name="detach"/>
-	<menu_item_call label="Editar el vestuario" name="edit"/>
+	<menu_item_call label="Editar el vestuario" name="edit_outfit"/>
 	<menu_item_call label="Editar" name="edit_item"/>
 	<menu_item_call label="Mostrar original" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml
index a4ead48b6b3..89394808a7e 100644
--- a/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/fr/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Modifier" name="edit_item" />
 	<menu_item_call label="Détacher" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
index c3d9d908b0e..1f2163cf4a0 100644
--- a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Modifier la tenue" name="edit"/>
+	<menu_item_call label="Modifier" name="edit_item"/>
+	<menu_item_call label="Modifier la tenue" name="edit_outfit"/>
 	<menu_item_call label="Enlever" name="takeoff"/>
 	<menu_item_call label="Copier la liste de la tenue dans le presse-papiers" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml
index 5a7193a7cc9..762eac0fcd3 100644
--- a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Enlever" name="take_off"/>
 	<menu_item_call label="Détacher" name="detach"/>
-	<menu_item_call label="Modifier la tenue" name="edit"/>
+	<menu_item_call label="Modifier la tenue" name="edit_outfit"/>
 	<menu_item_call label="Modifier" name="edit_item"/>
 	<menu_item_call label="Afficher l’original" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_cof_attachment.xml b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml
index 699490c8f1d..9025ca21369 100644
--- a/indra/newview/skins/default/xui/it/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/it/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Modifica" name="edit_item" />
 	<menu_item_call label="Stacca" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
index de25f88acac..10c15ca6b16 100644
--- a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Modifica vestiario" name="edit"/>
+	<menu_item_call label="Modifica" name="edit_item"/>
+	<menu_item_call label="Modifica vestiario" name="edit_outfit"/>
 	<menu_item_call label="Togli" name="takeoff"/>
 	<menu_item_call label="Copia gruppo vestiti negli Appunti" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml
index ec375e52403..328f61ecb67 100644
--- a/indra/newview/skins/default/xui/it/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/it/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Togli" name="take_off"/>
 	<menu_item_call label="Stacca" name="detach"/>
-	<menu_item_call label="Modifica vestiario" name="edit"/>
+	<menu_item_call label="Modifica vestiario" name="edit_outfit"/>
 	<menu_item_call label="Modifica" name="edit_item"/>
 	<menu_item_call label="Mostra originale" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml
index e786d02e40a..deab6051b48 100644
--- a/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/ja/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="編集" name="edit_item" />
 	<menu_item_call label="取り外す" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
index 5334042dc9a..9bbc30be365 100644
--- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="アウトフットの編集" name="edit"/>
+	<menu_item_call label="編集" name="edit_item"/>
+	<menu_item_call label="アウトフットの編集" name="edit_outfit"/>
 	<menu_item_call label="取り外す" name="takeoff"/>
 	<menu_item_call label="アウトフィットのリストをクリップボードにコピー" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml
index bf8e72e4572..23bf27b1363 100644
--- a/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/ja/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="取り外す" name="take_off"/>
 	<menu_item_call label="取り外す" name="detach"/>
-	<menu_item_call label="アウトフットの編集" name="edit"/>
+	<menu_item_call label="アウトフットの編集" name="edit_outfit"/>
 	<menu_item_call label="編集" name="edit_item"/>
 	<menu_item_call label="オリジナルを表示" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml
index add2d59998f..79ee8348950 100644
--- a/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/pl/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Edytuj" name="edit_item" />
 	<menu_item_call label="Odłącz" name="detach" />
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml
index 73138b2cf75..714f94e7f79 100644
--- a/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Edytuj strój" name="edit" />
+	<menu_item_call label="Edytuj" name="edit_item"/>
+	<menu_item_call label="Edytuj strój" name="edit_outfit" />
 	<menu_item_call label="Zdejmij" name="takeoff" />
 	<menu_item_call label="Kopiuj listę przedmiotów stroju do schowka" name="copy" />
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml
index 09c82da4273..92d1ec27161 100644
--- a/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <context_menu name="Wearing">
+	<menu_item_call label="Edytuj" name="edit_item"/>
 	<menu_item_call label="Zdejmij" name="take_off" />
 	<menu_item_call label="Odłącz" name="detach" />
-	<menu_item_call label="Edytuj strój" name="edit" />
+	<menu_item_call label="Edytuj strój" name="edit_outfit" />
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml
index 527e3af3c93..044301eb637 100644
--- a/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/pt/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Editar" name="edit_item" />
 	<menu_item_call label="Separar" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
index 75dca703cb0..4fc06a82506 100644
--- a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Editar look" name="edit"/>
+	<menu_item_call label="Editar" name="edit_item"/>
+	<menu_item_call label="Editar look" name="edit_outfit"/>
 	<menu_item_call label="Tirar" name="takeoff"/>
 	<menu_item_call label="Copiar lista do look para a área de transferência" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml
index 42aa3862154..b2d11772e70 100644
--- a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Tirar" name="take_off"/>
 	<menu_item_call label="Tirar" name="detach"/>
-	<menu_item_call label="Editar look" name="edit"/>
+	<menu_item_call label="Editar look" name="edit_outfit"/>
 	<menu_item_call label="Editar" name="edit_item"/>
 	<menu_item_call label="Mostrar original" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
index 72d1bc52b53..ee52e720378 100644
--- a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Изменить" name="edit_item" />
 	<menu_item_call label="Отсоединить" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
index c2351fbfff7..48c2e30ada2 100644
--- a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Изменить костюм" name="edit"/>
+	<menu_item_call label="Изменить" name="edit_item"/>
+	<menu_item_call label="Изменить костюм" name="edit_outfit"/>
 	<menu_item_call label="Снять" name="takeoff"/>
 	<menu_item_call label="Копировать список костюмов в буфер обмена" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
index 1e32090c2af..3a888c48bb0 100644
--- a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Снять" name="take_off"/>
 	<menu_item_call label="Отсоединить" name="detach"/>
-	<menu_item_call label="Изменить костюм" name="edit"/>
+	<menu_item_call label="Изменить костюм" name="edit_outfit"/>
 	<menu_item_call label="Изменить" name="edit_item"/>
 	<menu_item_call label="Показать оригинал" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
index d57c43f6c1b..c2bf32fd59c 100644
--- a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="Düzenle" name="edit_item" />
 	<menu_item_call label="Ayır" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
index 438e580cd3d..5a29b60aaf3 100644
--- a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+	<menu_item_call label="Düzenle" name="edit_item"/>
+	<menu_item_call label="Dış Görünümü Düzenle" name="edit_outfit"/>
 	<menu_item_call label="Çıkar" name="takeoff"/>
 	<menu_item_call label="Dış görünüm listesini panoya kopyala" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
index 1db95c17e1f..b5b81e09d08 100644
--- a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="Çıkar" name="take_off"/>
 	<menu_item_call label="Ayır" name="detach"/>
-	<menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+	<menu_item_call label="Dış Görünümü Düzenle" name="edit_outfit"/>
 	<menu_item_call label="Düzenle" name="edit_item"/>
 	<menu_item_call label="Orijinali Göster" name="show_original"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml b/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml
index 876fef16dfe..d91c4e343e8 100644
--- a/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml
+++ b/indra/newview/skins/default/xui/zh/menu_cof_attachment.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="COF Attachment">
+	<menu_item_call label="編輯" name="edit_item" />
 	<menu_item_call label="卸下" name="detach"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml
index 6184f956d14..61f48d59e60 100644
--- a/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/zh/menu_wearing_gear.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <toggleable_menu name="Gear Wearing">
-	<menu_item_call label="編輯裝扮" name="edit"/>
+	<menu_item_call label="編輯" name="edit_item"/>
+	<menu_item_call label="編輯裝扮" name="edit_outfit"/>
 	<menu_item_call label="脫下" name="takeoff"/>
 	<menu_item_call label="複製裝扮清單到剪貼簿" name="copy"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml
index dc9adcbd25f..be551fb9a21 100644
--- a/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml
+++ b/indra/newview/skins/default/xui/zh/menu_wearing_tab.xml
@@ -2,7 +2,7 @@
 <context_menu name="Wearing">
 	<menu_item_call label="脫下" name="take_off"/>
 	<menu_item_call label="卸下" name="detach"/>
-	<menu_item_call label="編輯裝扮" name="edit"/>
+	<menu_item_call label="編輯裝扮" name="edit_outfit"/>
 	<menu_item_call label="編輯" name="edit_item"/>
 	<menu_item_call label="顯示原件" name="show_original"/>
 </context_menu>
-- 
GitLab