From d413799644b8e7fa943fa86c7798634a28ce335d Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Fri, 25 Feb 2011 11:33:20 -0800
Subject: ER-350:  Viewer / sim camera positioning not working well on login. 
 Viewer now sets the camera before calling send_agent_update().  Reviewed by
 Kelly.

---
 indra/newview/llviewermessage.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 103989ee80..4203ba74b2 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3761,10 +3761,22 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 	}
 	else
 	{
-		// This is likely just the initial logging in phase.
+		// This is initial log-in or a region crossing
 		gAgent.setTeleportState( LLAgent::TELEPORT_NONE );
+
+		if(LLStartUp::getStartupState() < STATE_STARTED)
+		{	// This is initial log-in, not a region crossing:
+			// Set the camera looking ahead of the AV so send_agent_update() below 
+			// will report the correct location to the server.
+			LLVector3 look_at_point = look_at;
+			look_at_point = agent_pos + look_at_point.rotVec(gAgent.getQuat());
+
+			static LLVector3 up_direction(0.0f, 0.0f, 1.0f);
+			LLViewerCamera::getInstance()->lookAt(agent_pos, look_at_point, up_direction);
+		}
 	}
 
+
 	if ( LLTracker::isTracking(NULL) )
 	{
 		// Check distance to beacon, if < 5m, remove beacon
-- 
cgit v1.2.3


From 9bfae21706288802f94d642eb252ac78b4d9e85c Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Mon, 2 May 2011 16:35:55 -0700
Subject: ER-858: Add viewer checkbox to toggle parcel privacy settings. 
 Reviewed by Kelly

---
 indra/llinventory/llparcel.cpp                          | 10 +++++++++-
 indra/llinventory/llparcel.h                            | 12 +++++++++++-
 indra/llmessage/message_prehash.cpp                     |  1 +
 indra/llmessage/message_prehash.h                       |  1 +
 indra/newview/llfloaterland.cpp                         | 13 +++++++++++++
 indra/newview/llfloaterland.h                           |  1 +
 .../newview/skins/default/xui/en/floater_about_land.xml | 17 +++++++++++++++--
 7 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index 0a4cd51ea0..7562bb8320 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -702,7 +702,7 @@ void LLParcel::packMessage(LLSD& msg)
 	msg["user_location"] = ll_sd_from_vector3(mUserLocation);
 	msg["user_look_at"] = ll_sd_from_vector3(mUserLookAt);
 	msg["landing_type"] = (U8)mLandingType;
-
+	msg["privacy"] = (LLSD::Boolean) getPrivacy();
 }
 
 
@@ -721,6 +721,14 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
     msg->getStringFast( _PREHASH_ParcelData,_PREHASH_MediaURL, buffer );
     setMediaURL(buffer);
     
+	BOOL private_parcel = FALSE;
+	bool have_privacy_data = (msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_Privacy) > 0);
+	if (have_privacy_data)
+	{
+		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_Privacy, private_parcel);
+	}
+	setPrivacy((bool) private_parcel);
+
     // non-optimized version
     msg->getU8 ( "ParcelData", "MediaAutoScale", mMediaAutoScale );
     
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index 71b65d99ce..4d2236ec66 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -75,7 +75,7 @@ const U8 PARCEL_AUCTION		= 0x05;
 // unused 0x06
 // unused 0x07
 // flag, unused 0x08
-// flag, unused 0x10
+const U8 PARCEL_PRIVATE     = 0x10;
 const U8 PARCEL_SOUND_LOCAL = 0x20;
 const U8 PARCEL_WEST_LINE	= 0x40;	// flag, property line on west edge
 const U8 PARCEL_SOUTH_LINE	= 0x80;	// flag, property line on south edge
@@ -130,6 +130,12 @@ class LLSD;
 class LLAccessEntry
 {
 public:
+	LLAccessEntry()
+	:	mID(),
+		mTime(0),
+		mFlags(0)
+	{}
+
 	LLUUID		mID;		// Agent ID
 	S32			mTime;		// Time (unix seconds) when entry expires
 	U32			mFlags;		// Not used - currently should always be zero
@@ -265,6 +271,7 @@ public:
 	void setUserLocation(const LLVector3& pos)	{ mUserLocation = pos; }
 	void setUserLookAt(const LLVector3& rot)	{ mUserLookAt = rot; }
 	void setLandingType(const ELandingType type) { mLandingType = type; }
+	void setPrivacy(bool privacy)	{ mPrivacy = privacy;	}
 
 	void setAuctionID(U32 auction_id) { mAuctionID = auction_id;}
 
@@ -367,6 +374,8 @@ public:
 	const LLVector3& getUserLocation() const	{ return mUserLocation; }
 	const LLVector3& getUserLookAt() const	{ return mUserLookAt; }
 	ELandingType getLandingType() const	{ return mLandingType; }
+	bool getPrivacy() const				{ return mPrivacy;		}
+
 
 	// User-specified snapshot
 	const LLUUID&	getSnapshotID() const		{ return mSnapshotID; }
@@ -602,6 +611,7 @@ protected:
 	LLVector3 mUserLocation;
 	LLVector3 mUserLookAt;
 	ELandingType mLandingType;
+	bool mPrivacy;
 	LLTimer mSaleTimerExpires;
 	LLTimer mMediaResetTimer;
 
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 5d03615e53..020ece5414 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1375,3 +1375,4 @@ char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getStri
 char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex");
 char const* const _PREHASH_StatusData = LLMessageStringTable::getInstance()->getString("StatusData");
 char const* const _PREHASH_ProductSKU = LLMessageStringTable::getInstance()->getString("ProductSKU");
+char const* const _PREHASH_Privacy = LLMessageStringTable::getInstance()->getString("Privacy");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index 8dc86601e6..32bf882d90 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -1375,4 +1375,5 @@ extern char const* const _PREHASH_VCoord;
 extern char const* const _PREHASH_FaceIndex;
 extern char const* const _PREHASH_StatusData;
 extern char const* const _PREHASH_ProductSKU;
+extern char const* const _PREHASH_Privacy;
 #endif
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 7be4ebc690..1ebcae4e5c 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -1817,6 +1817,7 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)
 	mClearBtn(NULL),
 	mMatureCtrl(NULL),
 	mPushRestrictionCtrl(NULL),
+	mPrivateParcelCtrl(NULL),
 	mParcel(parcel)
 {
 }
@@ -1859,6 +1860,9 @@ BOOL LLPanelLandOptions::postBuild()
 	mPushRestrictionCtrl = getChild<LLCheckBoxCtrl>( "PushRestrictCheck");
 	childSetCommitCallback("PushRestrictCheck", onCommitAny, this);
 
+	mPrivateParcelCtrl = getChild<LLCheckBoxCtrl>( "PrivateParcelCheck");
+	childSetCommitCallback("PrivateParcelCheck", onCommitAny, this);
+
 	mCheckShowDirectory = getChild<LLCheckBoxCtrl>( "ShowDirectoryCheck");
 	childSetCommitCallback("ShowDirectoryCheck", onCommitAny, this);
 
@@ -1967,6 +1971,9 @@ void LLPanelLandOptions::refresh()
 		mPushRestrictionCtrl->set(FALSE);
 		mPushRestrictionCtrl->setEnabled(FALSE);
 
+		mPrivateParcelCtrl->set(FALSE);
+		mPrivateParcelCtrl->setEnabled(FALSE);
+
 		mLandingTypeCombo->setCurrentByIndex(0);
 		mLandingTypeCombo->setEnabled(FALSE);
 
@@ -2026,6 +2033,10 @@ void LLPanelLandOptions::refresh()
 			mPushRestrictionCtrl->setEnabled(can_change_options);
 		}
 
+		mPrivateParcelCtrl->set(parcel->getPrivacy());
+		mPrivateParcelCtrl->setLabel(getString("private_parcel_text"));
+		mPrivateParcelCtrl->setEnabled(can_change_options);
+
 		BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, 
 														GP_LAND_SET_LANDING_POINT);
 		mLandingTypeCombo->setCurrentByIndex((S32)parcel->getLandingType());
@@ -2230,6 +2241,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	BOOL allow_publish		= FALSE;
 	BOOL mature_publish		= self->mMatureCtrl->get();
 	BOOL push_restriction	= self->mPushRestrictionCtrl->get();
+	BOOL private_parcel     = self->mPrivateParcelCtrl->get();
 	BOOL show_directory		= self->mCheckShowDirectory->get();
 	// we have to get the index from a lookup, not from the position in the dropdown!
 	S32  category_index		= LLParcel::getCategoryFromString(self->mCategoryCombo->getSelectedValue());
@@ -2263,6 +2275,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	parcel->setCategory((LLParcel::ECategory)category_index);
 	parcel->setLandingType((LLParcel::ELandingType)landing_type_index);
 	parcel->setSnapshotID(snapshot_id);
+	parcel->setPrivacy(private_parcel);
 
 	// Send current parcel data upstream to server
 	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index a096fb64cd..ff1fb62041 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -347,6 +347,7 @@ private:
 
 	LLCheckBoxCtrl		*mMatureCtrl;
 	LLCheckBoxCtrl		*mPushRestrictionCtrl;
+	LLCheckBoxCtrl		*mPrivateParcelCtrl;
 
 	LLSafeHandle<LLParcelSelection>&	mParcel;
 };
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 6e985e0476..d2567e8197 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1204,6 +1204,10 @@ Only large parcels can be listed in search.
              name="push_restrict_region_text">
                 No Pushing (Region Override)
             </panel.string>
+            <panel.string
+             name="private_parcel_text">
+                Private Parcel
+            </panel.string>
             <text
              type="string"
              length="1"
@@ -1333,7 +1337,7 @@ Only large parcels can be listed in search.
              name="check safe"
              tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled."
              top_pad="5"
-             width="200" />
+             width="280" />
             <check_box
              height="16"
              label="No Pushing"
@@ -1350,7 +1354,16 @@ Only large parcels can be listed in search.
              left="14"
              name="ShowDirectoryCheck"
              tool_tip="Let people see this parcel in search results"
-             width="430" />
+             width="280" />
+            <check_box
+             height="16"
+             label="Private Parcel"
+             layout="topleft"
+             left_pad="5"
+             name="PrivateParcelCheck"
+             tool_tip="Prevents avatars from seeing into or out of the parcel."
+             top_delta="0"
+             width="119" />
             <combo_box
              enabled="false"
              height="23"
-- 
cgit v1.2.3


From c6c72f9aa133a58a7a9a5382a2b9f7925a3168c1 Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Tue, 3 May 2011 13:14:00 -0700
Subject: Fix minor indentation issue

---
 indra/newview/llvoavatar.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index f1934933b5..1dde6fcac9 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -6923,9 +6923,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 			llinfos << "Re-requesting AvatarAppearance for object: "  << getID() << llendl;
 			LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID());
 			mRuthTimer.reset();
-	}
-	else
-	{
+		}
+		else
+		{
 			llinfos << "That's okay, we already have a non-default shape for object: "  << getID() << llendl;
 			// we don't really care.
 		}
-- 
cgit v1.2.3


From 32d30f33be853c0e1e2fc7657c14cd4575b19db2 Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Tue, 3 May 2011 16:48:52 -0700
Subject: Manually fix missing python problem, using fix from mesh code.

---
 indra/cmake/LLTestCommand.cmake | 1 +
 1 file changed, 1 insertion(+)

diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake
index 554559edbd..b5a0580a90 100644
--- a/indra/cmake/LLTestCommand.cmake
+++ b/indra/cmake/LLTestCommand.cmake
@@ -1,3 +1,4 @@
+include(Python)
 MACRO(LL_TEST_COMMAND OUTVAR LD_LIBRARY_PATH)
   # nat wonders how Kitware can use the term 'function' for a construct that
   # cannot return a value. And yet, variables you set inside a FUNCTION are
-- 
cgit v1.2.3


From b43da6721e538290962cafa7ddd32a8f4c7e21db Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Fri, 6 May 2011 18:29:43 -0700
Subject: Viewer UI work to add icons for the nav bar and places profile to
 indicate parcel privacy settings.  Using engineering art icons.

---
 indra/newview/lllocationinputctrl.cpp              |  13 ++++++++
 indra/newview/lllocationinputctrl.h                |  16 +++++-----
 indra/newview/llpanelplaceprofile.cpp              |  19 ++++++++++++
 indra/newview/llpanelplaceprofile.h                |   2 ++
 indra/newview/llpaneltopinfobar.cpp                |   8 +++++
 indra/newview/llpaneltopinfobar.h                  |  13 ++++----
 .../textures/icons/Parcel_PrivacyOff_Dark.png      | Bin 0 -> 787 bytes
 .../textures/icons/Parcel_PrivacyOn_Dark.png       | Bin 0 -> 833 bytes
 indra/newview/skins/default/textures/textures.xml  |   4 ++-
 .../newview/skins/default/xui/en/notifications.xml |  11 +++++++
 .../skins/default/xui/en/panel_place_profile.xml   |  33 +++++++++++++++++++++
 .../skins/default/xui/en/panel_topinfo_bar.xml     |  10 +++++++
 indra/newview/skins/default/xui/en/strings.xml     |   1 +
 .../default/xui/en/widgets/location_input.xml      |   9 ++++++
 .../minimal/xui/en/widgets/location_input.xml      |   9 ++++++
 15 files changed, 134 insertions(+), 14 deletions(-)
 create mode 100644 indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png
 create mode 100644 indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png

diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 5c65dcec34..c68d1bb845 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -190,6 +190,7 @@ LLLocationInputCtrl::Params::Params()
 	scripts_icon("scripts_icon"),
 	damage_icon("damage_icon"),
 	damage_text("damage_text"),
+	privacy_icon("privacy_icon"),
 	maturity_help_topic("maturity_help_topic")
 {
 }
@@ -342,6 +343,13 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mDamageText = LLUICtrlFactory::create<LLTextBox>(damage_text);
 	addChild(mDamageText);
 	
+	LLIconCtrl::Params privacy_icon = p.privacy_icon;
+	privacy_icon.tool_tip = LLTrans::getString("LocationCtrlPrivacyTooltip");
+	privacy_icon.mouse_opaque = true;
+	mParcelIcon[PRIVACY_ICON] = LLUICtrlFactory::create<LLIconCtrl>(privacy_icon);
+	mParcelIcon[PRIVACY_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, PRIVACY_ICON));
+	addChild(mParcelIcon[PRIVACY_ICON]);
+	
 	// Register callbacks and load the location field context menu (NB: the order matters).
 	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Navbar.Action", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemClicked, this, _2));
 	LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Navbar.EnableMenuItem", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemEnabled, this, _2));
@@ -810,6 +818,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
+		bool privacy        = current_parcel->getPrivacy();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -819,6 +828,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
 		mDamageText->setVisible(allow_damage);
+		mParcelIcon[PRIVACY_ICON]->setVisible(  privacy );
 
 		// Padding goes to left of both landmark star and for sale btn
 		x -= mAddLandmarkHPad;
@@ -1175,6 +1185,9 @@ void LLLocationInputCtrl::onParcelIconClick(EParcelIcon icon)
 	case DAMAGE_ICON:
 		LLNotificationsUtil::add("NotSafe");
 		break;
+	case PRIVACY_ICON:
+		LLNotificationsUtil::add("PrivateParcel");
+		break;
 	case ICON_COUNT:
 		break;
 	// no default to get compiler warning when a new icon gets added
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index 6368bf5cf2..ee4e55e829 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -77,7 +77,8 @@ public:
 											push_icon,
 											build_icon,
 											scripts_icon,
-											damage_icon;
+											damage_icon,
+											privacy_icon;
 		Optional<LLTextBox::Params>			damage_text;
 		Params();
 	};
@@ -109,12 +110,13 @@ private:
 	enum EParcelIcon
 	{
 		VOICE_ICON = 0,
-		FLY_ICON,
-		PUSH_ICON,
-		BUILD_ICON,
-		SCRIPTS_ICON,
-		DAMAGE_ICON,
-		ICON_COUNT
+		FLY_ICON,			// 1
+		PUSH_ICON,			// 2
+		BUILD_ICON,			// 3
+		SCRIPTS_ICON,		// 4
+		DAMAGE_ICON,		// 5
+		PRIVACY_ICON,		// 6
+		ICON_COUNT			// 7 total
 	};
 
 	friend class LLUICtrlFactory;
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 68ecb0165c..da6a9fbbc6 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -70,6 +70,8 @@ static std::string icon_scripts;
 static std::string icon_scripts_no;
 static std::string icon_damage;
 static std::string icon_damage_no;
+static std::string icon_privacy_on;
+static std::string icon_privacy_off;
 
 LLPanelPlaceProfile::LLPanelPlaceProfile()
 :	LLPanelPlaceInfo(),
@@ -114,6 +116,8 @@ BOOL LLPanelPlaceProfile::postBuild()
 	mScriptsText = getChild<LLTextBox>("scripts_value");
 	mDamageIcon = getChild<LLIconCtrl>("damage_icon");
 	mDamageText = getChild<LLTextBox>("damage_value");
+	mPrivacyIcon = getChild<LLIconCtrl>("privacy_icon");
+	mPrivacyText = getChild<LLTextBox>("privacy_value");
 
 	mRegionNameText = getChild<LLTextBox>("region_name");
 	mRegionTypeText = getChild<LLTextBox>("region_type");
@@ -153,6 +157,8 @@ BOOL LLPanelPlaceProfile::postBuild()
 	icon_scripts_no = getString("icon_ScriptsNo");
 	icon_damage = getString("icon_Damage");
 	icon_damage_no = getString("icon_DamageNo");
+	icon_privacy_on = getString("icon_PrivacyOn");
+	icon_privacy_off = getString("icon_PrivacyOff");
 
 	return TRUE;
 }
@@ -182,6 +188,8 @@ void LLPanelPlaceProfile::resetLocation()
 	mScriptsText->setText(loading);
 	mDamageIcon->setValue(loading);
 	mDamageText->setText(loading);
+	mPrivacyIcon->setValue(loading);
+	mPrivacyText->setText(loading);
 
 	mRegionNameText->setValue(loading);
 	mRegionTypeText->setValue(loading);
@@ -414,6 +422,17 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mDamageText->setText(off);
 	}
 
+	if (parcel->getPrivacy())
+	{
+		mPrivacyIcon->setValue(icon_privacy_on);
+		mPrivacyText->setText(on);
+	}
+	else
+	{
+		mPrivacyIcon->setValue(icon_privacy_off);
+		mPrivacyText->setText(off);
+	}
+
 	mRegionNameText->setText(region->getName());
 	mRegionTypeText->setText(region->getSimProductName());
 
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index f28b3b3832..b20107dc4b 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -91,6 +91,8 @@ private:
 	LLTextBox*			mScriptsText;
 	LLIconCtrl*			mDamageIcon;
 	LLTextBox*			mDamageText;
+	LLIconCtrl*			mPrivacyIcon;
+	LLTextBox*			mPrivacyText;
 
 	LLTextBox*			mRegionNameText;
 	LLTextBox*			mRegionTypeText;
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 30949f8f02..c2359b8b23 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -102,6 +102,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON] = getChild<LLIconCtrl>("build_icon");
 	mParcelIcon[SCRIPTS_ICON] = getChild<LLIconCtrl>("scripts_icon");
 	mParcelIcon[DAMAGE_ICON] = getChild<LLIconCtrl>("damage_icon");
+	mParcelIcon[PRIVACY_ICON] = getChild<LLIconCtrl>("privacy_icon");
 
 	mParcelIcon[VOICE_ICON]->setToolTip(LLTrans::getString("LocationCtrlVoiceTooltip"));
 	mParcelIcon[FLY_ICON]->setToolTip(LLTrans::getString("LocationCtrlFlyTooltip"));
@@ -109,6 +110,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON]->setToolTip(LLTrans::getString("LocationCtrlBuildTooltip"));
 	mParcelIcon[SCRIPTS_ICON]->setToolTip(LLTrans::getString("LocationCtrlScriptsTooltip"));
 	mParcelIcon[DAMAGE_ICON]->setToolTip(LLTrans::getString("LocationCtrlDamageTooltip"));
+	mParcelIcon[PRIVACY_ICON]->setToolTip(LLTrans::getString("LocationCtrlPrivacyTooltip"));
 
 	mParcelIcon[VOICE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, VOICE_ICON));
 	mParcelIcon[FLY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, FLY_ICON));
@@ -116,6 +118,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, BUILD_ICON));
 	mParcelIcon[SCRIPTS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SCRIPTS_ICON));
 	mParcelIcon[DAMAGE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, DAMAGE_ICON));
+	mParcelIcon[PRIVACY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, PRIVACY_ICON));
 
 	mDamageText->setText(LLStringExplicit("100%"));
 }
@@ -295,6 +298,7 @@ void LLPanelTopInfoBar::updateParcelIcons()
 		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
+		bool privacy        = current_parcel->getPrivacy();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -304,6 +308,7 @@ void LLPanelTopInfoBar::updateParcelIcons()
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
 		mDamageText->setVisible(allow_damage);
+		mParcelIcon[PRIVACY_ICON]->setVisible(  privacy );
 
 		layoutParcelIcons();
 	}
@@ -409,6 +414,9 @@ void LLPanelTopInfoBar::onParcelIconClick(EParcelIcon icon)
 	case DAMAGE_ICON:
 		LLNotificationsUtil::add("NotSafe");
 		break;
+	case PRIVACY_ICON:
+		LLNotificationsUtil::add("PrivateParcel");
+		break;
 	case ICON_COUNT:
 		break;
 	// no default to get compiler warning when a new icon gets added
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index db922ef424..f497ce9633 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -65,12 +65,13 @@ private:
 	enum EParcelIcon
 	{
 		VOICE_ICON = 0,
-		FLY_ICON,
-		PUSH_ICON,
-		BUILD_ICON,
-		SCRIPTS_ICON,
-		DAMAGE_ICON,
-		ICON_COUNT
+		FLY_ICON,			// 1
+		PUSH_ICON,			// 2
+		BUILD_ICON,			// 3
+		SCRIPTS_ICON,		// 4
+		DAMAGE_ICON,		// 5
+		PRIVACY_ICON,		// 6
+		ICON_COUNT			// 7 total
 	};
 
 	/**
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png
new file mode 100644
index 0000000000..5f9fba4447
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png
new file mode 100644
index 0000000000..ad93163a85
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 1ca48b01a8..93dab65bcd 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -1,4 +1,4 @@
-<!--
+<!--
 This file contains metadata about how to load, display, and scale textures for rendering in the UI.
 Images do *NOT* have to appear in this file in order to use them as textures in the UI...simply refer
 to them by filename (relative to textures directory).
@@ -348,6 +348,8 @@ with the same filename but different name
  <texture name="Parcel_ScriptsNo_Dark" file_name="icons/Parcel_ScriptsNo_Dark.png" preload="false" />
  <texture name="Parcel_Voice_Dark" file_name="icons/Parcel_Voice_Dark.png" preload="false" />
  <texture name="Parcel_VoiceNo_Dark" file_name="icons/Parcel_VoiceNo_Dark.png" preload="false" />
+ <texture name="Parcel_PrivacyOff_Dark" file_name="icons/Parcel_PrivacyOff_Dark.png" preload="false" />
+ <texture name="Parcel_PrivacyOn_Dark" file_name="icons/Parcel_PrivacyOn_Dark.png" preload="false" />
 
  <texture name="Parcel_BuildNo_Light" file_name="icons/Parcel_BuildNo_Light.png" preload="false" />
  <texture name="Parcel_FlyNo_Light" file_name="icons/Parcel_FlyNo_Light.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 3fb3717e68..c865347304 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5627,6 +5627,17 @@ This area has voice chat disabled. You won&apos;t be able to hear anyone talking
 This area has building disabled. You can&apos;t build or rez objects here.
   </notification>
 
+  <notification
+   icon="privacy.tga"
+   name="PrivateParcel"
+   persist="true"
+   type="notify"
+   unique="true">
+This is a private parcel.   You can&apos;t see 
+others outside the parcel, and those 
+outside are not able to see you.
+  </notification>
+
   <notification
    icon="notify.tga"
    name="ScriptsStopped"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 7e89860c60..66be6701fb 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -153,6 +153,14 @@
      name="icon_DamageNo"
      translate="false"
      value="Parcel_DamageNo_Dark" />
+    <string
+     name="icon_PrivacyOff"
+     translate="false"
+     value="Parcel_PrivacyOff_Dark" />
+    <string
+     name="icon_PrivacyOn"
+     translate="false"
+     value="Parcel_PrivacyOn_Dark" />
     <button
      follows="top|left"
      height="24"
@@ -543,6 +551,31 @@
                          top_delta="0"
                          value="Off"
                          width="60" />
+                        <icon
+                         follows="top|left"
+                         height="18"
+                         image_name="Parcel_PrivacyOff_Dark"
+                         layout="topleft"
+                         left="10"
+                         name="privacy_icon"
+                         top_pad="7"
+                         width="22" />
+                        <text
+                         follows="left|top"
+                         height="14"
+                         layout="topleft"
+                         left_pad="8"
+                         name="privacy_label"
+                         value="Privacy:"
+                         width="90" />
+                        <text
+                         follows="left|top"
+                         height="14"
+                         layout="topleft"
+                         left_pad="0"
+                         name="privacy_value"
+                         value="Off"
+                         width="60" />
                         <button
                          follows="bottom|right"
                          height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 30d3064e14..98cb17bbce 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -88,6 +88,16 @@
     visible="false"
     width="14"
     />
+  <icon
+    follows="right|top"
+    height="13"
+    image_name="Parcel_PrivacyOff_Dark"
+    left="2"
+    name="privacy_icon"
+    top="3"
+    visible="false"
+    width="14"
+    />
   <text
     follows="right|top"
     font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index b0ede60fa0..6658d6f683 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3043,6 +3043,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="LocationCtrlAdultIconTooltip">Adult Region</string>
   <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
   <string name="LocationCtrlGeneralIconTooltip">General Region</string>
+  <string name="LocationCtrlPrivacyTooltip">Private Parcel</string>
 
   <!-- Strings used by the (currently Linux) auto-updater app -->
 	<string name="UpdaterWindowTitle">
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 37d60f1671..c818cdfaeb 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -123,6 +123,15 @@
 	font="SansSerifSmall"
 	text_color="TextFgColor"
 	/>
+  <privacy_icon
+    name="privacy_icon"
+    width="14"
+    height="13"
+    top="19"
+    left="2"
+    follows="right|top"
+    image_name="Parcel_PrivacyOn_Dark"
+    />
   <combo_button
 		name="Location History"
                 label=""
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
index fe06a2d816..1292b43605 100644
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
@@ -113,6 +113,15 @@
 	  font="SansSerifSmall"
 	  text_color="TextFgColor"
 	/>
+  <privacy_icon
+    name="privacy_icon"
+    width="14"
+    height="13"
+    top="19"
+    left="2"
+    follows="right|top"
+    image_name="Parcel_PrivacyOn_Dark"
+    />
   <combo_button
 		name="Location History"
                 label=""
-- 
cgit v1.2.3


From b55d678f8da105aa02d913abcbf66fc9bd167363 Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Mon, 9 May 2011 11:00:54 -0700
Subject: Clean up parcel privacy icons and locations

---
 .../default/textures/icons/Parcel_PrivacyOff_Dark.png   | Bin 787 -> 730 bytes
 .../default/textures/icons/Parcel_PrivacyOn_Dark.png    | Bin 833 -> 814 bytes
 .../skins/default/xui/en/widgets/location_input.xml     |   7 +++----
 .../skins/minimal/xui/en/widgets/location_input.xml     |   9 ++++-----
 4 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png
index 5f9fba4447..8b3376e514 100644
Binary files a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png and b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png
index ad93163a85..4e474d7f5a 100644
Binary files a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png and b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png differ
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index c818cdfaeb..5a60576b4a 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -125,10 +125,9 @@
 	/>
   <privacy_icon
     name="privacy_icon"
-    width="14"
-    height="13"
-    top="19"
-    left="2"
+    width="22"
+    height="18"
+    top="21"
     follows="right|top"
     image_name="Parcel_PrivacyOn_Dark"
     />
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
index 1292b43605..531e378425 100644
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
@@ -115,12 +115,11 @@
 	/>
   <privacy_icon
     name="privacy_icon"
-    width="14"
-    height="13"
-    top="19"
-    left="2"
+    width="0"
+    height="0"
+    visible="false" 
+    top="21"
     follows="right|top"
-    image_name="Parcel_PrivacyOn_Dark"
     />
   <combo_button
 		name="Location History"
-- 
cgit v1.2.3


From 11f988cd09daa8f33a21b7f82201e4b59e8a04ad Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Mon, 9 May 2011 16:33:42 -0700
Subject: Change BuildParams to set public_build = false for this branch

---
 BuildParams | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/BuildParams b/BuildParams
index 2cb58755e5..b843ee348b 100644
--- a/BuildParams
+++ b/BuildParams
@@ -214,4 +214,10 @@ viewer-vs2010.build_debug_release_separately = true
 viewer-vs2010.build_viewer_update_version_manager = false
 viewer-vs2010.build_link_parallel = false
 
+# ========================================
+# Simon says
+# ========================================
+simon_viewer-dev-private.public_build = false
+
+
 # eof
-- 
cgit v1.2.3


From ff3289e2f3a8e87ce33cb267ad30b4a431406f9e Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Fri, 13 May 2011 13:56:49 -0700
Subject: ER-898: Modify llGetParcelDetails() on viewer to support parcel
 privacy.  Reviewed by Kelly.

---
 indra/llinventory/llparcelflags.h              | 2 ++
 indra/lscript/lscript_compile/indra.l          | 2 ++
 indra/newview/app_settings/keywords.ini        | 1 +
 indra/newview/skins/default/xui/en/strings.xml | 2 +-
 4 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/indra/llinventory/llparcelflags.h b/indra/llinventory/llparcelflags.h
index a61130132a..a3d131c7a2 100644
--- a/indra/llinventory/llparcelflags.h
+++ b/indra/llinventory/llparcelflags.h
@@ -126,5 +126,7 @@ const S32 PARCEL_DETAILS_DESC = 1;
 const S32 PARCEL_DETAILS_OWNER = 2;
 const S32 PARCEL_DETAILS_GROUP = 3;
 const S32 PARCEL_DETAILS_AREA = 4;
+const S32 PARCEL_DETAILS_ID = 5;
+const S32 PARCEL_DETAILS_PRIVACY = 6;
 
 #endif
diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l
index 188c9e1950..ee31510efb 100644
--- a/indra/lscript/lscript_compile/indra.l
+++ b/indra/lscript/lscript_compile/indra.l
@@ -603,6 +603,8 @@ extern "C" { int yyerror(const char *fmt, ...); }
 "PARCEL_DETAILS_OWNER"	{ count(); yylval.ival = PARCEL_DETAILS_OWNER; return(INTEGER_CONSTANT); }
 "PARCEL_DETAILS_GROUP"	{ count(); yylval.ival = PARCEL_DETAILS_GROUP; return(INTEGER_CONSTANT); }
 "PARCEL_DETAILS_AREA"	{ count(); yylval.ival = PARCEL_DETAILS_AREA; return(INTEGER_CONSTANT); }
+"PARCEL_DETAILS_ID"		{ count(); yylval.ival = PARCEL_DETAILS_ID; return(INTEGER_CONSTANT); }
+"PARCEL_DETAILS_PRIVACY"	{ count(); yylval.ival = PARCEL_DETAILS_PRIVACY; return(INTEGER_CONSTANT); }
 
 "STRING_TRIM_HEAD"	{ count(); yylval.ival = STRING_TRIM_HEAD; return(INTEGER_CONSTANT); }
 "STRING_TRIM_TAIL"	{ count(); yylval.ival = STRING_TRIM_TAIL; return(INTEGER_CONSTANT); }
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 263b73ba23..6426d5c2a8 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -498,6 +498,7 @@ PARCEL_DETAILS_OWNER	Used with llGetParcelDetails to get the parcel owner id.
 PARCEL_DETAILS_GROUP	Used with llGetParcelDetails to get the parcel group id.
 PARCEL_DETAILS_AREA		Used with llGetParcelDetails to get the parcel area in square meters.
 PARCEL_DETAILS_ID		Used with llGetParcelDetails to get the parcel id.
+PARCEL_DETAILS_PRIVACY	Used with llGetParcelDetails to get the parcel privacy setting.
 
 STRING_TRIM_HEAD		Used with llStringTrim to trim leading spaces from a string.
 STRING_TRIM_TAIL		Used with llStringTrim to trim trailing spaces from a string.
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 6658d6f683..92a2296740 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1683,7 +1683,7 @@ Returns the maximum number of prims allowed on the parcel at pos
 	<string name="LSLTipText_llGetParcelDetails" translate="false">
 list llGetParcelDetails(vector pos, list params)
 Returns the parcel details specified in params for the parcel at pos.
-Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA
+Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA, _ID, _PRIVACY
 	</string>
 	<string name="LSLTipText_llSetLinkPrimitiveParams" translate="false">
 llSetLinkPrimitiveParams(integer linknumber, list rules)
-- 
cgit v1.2.3


From 1a5b3b0a9091a72fd5e5fb395f7f0c97b0fd502c Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Tue, 24 May 2011 10:44:27 -0700
Subject: ER-914:  Disable Parcel Privacy UI in viewer if on older sim

---
 indra/llinventory/llparcel.cpp  | 4 ++++
 indra/llinventory/llparcel.h    | 4 +++-
 indra/newview/llfloaterland.cpp | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index 7562bb8320..6236c0df6b 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -226,6 +226,9 @@ void LLParcel::init(const LLUUID &owner_id,
 
 	setPreviousOwnerID(LLUUID::null);
 	setPreviouslyGroupOwned(FALSE);
+
+	setPrivacy(false);
+	setHavePrivacyData(false);
 }
 
 void LLParcel::overrideOwner(const LLUUID& owner_id, BOOL is_group_owned)
@@ -728,6 +731,7 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
 		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_Privacy, private_parcel);
 	}
 	setPrivacy((bool) private_parcel);
+	setHavePrivacyData(have_privacy_data);
 
     // non-optimized version
     msg->getU8 ( "ParcelData", "MediaAutoScale", mMediaAutoScale );
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index 4d2236ec66..1b2f372888 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -272,6 +272,7 @@ public:
 	void setUserLookAt(const LLVector3& rot)	{ mUserLookAt = rot; }
 	void setLandingType(const ELandingType type) { mLandingType = type; }
 	void setPrivacy(bool privacy)	{ mPrivacy = privacy;	}
+	void setHavePrivacyData(bool have_privacy_data)		{ mHavePrivacyData = have_privacy_data;		}		// Remove this once parcel privacy is fully available grid-wide
 
 	void setAuctionID(U32 auction_id) { mAuctionID = auction_id;}
 
@@ -375,7 +376,7 @@ public:
 	const LLVector3& getUserLookAt() const	{ return mUserLookAt; }
 	ELandingType getLandingType() const	{ return mLandingType; }
 	bool getPrivacy() const				{ return mPrivacy;		}
-
+	bool getHavePrivacyData() const		{ return mHavePrivacyData;	}
 
 	// User-specified snapshot
 	const LLUUID&	getSnapshotID() const		{ return mSnapshotID; }
@@ -612,6 +613,7 @@ protected:
 	LLVector3 mUserLookAt;
 	ELandingType mLandingType;
 	bool mPrivacy;
+	bool mHavePrivacyData;			// Remove once parcel privacy is grid-wide
 	LLTimer mSaleTimerExpires;
 	LLTimer mMediaResetTimer;
 
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index d9d2c3d5a6..8de93a385f 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2036,7 +2036,7 @@ void LLPanelLandOptions::refresh()
 
 		mPrivateParcelCtrl->set(parcel->getPrivacy());
 		mPrivateParcelCtrl->setLabel(getString("private_parcel_text"));
-		mPrivateParcelCtrl->setEnabled(can_change_options);
+		mPrivateParcelCtrl->setEnabled(can_change_options && parcel->getHavePrivacyData());
 
 		BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, 
 														GP_LAND_SET_LANDING_POINT);
-- 
cgit v1.2.3


From 50393788693578a2fe3a934faa04b382d75f1657 Mon Sep 17 00:00:00 2001
From: Dave SIMmONs <simon@lindenlab.com>
Date: Thu, 9 Jun 2011 13:46:19 -0700
Subject: ER-910: Parcel Privacy.  Rename things in code to reflect feature
 name change to "hidden avatars"

---
 indra/llinventory/llparcel.cpp                     |  18 +++++++-------
 indra/llinventory/llparcel.h                       |  14 +++++------
 indra/llinventory/llparcelflags.h                  |   2 +-
 indra/llmessage/message_prehash.cpp                |   2 +-
 indra/llmessage/message_prehash.h                  |   2 +-
 indra/lscript/lscript_compile/indra.l              |   2 +-
 indra/newview/app_settings/keywords.ini            |   2 +-
 indra/newview/llfloaterland.cpp                    |  10 ++++----
 indra/newview/lllocationinputctrl.cpp              |  22 ++++++++---------
 indra/newview/lllocationinputctrl.h                |   4 ++--
 indra/newview/llpanelplaceprofile.cpp              |  26 ++++++++++-----------
 indra/newview/llpanelplaceprofile.h                |   4 ++--
 indra/newview/llpaneltopinfobar.cpp                |  14 +++++------
 indra/newview/llpaneltopinfobar.h                  |   2 +-
 .../textures/icons/Parcel_HiddenAVsOff_Dark.png    | Bin 0 -> 730 bytes
 .../textures/icons/Parcel_HiddenAVsOn_Dark.png     | Bin 0 -> 814 bytes
 .../textures/icons/Parcel_PrivacyOff_Dark.png      | Bin 730 -> 0 bytes
 .../textures/icons/Parcel_PrivacyOn_Dark.png       | Bin 814 -> 0 bytes
 indra/newview/skins/default/textures/textures.xml  |   4 ++--
 .../skins/default/xui/en/floater_about_land.xml    |   4 ++--
 .../newview/skins/default/xui/en/notifications.xml |   8 +++----
 .../skins/default/xui/en/panel_place_profile.xml   |  20 ++++++++--------
 .../skins/default/xui/en/panel_topinfo_bar.xml     |   4 ++--
 indra/newview/skins/default/xui/en/strings.xml     |  10 ++++----
 .../default/xui/en/widgets/location_input.xml      |   6 ++---
 .../minimal/xui/en/widgets/location_input.xml      |   4 ++--
 26 files changed, 91 insertions(+), 93 deletions(-)
 create mode 100644 indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.png
 create mode 100644 indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.png
 delete mode 100644 indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png
 delete mode 100644 indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png

diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp
index c79d410ade..b388d34580 100644
--- a/indra/llinventory/llparcel.cpp
+++ b/indra/llinventory/llparcel.cpp
@@ -227,8 +227,8 @@ void LLParcel::init(const LLUUID &owner_id,
 	setPreviousOwnerID(LLUUID::null);
 	setPreviouslyGroupOwned(FALSE);
 
-	setPrivacy(false);
-	setHavePrivacyData(false);
+	setHiddenAVs(false);
+	setHaveHiddenAVsData(false);
 }
 
 void LLParcel::overrideOwner(const LLUUID& owner_id, BOOL is_group_owned)
@@ -705,7 +705,7 @@ void LLParcel::packMessage(LLSD& msg)
 	msg["user_location"] = ll_sd_from_vector3(mUserLocation);
 	msg["user_look_at"] = ll_sd_from_vector3(mUserLookAt);
 	msg["landing_type"] = (U8)mLandingType;
-	msg["privacy"] = (LLSD::Boolean) getPrivacy();
+	msg["hidden_avs"] = (LLSD::Boolean) getHiddenAVs();
 }
 
 
@@ -724,14 +724,14 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)
     msg->getStringFast( _PREHASH_ParcelData,_PREHASH_MediaURL, buffer );
     setMediaURL(buffer);
     
-	BOOL private_parcel = FALSE;
-	bool have_privacy_data = (msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_Privacy) > 0);
-	if (have_privacy_data)
+	BOOL hidden_avs = FALSE;
+	bool have_hidden_av_data = (msg->getSizeFast(_PREHASH_ParcelData, _PREHASH_HiddenAVs) > 0);
+	if (have_hidden_av_data)
 	{
-		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_Privacy, private_parcel);
+		msg->getBOOLFast(_PREHASH_ParcelData, _PREHASH_HiddenAVs, hidden_avs);
 	}
-	setPrivacy((bool) private_parcel);
-	setHavePrivacyData(have_privacy_data);
+	setHiddenAVs((bool) hidden_avs);
+	setHaveHiddenAVsData(have_hidden_av_data);
 
     // non-optimized version
     msg->getU8 ( "ParcelData", "MediaAutoScale", mMediaAutoScale );
diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index edf1e9d4fd..e785dba91b 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -75,7 +75,7 @@ const U8 PARCEL_AUCTION		= 0x05;
 // unused 0x06
 // unused 0x07
 // flag, unused 0x08
-const U8 PARCEL_PRIVATE     = 0x10;
+const U8 PARCEL_HIDDENAVS   = 0x10;	// avatars not visible outside of parcel
 const U8 PARCEL_SOUND_LOCAL = 0x20;
 const U8 PARCEL_WEST_LINE	= 0x40;	// flag, property line on west edge
 const U8 PARCEL_SOUTH_LINE	= 0x80;	// flag, property line on south edge
@@ -271,8 +271,8 @@ public:
 	void setUserLocation(const LLVector3& pos)	{ mUserLocation = pos; }
 	void setUserLookAt(const LLVector3& rot)	{ mUserLookAt = rot; }
 	void setLandingType(const ELandingType type) { mLandingType = type; }
-	void setPrivacy(bool privacy)	{ mPrivacy = privacy;	}
-	void setHavePrivacyData(bool have_privacy_data)		{ mHavePrivacyData = have_privacy_data;		}		// Remove this once parcel privacy is fully available grid-wide
+	void setHiddenAVs(bool hidden_avs)	{ mHiddenAVs = hidden_avs;	}
+	void setHaveHiddenAVsData(bool have_hidden_av_data)		{ mHaveHiddenAVData = have_hidden_av_data;		}		// Remove this once hidden AV feature is fully available grid-wide
 
 	void setAuctionID(U32 auction_id) { mAuctionID = auction_id;}
 
@@ -375,8 +375,8 @@ public:
 	const LLVector3& getUserLocation() const	{ return mUserLocation; }
 	const LLVector3& getUserLookAt() const	{ return mUserLookAt; }
 	ELandingType getLandingType() const	{ return mLandingType; }
-	bool getPrivacy() const				{ return mPrivacy;		}
-	bool getHavePrivacyData() const		{ return mHavePrivacyData;	}
+	bool getHiddenAVs() const			{ return mHiddenAVs;		}
+	bool getHaveHiddenAVsData() const	{ return mHaveHiddenAVData;	}
 
 	// User-specified snapshot
 	const LLUUID&	getSnapshotID() const		{ return mSnapshotID; }
@@ -616,8 +616,8 @@ protected:
 	LLVector3 mUserLocation;
 	LLVector3 mUserLookAt;
 	ELandingType mLandingType;
-	bool mPrivacy;
-	bool mHavePrivacyData;			// Remove once parcel privacy is grid-wide
+	bool mHiddenAVs;				// Avatars are hidden on this parcel from outside it
+	bool mHaveHiddenAVData;			// Remove once hidden AV feature is grid-wide
 	LLTimer mSaleTimerExpires;
 	LLTimer mMediaResetTimer;
 
diff --git a/indra/llinventory/llparcelflags.h b/indra/llinventory/llparcelflags.h
index a3d131c7a2..a85a6a51b3 100644
--- a/indra/llinventory/llparcelflags.h
+++ b/indra/llinventory/llparcelflags.h
@@ -127,6 +127,6 @@ const S32 PARCEL_DETAILS_OWNER = 2;
 const S32 PARCEL_DETAILS_GROUP = 3;
 const S32 PARCEL_DETAILS_AREA = 4;
 const S32 PARCEL_DETAILS_ID = 5;
-const S32 PARCEL_DETAILS_PRIVACY = 6;
+const S32 PARCEL_DETAILS_HIDDEN_AVS = 6;
 
 #endif
diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp
index 020ece5414..1248436f16 100644
--- a/indra/llmessage/message_prehash.cpp
+++ b/indra/llmessage/message_prehash.cpp
@@ -1375,4 +1375,4 @@ char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getStri
 char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex");
 char const* const _PREHASH_StatusData = LLMessageStringTable::getInstance()->getString("StatusData");
 char const* const _PREHASH_ProductSKU = LLMessageStringTable::getInstance()->getString("ProductSKU");
-char const* const _PREHASH_Privacy = LLMessageStringTable::getInstance()->getString("Privacy");
+char const* const _PREHASH_HiddenAVs = LLMessageStringTable::getInstance()->getString("HiddenAVs");
diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h
index 32bf882d90..f871caa3df 100644
--- a/indra/llmessage/message_prehash.h
+++ b/indra/llmessage/message_prehash.h
@@ -1375,5 +1375,5 @@ extern char const* const _PREHASH_VCoord;
 extern char const* const _PREHASH_FaceIndex;
 extern char const* const _PREHASH_StatusData;
 extern char const* const _PREHASH_ProductSKU;
-extern char const* const _PREHASH_Privacy;
+extern char const* const _PREHASH_HiddenAVs;
 #endif
diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l
index ee31510efb..78e31ead1a 100644
--- a/indra/lscript/lscript_compile/indra.l
+++ b/indra/lscript/lscript_compile/indra.l
@@ -604,7 +604,7 @@ extern "C" { int yyerror(const char *fmt, ...); }
 "PARCEL_DETAILS_GROUP"	{ count(); yylval.ival = PARCEL_DETAILS_GROUP; return(INTEGER_CONSTANT); }
 "PARCEL_DETAILS_AREA"	{ count(); yylval.ival = PARCEL_DETAILS_AREA; return(INTEGER_CONSTANT); }
 "PARCEL_DETAILS_ID"		{ count(); yylval.ival = PARCEL_DETAILS_ID; return(INTEGER_CONSTANT); }
-"PARCEL_DETAILS_PRIVACY"	{ count(); yylval.ival = PARCEL_DETAILS_PRIVACY; return(INTEGER_CONSTANT); }
+"PARCEL_DETAILS_HIDDEN_AVS"	{ count(); yylval.ival = PARCEL_DETAILS_HIDDEN_AVS; return(INTEGER_CONSTANT); }
 
 "STRING_TRIM_HEAD"	{ count(); yylval.ival = STRING_TRIM_HEAD; return(INTEGER_CONSTANT); }
 "STRING_TRIM_TAIL"	{ count(); yylval.ival = STRING_TRIM_TAIL; return(INTEGER_CONSTANT); }
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 6426d5c2a8..4e8f90d901 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -498,7 +498,7 @@ PARCEL_DETAILS_OWNER	Used with llGetParcelDetails to get the parcel owner id.
 PARCEL_DETAILS_GROUP	Used with llGetParcelDetails to get the parcel group id.
 PARCEL_DETAILS_AREA		Used with llGetParcelDetails to get the parcel area in square meters.
 PARCEL_DETAILS_ID		Used with llGetParcelDetails to get the parcel id.
-PARCEL_DETAILS_PRIVACY	Used with llGetParcelDetails to get the parcel privacy setting.
+PARCEL_DETAILS_HIDDEN_AVS	Used with llGetParcelDetails to get the hidden avatars setting.
 
 STRING_TRIM_HEAD		Used with llStringTrim to trim leading spaces from a string.
 STRING_TRIM_TAIL		Used with llStringTrim to trim trailing spaces from a string.
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 8de93a385f..0300867363 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -2034,9 +2034,9 @@ void LLPanelLandOptions::refresh()
 			mPushRestrictionCtrl->setEnabled(can_change_options);
 		}
 
-		mPrivateParcelCtrl->set(parcel->getPrivacy());
-		mPrivateParcelCtrl->setLabel(getString("private_parcel_text"));
-		mPrivateParcelCtrl->setEnabled(can_change_options && parcel->getHavePrivacyData());
+		mPrivateParcelCtrl->set(parcel->getHiddenAVs());
+		mPrivateParcelCtrl->setLabel(getString("hidden_avs_text"));
+		mPrivateParcelCtrl->setEnabled(can_change_options && parcel->getHaveHiddenAVsData());
 
 		BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, 
 														GP_LAND_SET_LANDING_POINT);
@@ -2242,7 +2242,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	BOOL allow_publish		= FALSE;
 	BOOL mature_publish		= self->mMatureCtrl->get();
 	BOOL push_restriction	= self->mPushRestrictionCtrl->get();
-	BOOL private_parcel     = self->mPrivateParcelCtrl->get();
+	BOOL hidden_avs     = self->mPrivateParcelCtrl->get();
 	BOOL show_directory		= self->mCheckShowDirectory->get();
 	// we have to get the index from a lookup, not from the position in the dropdown!
 	S32  category_index		= LLParcel::getCategoryFromString(self->mCategoryCombo->getSelectedValue());
@@ -2276,7 +2276,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	parcel->setCategory((LLParcel::ECategory)category_index);
 	parcel->setLandingType((LLParcel::ELandingType)landing_type_index);
 	parcel->setSnapshotID(snapshot_id);
-	parcel->setPrivacy(private_parcel);
+	parcel->setHiddenAVs(hidden_avs);
 
 	// Send current parcel data upstream to server
 	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel );
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index c68d1bb845..7a988e95b9 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -190,7 +190,7 @@ LLLocationInputCtrl::Params::Params()
 	scripts_icon("scripts_icon"),
 	damage_icon("damage_icon"),
 	damage_text("damage_text"),
-	privacy_icon("privacy_icon"),
+	hidden_av_icon("hidden_av_icon"),
 	maturity_help_topic("maturity_help_topic")
 {
 }
@@ -343,12 +343,12 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mDamageText = LLUICtrlFactory::create<LLTextBox>(damage_text);
 	addChild(mDamageText);
 	
-	LLIconCtrl::Params privacy_icon = p.privacy_icon;
-	privacy_icon.tool_tip = LLTrans::getString("LocationCtrlPrivacyTooltip");
-	privacy_icon.mouse_opaque = true;
-	mParcelIcon[PRIVACY_ICON] = LLUICtrlFactory::create<LLIconCtrl>(privacy_icon);
-	mParcelIcon[PRIVACY_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, PRIVACY_ICON));
-	addChild(mParcelIcon[PRIVACY_ICON]);
+	LLIconCtrl::Params hidden_av_icon = p.hidden_av_icon;
+	hidden_av_icon.tool_tip = LLTrans::getString("LocationCtrlHiddenAVsTooltip");
+	hidden_av_icon.mouse_opaque = true;
+	mParcelIcon[HIDDEN_AV_ICON] = LLUICtrlFactory::create<LLIconCtrl>(hidden_av_icon);
+	mParcelIcon[HIDDEN_AV_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, HIDDEN_AV_ICON));
+	addChild(mParcelIcon[HIDDEN_AV_ICON]);
 	
 	// Register callbacks and load the location field context menu (NB: the order matters).
 	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Navbar.Action", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemClicked, this, _2));
@@ -818,7 +818,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
-		bool privacy        = current_parcel->getPrivacy();
+		bool hidden_avs        = current_parcel->getHiddenAVs();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -828,7 +828,7 @@ void LLLocationInputCtrl::refreshParcelIcons()
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
 		mDamageText->setVisible(allow_damage);
-		mParcelIcon[PRIVACY_ICON]->setVisible(  privacy );
+		mParcelIcon[HIDDEN_AV_ICON]->setVisible( hidden_avs );
 
 		// Padding goes to left of both landmark star and for sale btn
 		x -= mAddLandmarkHPad;
@@ -1185,8 +1185,8 @@ void LLLocationInputCtrl::onParcelIconClick(EParcelIcon icon)
 	case DAMAGE_ICON:
 		LLNotificationsUtil::add("NotSafe");
 		break;
-	case PRIVACY_ICON:
-		LLNotificationsUtil::add("PrivateParcel");
+	case HIDDEN_AV_ICON:
+		LLNotificationsUtil::add("HiddenAVs");
 		break;
 	case ICON_COUNT:
 		break;
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index ee4e55e829..ead20efcb6 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -78,7 +78,7 @@ public:
 											build_icon,
 											scripts_icon,
 											damage_icon,
-											privacy_icon;
+											hidden_av_icon;
 		Optional<LLTextBox::Params>			damage_text;
 		Params();
 	};
@@ -115,7 +115,7 @@ private:
 		BUILD_ICON,			// 3
 		SCRIPTS_ICON,		// 4
 		DAMAGE_ICON,		// 5
-		PRIVACY_ICON,		// 6
+		HIDDEN_AV_ICON,		// 6
 		ICON_COUNT			// 7 total
 	};
 
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index da6a9fbbc6..1500ac5429 100644
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -70,8 +70,8 @@ static std::string icon_scripts;
 static std::string icon_scripts_no;
 static std::string icon_damage;
 static std::string icon_damage_no;
-static std::string icon_privacy_on;
-static std::string icon_privacy_off;
+static std::string icon_hidden_avs_on;
+static std::string icon_hidden_avs_off;
 
 LLPanelPlaceProfile::LLPanelPlaceProfile()
 :	LLPanelPlaceInfo(),
@@ -116,8 +116,8 @@ BOOL LLPanelPlaceProfile::postBuild()
 	mScriptsText = getChild<LLTextBox>("scripts_value");
 	mDamageIcon = getChild<LLIconCtrl>("damage_icon");
 	mDamageText = getChild<LLTextBox>("damage_value");
-	mPrivacyIcon = getChild<LLIconCtrl>("privacy_icon");
-	mPrivacyText = getChild<LLTextBox>("privacy_value");
+	mHiddenAVsIcon = getChild<LLIconCtrl>("hidden_av_icon");
+	mHiddenAVsText = getChild<LLTextBox>("hidden_av_value");
 
 	mRegionNameText = getChild<LLTextBox>("region_name");
 	mRegionTypeText = getChild<LLTextBox>("region_type");
@@ -157,8 +157,8 @@ BOOL LLPanelPlaceProfile::postBuild()
 	icon_scripts_no = getString("icon_ScriptsNo");
 	icon_damage = getString("icon_Damage");
 	icon_damage_no = getString("icon_DamageNo");
-	icon_privacy_on = getString("icon_PrivacyOn");
-	icon_privacy_off = getString("icon_PrivacyOff");
+	icon_hidden_avs_on = getString("icon_HiddenAVsOn");
+	icon_hidden_avs_off = getString("icon_HiddenAVsOff");
 
 	return TRUE;
 }
@@ -188,8 +188,8 @@ void LLPanelPlaceProfile::resetLocation()
 	mScriptsText->setText(loading);
 	mDamageIcon->setValue(loading);
 	mDamageText->setText(loading);
-	mPrivacyIcon->setValue(loading);
-	mPrivacyText->setText(loading);
+	mHiddenAVsIcon->setValue(loading);
+	mHiddenAVsText->setText(loading);
 
 	mRegionNameText->setValue(loading);
 	mRegionTypeText->setValue(loading);
@@ -422,15 +422,15 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
 		mDamageText->setText(off);
 	}
 
-	if (parcel->getPrivacy())
+	if (parcel->getHiddenAVs())
 	{
-		mPrivacyIcon->setValue(icon_privacy_on);
-		mPrivacyText->setText(on);
+		mHiddenAVsIcon->setValue(icon_hidden_avs_on);
+		mHiddenAVsText->setText(on);
 	}
 	else
 	{
-		mPrivacyIcon->setValue(icon_privacy_off);
-		mPrivacyText->setText(off);
+		mHiddenAVsIcon->setValue(icon_hidden_avs_off);
+		mHiddenAVsText->setText(off);
 	}
 
 	mRegionNameText->setText(region->getName());
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index b20107dc4b..6550dae06b 100644
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -91,8 +91,8 @@ private:
 	LLTextBox*			mScriptsText;
 	LLIconCtrl*			mDamageIcon;
 	LLTextBox*			mDamageText;
-	LLIconCtrl*			mPrivacyIcon;
-	LLTextBox*			mPrivacyText;
+	LLIconCtrl*			mHiddenAVsIcon;
+	LLTextBox*			mHiddenAVsText;
 
 	LLTextBox*			mRegionNameText;
 	LLTextBox*			mRegionTypeText;
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index c2359b8b23..d1d7c3e4b9 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -102,7 +102,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON] = getChild<LLIconCtrl>("build_icon");
 	mParcelIcon[SCRIPTS_ICON] = getChild<LLIconCtrl>("scripts_icon");
 	mParcelIcon[DAMAGE_ICON] = getChild<LLIconCtrl>("damage_icon");
-	mParcelIcon[PRIVACY_ICON] = getChild<LLIconCtrl>("privacy_icon");
+	mParcelIcon[HIDDEN_AV_ICON] = getChild<LLIconCtrl>("hidden_av_icon");
 
 	mParcelIcon[VOICE_ICON]->setToolTip(LLTrans::getString("LocationCtrlVoiceTooltip"));
 	mParcelIcon[FLY_ICON]->setToolTip(LLTrans::getString("LocationCtrlFlyTooltip"));
@@ -110,7 +110,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON]->setToolTip(LLTrans::getString("LocationCtrlBuildTooltip"));
 	mParcelIcon[SCRIPTS_ICON]->setToolTip(LLTrans::getString("LocationCtrlScriptsTooltip"));
 	mParcelIcon[DAMAGE_ICON]->setToolTip(LLTrans::getString("LocationCtrlDamageTooltip"));
-	mParcelIcon[PRIVACY_ICON]->setToolTip(LLTrans::getString("LocationCtrlPrivacyTooltip"));
+	mParcelIcon[HIDDEN_AV_ICON]->setToolTip(LLTrans::getString("LocationCtrlHiddenAVsTooltip"));
 
 	mParcelIcon[VOICE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, VOICE_ICON));
 	mParcelIcon[FLY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, FLY_ICON));
@@ -118,7 +118,7 @@ void LLPanelTopInfoBar::initParcelIcons()
 	mParcelIcon[BUILD_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, BUILD_ICON));
 	mParcelIcon[SCRIPTS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SCRIPTS_ICON));
 	mParcelIcon[DAMAGE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, DAMAGE_ICON));
-	mParcelIcon[PRIVACY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, PRIVACY_ICON));
+	mParcelIcon[HIDDEN_AV_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, HIDDEN_AV_ICON));
 
 	mDamageText->setText(LLStringExplicit("100%"));
 }
@@ -298,7 +298,7 @@ void LLPanelTopInfoBar::updateParcelIcons()
 		bool allow_build	= vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610.
 		bool allow_scripts	= vpm->allowAgentScripts(agent_region, current_parcel);
 		bool allow_damage	= vpm->allowAgentDamage(agent_region, current_parcel);
-		bool privacy        = current_parcel->getPrivacy();
+		bool hidden_avs        = current_parcel->getHiddenAVs();
 
 		// Most icons are "block this ability"
 		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
@@ -308,7 +308,7 @@ void LLPanelTopInfoBar::updateParcelIcons()
 		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
 		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
 		mDamageText->setVisible(allow_damage);
-		mParcelIcon[PRIVACY_ICON]->setVisible(  privacy );
+		mParcelIcon[HIDDEN_AV_ICON]->setVisible( hidden_avs );
 
 		layoutParcelIcons();
 	}
@@ -414,8 +414,8 @@ void LLPanelTopInfoBar::onParcelIconClick(EParcelIcon icon)
 	case DAMAGE_ICON:
 		LLNotificationsUtil::add("NotSafe");
 		break;
-	case PRIVACY_ICON:
-		LLNotificationsUtil::add("PrivateParcel");
+	case HIDDEN_AV_ICON:
+		LLNotificationsUtil::add("HiddenAVs");
 		break;
 	case ICON_COUNT:
 		break;
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index f497ce9633..ffbd53fe29 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -70,7 +70,7 @@ private:
 		BUILD_ICON,			// 3
 		SCRIPTS_ICON,		// 4
 		DAMAGE_ICON,		// 5
-		PRIVACY_ICON,		// 6
+		HIDDEN_AV_ICON,		// 6
 		ICON_COUNT			// 7 total
 	};
 
diff --git a/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.png
new file mode 100644
index 0000000000..8b3376e514
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.png
new file mode 100644
index 0000000000..4e474d7f5a
Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.png differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png
deleted file mode 100644
index 8b3376e514..0000000000
Binary files a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png
deleted file mode 100644
index 4e474d7f5a..0000000000
Binary files a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index cb20cf3740..e8fe3cd82f 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -369,8 +369,8 @@ with the same filename but different name
  <texture name="Parcel_ScriptsNo_Dark" file_name="icons/Parcel_ScriptsNo_Dark.png" preload="false" />
  <texture name="Parcel_Voice_Dark" file_name="icons/Parcel_Voice_Dark.png" preload="false" />
  <texture name="Parcel_VoiceNo_Dark" file_name="icons/Parcel_VoiceNo_Dark.png" preload="false" />
- <texture name="Parcel_PrivacyOff_Dark" file_name="icons/Parcel_PrivacyOff_Dark.png" preload="false" />
- <texture name="Parcel_PrivacyOn_Dark" file_name="icons/Parcel_PrivacyOn_Dark.png" preload="false" />
+ <texture name="Parcel_HiddenAVsOff_Dark" file_name="icons/Parcel_HiddenAVsOff_Dark.png" preload="false" />
+ <texture name="Parcel_HiddenAVsOn_Dark" file_name="icons/Parcel_HiddenAVsOn_Dark.png" preload="false" />
 
  <texture name="Parcel_BuildNo_Light" file_name="icons/Parcel_BuildNo_Light.png" preload="false" />
  <texture name="Parcel_FlyNo_Light" file_name="icons/Parcel_FlyNo_Light.png" preload="false" />
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index d2567e8197..4ad42ea5bf 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1205,8 +1205,8 @@ Only large parcels can be listed in search.
                 No Pushing (Region Override)
             </panel.string>
             <panel.string
-             name="private_parcel_text">
-                Private Parcel
+             name="hidden_avs_text">
+                Hidden Avatars
             </panel.string>
             <text
              type="string"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index c86251bf28..9e3c3a9bac 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5654,14 +5654,12 @@ This area has building disabled. You can&apos;t build or rez objects here.
   </notification>
 
   <notification
-   icon="privacy.tga"
-   name="PrivateParcel"
+   icon="notify.tga"
+   name="HiddenAVs"
    persist="true"
    type="notify"
    unique="true">
-This is a private parcel.   You can&apos;t see 
-others outside the parcel, and those 
-outside are not able to see you.
+This parcel hides avatars from view from another parcel.   You can&apos;t see others outside the parcel, and those outside are not able to see you.
   </notification>
 
   <notification
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 26a7ebbb45..9c6ee32d45 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -154,13 +154,13 @@
      translate="false"
      value="Parcel_DamageNo_Dark" />
     <string
-     name="icon_PrivacyOff"
+     name="icon_HiddenAVsOff"
      translate="false"
-     value="Parcel_PrivacyOff_Dark" />
+     value="Parcel_HiddenAVsOff_Dark" />
     <string
-     name="icon_PrivacyOn"
+     name="icon_HiddenAVsOn"
      translate="false"
-     value="Parcel_PrivacyOn_Dark" />
+     value="Parcel_HiddenAVsOn_Dark" />
     <button
      follows="top|left"
      height="24"
@@ -362,7 +362,7 @@
                  title="Parcel">
                     <panel
                      follows="all"
-                     height="175"
+                     height="200"
                      layout="topleft"
                      left="0"
                      name="parcel_characteristics_panel"
@@ -554,10 +554,10 @@
                         <icon
                          follows="top|left"
                          height="18"
-                         image_name="Parcel_PrivacyOff_Dark"
+                         image_name="Parcel_HiddenAVsOff_Dark"
                          layout="topleft"
                          left="10"
-                         name="privacy_icon"
+                         name="hidden_av_icon"
                          top_pad="7"
                          width="22" />
                         <text
@@ -565,15 +565,15 @@
                          height="14"
                          layout="topleft"
                          left_pad="8"
-                         name="privacy_label"
-                         value="Privacy:"
+                         name="hidden_avs_label"
+                         value="Hidden Avatars:"
                          width="90" />
                         <text
                          follows="left|top"
                          height="14"
                          layout="topleft"
                          left_pad="0"
-                         name="privacy_value"
+                         name="hidden_av_value"
                          value="Off"
                          width="60" />
                         <button
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 98cb17bbce..f744e8d4cb 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -91,9 +91,9 @@
   <icon
     follows="right|top"
     height="13"
-    image_name="Parcel_PrivacyOff_Dark"
+    image_name="Parcel_HiddenAVsOff_Dark"
     left="2"
-    name="privacy_icon"
+    name="hidden_av_icon"
     top="3"
     visible="false"
     width="14"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 38cb547982..cc9fde4b81 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1759,10 +1759,10 @@ integer llGetParcelMaxPrims(vector pos, integer sim_wide)
 Returns the maximum number of prims allowed on the parcel at pos
 	</string>
 	<string name="LSLTipText_llGetParcelDetails" translate="false">
-list llGetParcelDetails(vector pos, list params)
-Returns the parcel details specified in params for the parcel at pos.
-Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA, _ID, _PRIVACY
-	</string>
+    list llGetParcelDetails(vector pos, list params)
+    Returns the parcel details specified in params for the parcel at pos.
+    Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA, _ID, _HIDDEN_AVS
+  </string>
 	<string name="LSLTipText_llSetLinkPrimitiveParams" translate="false">
 llSetLinkPrimitiveParams(integer linknumber, list rules)
 Sets primitive parameters for linknumber based on rules
@@ -3131,7 +3131,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="LocationCtrlAdultIconTooltip">Adult Region</string>
   <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
   <string name="LocationCtrlGeneralIconTooltip">General Region</string>
-  <string name="LocationCtrlPrivacyTooltip">Private Parcel</string>
+  <string name="LocationCtrlHiddenAVsTooltip">Hidden Avatars Parcel</string>
 
   <!-- Strings used by the (currently Linux) auto-updater app -->
 	<string name="UpdaterWindowTitle">
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 5a60576b4a..adb8cf3172 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -123,13 +123,13 @@
 	font="SansSerifSmall"
 	text_color="TextFgColor"
 	/>
-  <privacy_icon
-    name="privacy_icon"
+  <hidden_av_icon
+    name="hidden_av_icon"
     width="22"
     height="18"
     top="21"
     follows="right|top"
-    image_name="Parcel_PrivacyOn_Dark"
+    image_name="Parcel_HiddenAVsOn_Dark"
     />
   <combo_button
 		name="Location History"
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
index 531e378425..9c2ba221ba 100644
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
@@ -113,8 +113,8 @@
 	  font="SansSerifSmall"
 	  text_color="TextFgColor"
 	/>
-  <privacy_icon
-    name="privacy_icon"
+  <hidden_av_icon
+    name="hidden_av_icon"
     width="0"
     height="0"
     visible="false" 
-- 
cgit v1.2.3