diff options
28 files changed, 218 insertions, 26 deletions
| diff --git a/BuildParams b/BuildParams index c303bd2e5e..a311f9c467 100644 --- a/BuildParams +++ b/BuildParams @@ -226,4 +226,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 diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index e8cd871157..b388d34580 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); + +	setHiddenAVs(false); +	setHaveHiddenAVsData(false);  }  void LLParcel::overrideOwner(const LLUUID& owner_id, BOOL is_group_owned) @@ -702,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["hidden_avs"] = (LLSD::Boolean) getHiddenAVs();  } @@ -721,6 +724,15 @@ void LLParcel::unpackMessage(LLMessageSystem* msg)      msg->getStringFast( _PREHASH_ParcelData,_PREHASH_MediaURL, buffer );      setMediaURL(buffer); +	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_HiddenAVs, hidden_avs); +	} +	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 4893337967..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 -// flag, unused 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 @@ -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,8 @@ public:  	void setUserLocation(const LLVector3& pos)	{ mUserLocation = pos; }  	void setUserLookAt(const LLVector3& rot)	{ mUserLookAt = rot; }  	void setLandingType(const ELandingType type) { mLandingType = type; } +	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;} @@ -367,6 +375,8 @@ public:  	const LLVector3& getUserLocation() const	{ return mUserLocation; }  	const LLVector3& getUserLookAt() const	{ return mUserLookAt; }  	ELandingType getLandingType() const	{ return mLandingType; } +	bool getHiddenAVs() const			{ return mHiddenAVs;		} +	bool getHaveHiddenAVsData() const	{ return mHaveHiddenAVData;	}  	// User-specified snapshot  	const LLUUID&	getSnapshotID() const		{ return mSnapshotID; } @@ -606,6 +616,8 @@ protected:  	LLVector3 mUserLocation;  	LLVector3 mUserLookAt;  	ELandingType mLandingType; +	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 a61130132a..a85a6a51b3 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_HIDDEN_AVS = 6;  #endif diff --git a/indra/llmessage/message_prehash.cpp b/indra/llmessage/message_prehash.cpp index 5d03615e53..1248436f16 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_HiddenAVs = LLMessageStringTable::getInstance()->getString("HiddenAVs"); diff --git a/indra/llmessage/message_prehash.h b/indra/llmessage/message_prehash.h index 8dc86601e6..f871caa3df 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_HiddenAVs;  #endif diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l index 188c9e1950..78e31ead1a 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_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 263b73ba23..4e8f90d901 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_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 0d0c1f594d..0300867363 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -1818,6 +1818,7 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)  	mClearBtn(NULL),  	mMatureCtrl(NULL),  	mPushRestrictionCtrl(NULL), +	mPrivateParcelCtrl(NULL),  	mParcel(parcel)  {  } @@ -1860,6 +1861,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); @@ -1968,6 +1972,9 @@ void LLPanelLandOptions::refresh()  		mPushRestrictionCtrl->set(FALSE);  		mPushRestrictionCtrl->setEnabled(FALSE); +		mPrivateParcelCtrl->set(FALSE); +		mPrivateParcelCtrl->setEnabled(FALSE); +  		mLandingTypeCombo->setCurrentByIndex(0);  		mLandingTypeCombo->setEnabled(FALSE); @@ -2027,6 +2034,10 @@ void LLPanelLandOptions::refresh()  			mPushRestrictionCtrl->setEnabled(can_change_options);  		} +		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);  		mLandingTypeCombo->setCurrentByIndex((S32)parcel->getLandingType()); @@ -2231,6 +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 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()); @@ -2264,6 +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->setHiddenAVs(hidden_avs);  	// Send current parcel data upstream to server  	LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel ); diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index 8a70fa24d8..ef958892df 100644 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -348,6 +348,7 @@ private:  	LLCheckBoxCtrl		*mMatureCtrl;  	LLCheckBoxCtrl		*mPushRestrictionCtrl; +	LLCheckBoxCtrl		*mPrivateParcelCtrl;  	LLSafeHandle<LLParcelSelection>&	mParcel;  }; diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 5c65dcec34..7a988e95b9 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"), +	hidden_av_icon("hidden_av_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 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));  	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 hidden_avs        = current_parcel->getHiddenAVs();  		// 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[HIDDEN_AV_ICON]->setVisible( hidden_avs );  		// 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 HIDDEN_AV_ICON: +		LLNotificationsUtil::add("HiddenAVs"); +		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..ead20efcb6 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, +											hidden_av_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 +		HIDDEN_AV_ICON,		// 6 +		ICON_COUNT			// 7 total  	};  	friend class LLUICtrlFactory; diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 68ecb0165c..1500ac5429 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_hidden_avs_on; +static std::string icon_hidden_avs_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"); +	mHiddenAVsIcon = getChild<LLIconCtrl>("hidden_av_icon"); +	mHiddenAVsText = getChild<LLTextBox>("hidden_av_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_hidden_avs_on = getString("icon_HiddenAVsOn"); +	icon_hidden_avs_off = getString("icon_HiddenAVsOff");  	return TRUE;  } @@ -182,6 +188,8 @@ void LLPanelPlaceProfile::resetLocation()  	mScriptsText->setText(loading);  	mDamageIcon->setValue(loading);  	mDamageText->setText(loading); +	mHiddenAVsIcon->setValue(loading); +	mHiddenAVsText->setText(loading);  	mRegionNameText->setValue(loading);  	mRegionTypeText->setValue(loading); @@ -414,6 +422,17 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,  		mDamageText->setText(off);  	} +	if (parcel->getHiddenAVs()) +	{ +		mHiddenAVsIcon->setValue(icon_hidden_avs_on); +		mHiddenAVsText->setText(on); +	} +	else +	{ +		mHiddenAVsIcon->setValue(icon_hidden_avs_off); +		mHiddenAVsText->setText(off); +	} +  	mRegionNameText->setText(region->getName());  	mRegionTypeText->setText(region->getSimProductName()); diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h index f28b3b3832..6550dae06b 100644 --- a/indra/newview/llpanelplaceprofile.h +++ b/indra/newview/llpanelplaceprofile.h @@ -91,6 +91,8 @@ private:  	LLTextBox*			mScriptsText;  	LLIconCtrl*			mDamageIcon;  	LLTextBox*			mDamageText; +	LLIconCtrl*			mHiddenAVsIcon; +	LLTextBox*			mHiddenAVsText;  	LLTextBox*			mRegionNameText;  	LLTextBox*			mRegionTypeText; diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 30949f8f02..d1d7c3e4b9 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[HIDDEN_AV_ICON] = getChild<LLIconCtrl>("hidden_av_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[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)); @@ -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[HIDDEN_AV_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, HIDDEN_AV_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 hidden_avs        = current_parcel->getHiddenAVs();  		// 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[HIDDEN_AV_ICON]->setVisible( hidden_avs );  		layoutParcelIcons();  	} @@ -409,6 +414,9 @@ void LLPanelTopInfoBar::onParcelIconClick(EParcelIcon icon)  	case DAMAGE_ICON:  		LLNotificationsUtil::add("NotSafe");  		break; +	case HIDDEN_AV_ICON: +		LLNotificationsUtil::add("HiddenAVs"); +		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..ffbd53fe29 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 +		HIDDEN_AV_ICON,		// 6 +		ICON_COUNT			// 7 total  	};  	/** diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index ec2b5a4c98..ed8f5694a2 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -7196,9 +7196,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.  		} diff --git a/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.pngBinary files differ new file mode 100644 index 0000000000..8b3376e514 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOff_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.pngBinary files differ new file mode 100644 index 0000000000..4e474d7f5a --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Parcel_HiddenAVsOn_Dark.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index cc7cce99c9..e8fe3cd82f 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). @@ -369,6 +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_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 6e985e0476..4ad42ea5bf 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="hidden_avs_text"> +                Hidden Avatars +            </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" diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 81046e99a0..6f4f9ef2ba 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -2840,6 +2840,18 @@                   function="Floater.Toggle"                   parameter="region_debug_console" />              </menu_item_check> +            <menu_item_check +             label="Region Debug Console" +             name="Region Debug Console" +             shortcut="control|shift|`" +             use_mac_ctrl="true"> +                <menu_item_check.on_check +                 function="Floater.Visible" +                 parameter="region_debug_console" /> +                <menu_item_check.on_click +                 function="Floater.Toggle" +                 parameter="region_debug_console" /> +            </menu_item_check>              <menu_item_separator />              <menu_item_check diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index ce96c488b4..9e3c3a9bac 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5655,6 +5655,15 @@ This area has building disabled. You can't build or rez objects here.    <notification     icon="notify.tga" +   name="HiddenAVs" +   persist="true" +   type="notify" +   unique="true"> +This parcel hides avatars from view from another parcel.   You can't see others outside the parcel, and those outside are not able to see you. +  </notification> + +  <notification +   icon="notify.tga"     name="ScriptsStopped"     persist="true"     type="notify"> 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 774a9e8bbf..9c6ee32d45 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_HiddenAVsOff" +     translate="false" +     value="Parcel_HiddenAVsOff_Dark" /> +    <string +     name="icon_HiddenAVsOn" +     translate="false" +     value="Parcel_HiddenAVsOn_Dark" />      <button       follows="top|left"       height="24" @@ -354,7 +362,7 @@                   title="Parcel">                      <panel                       follows="all" -                     height="175" +                     height="200"                       layout="topleft"                       left="0"                       name="parcel_characteristics_panel" @@ -543,6 +551,31 @@                           top_delta="0"                           value="Off"                           width="60" /> +                        <icon +                         follows="top|left" +                         height="18" +                         image_name="Parcel_HiddenAVsOff_Dark" +                         layout="topleft" +                         left="10" +                         name="hidden_av_icon" +                         top_pad="7" +                         width="22" /> +                        <text +                         follows="left|top" +                         height="14" +                         layout="topleft" +                         left_pad="8" +                         name="hidden_avs_label" +                         value="Hidden Avatars:" +                         width="90" /> +                        <text +                         follows="left|top" +                         height="14" +                         layout="topleft" +                         left_pad="0" +                         name="hidden_av_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..f744e8d4cb 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_HiddenAVsOff_Dark" +    left="2" +    name="hidden_av_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 71f48c833d..416e1ac620 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 -	</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 @@ -3133,6 +3133,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="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 37d60f1671..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,6 +123,14 @@  	font="SansSerifSmall"  	text_color="TextFgColor"  	/> +  <hidden_av_icon +    name="hidden_av_icon" +    width="22" +    height="18" +    top="21" +    follows="right|top" +    image_name="Parcel_HiddenAVsOn_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..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,6 +113,14 @@  	  font="SansSerifSmall"  	  text_color="TextFgColor"  	/> +  <hidden_av_icon +    name="hidden_av_icon" +    width="0" +    height="0" +    visible="false"  +    top="21" +    follows="right|top" +    />    <combo_button  		name="Location History"                  label="" | 
