diff options
40 files changed, 216 insertions, 22 deletions
| diff --git a/BuildParams b/BuildParams index 0a193803da..64aeb66acb 100644 --- a/BuildParams +++ b/BuildParams @@ -237,4 +237,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/cmake/FMOD.cmake b/indra/cmake/FMOD.cmake index cb5124812d..cb5124812d 100755..100644 --- a/indra/cmake/FMOD.cmake +++ b/indra/cmake/FMOD.cmake diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index ce2d1e0386..ce2d1e0386 100755..100644 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py diff --git a/indra/llinventory/llparcel.cpp b/indra/llinventory/llparcel.cpp index 0a4cd51ea0..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) @@ -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["privacy"] = (LLSD::Boolean) getPrivacy();  } @@ -721,6 +724,15 @@ 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); +	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 71b65d99ce..1b2f372888 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,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 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 getPrivacy() const				{ return mPrivacy;		} +	bool getHavePrivacyData() const		{ return mHavePrivacyData;	}  	// User-specified snapshot  	const LLUUID&	getSnapshotID() const		{ return mSnapshotID; } @@ -602,6 +612,8 @@ protected:  	LLVector3 mUserLocation;  	LLVector3 mUserLookAt;  	ELandingType mLandingType; +	bool mPrivacy; +	bool mHavePrivacyData;			// Remove once parcel privacy is grid-wide  	LLTimer mSaleTimerExpires;  	LLTimer mMediaResetTimer; 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/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/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/llavataractions.cpp b/indra/newview/llavataractions.cpp index cbbdcb2983..cbbdcb2983 100644..100755 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp diff --git a/indra/newview/llcommandhandler.cpp b/indra/newview/llcommandhandler.cpp index 19dba3f917..19dba3f917 100644..100755 --- a/indra/newview/llcommandhandler.cpp +++ b/indra/newview/llcommandhandler.cpp diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 0d0c1f594d..8de93a385f 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->getPrivacy()); +		mPrivateParcelCtrl->setLabel(getString("private_parcel_text")); +		mPrivateParcelCtrl->setEnabled(can_change_options && parcel->getHavePrivacyData()); +  		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 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()); @@ -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->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 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/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 4b15695cbf..4b15695cbf 100644..100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index f8a4ce7ad0..f8a4ce7ad0 100644..100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp 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/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index ddce83c616..ddce83c616 100644..100755 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 29db110523..29db110523 100644..100755 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h 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/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index fd5c3362bb..fd5c3362bb 100644..100755 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index fca359f51e..fca359f51e 100644..100755 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h 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/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_PrivacyOff_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.pngBinary files differ new file mode 100644 index 0000000000..8b3376e514 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOff_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.pngBinary files differ new file mode 100644 index 0000000000..4e474d7f5a --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Parcel_PrivacyOn_Dark.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index cc7cce99c9..cb20cf3740 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_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/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" 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 ebfed990ec..5bfd4f398b 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5628,6 +5628,17 @@ This area has building disabled. You can'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't see  +others outside the parcel, and those  +outside are not able to see you. +  </notification> + +  <notification     icon="notify.tga"     name="ScriptsStopped"     persist="true" 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..26a7ebbb45 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 f8c90106b7..2fbd753a7d 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1761,7 +1761,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) @@ -3122,6 +3122,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..5a60576b4a 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"  	/> +  <privacy_icon +    name="privacy_icon" +    width="22" +    height="18" +    top="21" +    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..531e378425 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"  	/> +  <privacy_icon +    name="privacy_icon" +    width="0" +    height="0" +    visible="false"  +    top="21" +    follows="right|top" +    />    <combo_button  		name="Location History"                  label="" diff --git a/scripts/gpu_table_tester b/scripts/gpu_table_tester index 52b1c8f31d..52b1c8f31d 100755..100644 --- a/scripts/gpu_table_tester +++ b/scripts/gpu_table_tester diff --git a/scripts/md5check.py b/scripts/md5check.py index 1a54a2844c..1a54a2844c 100644..100755 --- a/scripts/md5check.py +++ b/scripts/md5check.py | 
