From d0ea9da3d39f5d4cbc1d15f724c610b152eb2a38 Mon Sep 17 00:00:00 2001
From: Kitty Barnett <develop@catznip.com>
Date: Sat, 18 Sep 2010 05:39:32 +0200
Subject: [PATCH] - added : "Enable Shared Wear" removes the need for shared
 inventory to specify the attachment point name for every attachment

--HG--
branch : RLVa
---
 indra/newview/rlvcommon.cpp                        | 11 -----------
 indra/newview/rlvcommon.h                          |  2 +-
 indra/newview/rlvhelper.cpp                        |  4 +++-
 indra/newview/rlvinventory.cpp                     |  2 +-
 indra/newview/skins/default/xui/en/menu_viewer.xml | 12 +++++++++++-
 5 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp
index 008b9b25f5..76039f992b 100644
--- a/indra/newview/rlvcommon.cpp
+++ b/indra/newview/rlvcommon.cpp
@@ -109,17 +109,6 @@ void RlvSettings::initClass()
 	}
 }
 
-BOOL RlvSettings::getEnableSharedWear()
-{
-	return FALSE;
-/*
-	// NOTE-RLVa: it's not proper but some code relies on the fact that getEnableSharedWear() returns FALSE if any attach point is locked
-	return 
-		(rlvGetSettingBOOL(RLV_SETTING_ENABLESHAREDWEAR, FALSE)) && // "Enable Shared Wear" is toggled on and...
-		(!gRlvHandler.hasLockedAttachment(RLV_LOCK_ANY));			// no attachment point is non-attachable or non-detachable
-*/
-}
-
 #ifdef RLV_EXTENSION_STARTLOCATION
 	// Checked: 2010-04-01 (RLVa-1.2.0c) | Modified: RLVa-0.2.1d
 	void RlvSettings::updateLoginLastLocation()
diff --git a/indra/newview/rlvcommon.h b/indra/newview/rlvcommon.h
index ee1865320a..3c1936608e 100644
--- a/indra/newview/rlvcommon.h
+++ b/indra/newview/rlvcommon.h
@@ -57,7 +57,7 @@ public:
 	static BOOL getEnableComposites()		{ return fCompositeFolders; }
 	#endif // RLV_EXPERIMENTAL_COMPOSITEFOLDERS
 	static BOOL getEnableLegacyNaming()		{ return fLegacyNaming; }
-	static BOOL getEnableSharedWear();
+	static BOOL getEnableSharedWear()		{ return rlvGetSettingBOOL(RLV_SETTING_ENABLESHAREDWEAR, FALSE); }
 	static BOOL getHideLockedLayers()		{ return rlvGetSettingBOOL(RLV_SETTING_HIDELOCKEDLAYER, FALSE); }		
 	static BOOL getHideLockedAttach()		{ return rlvGetSettingBOOL(RLV_SETTING_HIDELOCKEDATTACH, FALSE); }
 	static BOOL getHideLockedInventory()	{ return rlvGetSettingBOOL(RLV_SETTING_HIDELOCKEDINVENTORY, FALSE); }
diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp
index b9bff52683..0facf608f6 100644
--- a/indra/newview/rlvhelper.cpp
+++ b/indra/newview/rlvhelper.cpp
@@ -370,7 +370,9 @@ void RlvForceWear::forceFolder(const LLViewerInventoryCategory* pFolder, EWearAc
 			case LLAssetType::AT_OBJECT:
 				if (isWearAction(eAction))
 				{
-					if ( (gRlvAttachmentLocks.canAttach(pRlvItem)) || (RlvSettings::getEnableSharedWear()) )
+					ERlvWearMask eWearMask = gRlvAttachmentLocks.canAttach(pRlvItem);
+					if ( ((ACTION_WEAR_REPLACE == eAction) && (eWearMask & RLV_WEAR_REPLACE)) ||
+						 ((ACTION_WEAR_ADD == eAction) && (eWearMask & RLV_WEAR_ADD)) )
 					{
 						if (!isAddAttachment(pRlvItem))
 						{
diff --git a/indra/newview/rlvinventory.cpp b/indra/newview/rlvinventory.cpp
index b2a29e4c11..4f4c1667a0 100644
--- a/indra/newview/rlvinventory.cpp
+++ b/indra/newview/rlvinventory.cpp
@@ -609,7 +609,7 @@ bool RlvWearableItemCollector::onCollectFolder(const LLInventoryCategory* pFolde
 bool RlvWearableItemCollector::onCollectItem(const LLInventoryItem* pItem)
 {
 	#ifdef RLV_EXTENSION_FLAG_NOSTRIP
-	if ( (!m_fAttach) && (!RlvForceWear::isStrippable(pItem)) )						// Don't process "nostrip" items on detach
+	if ( (!m_fAttach) && (!RlvForceWear::isStrippable(pItem)) )							// Don't process "nostrip" items on detach
 		return false;
 	#endif // RLV_EXTENSION_FLAG_NOSTRIP
 
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index c05834e8fb..6da56ba969 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -1456,7 +1456,17 @@
 					 function="ToggleControl"
 					 parameter="RLVaEnableLegacyNaming" />
 				</menu_item_check>
-				<menu_item_check
+        <menu_item_check
+				 label="Enable Shared Wear"
+				 name="Enable Shared Wear">
+          <menu_item_check.on_check
+					 function="CheckControl"
+					 parameter="RLVaEnableSharedWear" />
+          <menu_item_check.on_click
+					 function="ToggleControl"
+					 parameter="RLVaEnableSharedWear" />
+        </menu_item_check>
+        <menu_item_check
 				 label="Rename Shared Items on Wear"
 				 name="Rename Shared Items on Wear">
 					<menu_item_check.on_check
-- 
GitLab