diff options
| author | Vadim Savchuk <vsavchuk@productengine.com> | 2009-11-12 16:30:02 +0200 | 
|---|---|---|
| committer | Vadim Savchuk <vsavchuk@productengine.com> | 2009-11-12 16:30:02 +0200 | 
| commit | e4ad08dcfca251dd954576d8f16a77afcdb2e2b9 (patch) | |
| tree | d37b04cf5598b4891ff65b0fb97c793810a37120 /indra | |
| parent | 047eb379673596bcc3167f399187e2c5f565dbcb (diff) | |
| parent | 95adfa4cacb68e21b7251882feffbc7cb50b4438 (diff) | |
Merge from default branch
--HG--
branch : product-engine
Diffstat (limited to 'indra')
44 files changed, 623 insertions, 280 deletions
| diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index e68672d46f..528a7bb4a5 100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -273,13 +273,13 @@ void LLCharacter::removeAnimationData(std::string name)  //-----------------------------------------------------------------------------  // setVisualParamWeight()  //----------------------------------------------------------------------------- -BOOL LLCharacter::setVisualParamWeight(LLVisualParam* which_param, F32 weight, BOOL set_by_user) +BOOL LLCharacter::setVisualParamWeight(LLVisualParam* which_param, F32 weight, BOOL upload_bake)  {  	S32 index = which_param->getID();  	visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);  	if (index_iter != mVisualParamIndexMap.end())  	{ -		index_iter->second->setWeight(weight, set_by_user); +		index_iter->second->setWeight(weight, upload_bake);  		return TRUE;  	}  	return FALSE; @@ -288,7 +288,7 @@ BOOL LLCharacter::setVisualParamWeight(LLVisualParam* which_param, F32 weight, B  //-----------------------------------------------------------------------------  // setVisualParamWeight()  //----------------------------------------------------------------------------- -BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL set_by_user) +BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake)  {  	std::string tname(param_name);  	LLStringUtil::toLower(tname); @@ -296,7 +296,7 @@ BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL  	visual_param_name_map_t::iterator name_iter = mVisualParamNameMap.find(tableptr);  	if (name_iter != mVisualParamNameMap.end())  	{ -		name_iter->second->setWeight(weight, set_by_user); +		name_iter->second->setWeight(weight, upload_bake);  		return TRUE;  	}  	llwarns << "LLCharacter::setVisualParamWeight() Invalid visual parameter: " << param_name << llendl; @@ -306,12 +306,12 @@ BOOL LLCharacter::setVisualParamWeight(const char* param_name, F32 weight, BOOL  //-----------------------------------------------------------------------------  // setVisualParamWeight()  //----------------------------------------------------------------------------- -BOOL LLCharacter::setVisualParamWeight(S32 index, F32 weight, BOOL set_by_user) +BOOL LLCharacter::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake)  {  	visual_param_index_map_t::iterator index_iter = mVisualParamIndexMap.find(index);  	if (index_iter != mVisualParamIndexMap.end())  	{ -		index_iter->second->setWeight(weight, set_by_user); +		index_iter->second->setWeight(weight, upload_bake);  		return TRUE;  	}  	llwarns << "LLCharacter::setVisualParamWeight() Invalid visual parameter index: " << index << llendl; diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index cb44a32e8a..27e2a51c62 100644 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h @@ -203,9 +203,9 @@ public:  	void addVisualParam(LLVisualParam *param);  	void addSharedVisualParam(LLVisualParam *param); -	virtual BOOL setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL set_by_user = FALSE ); -	virtual BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL set_by_user = FALSE ); -	virtual BOOL setVisualParamWeight(S32 index, F32 weight, BOOL set_by_user = FALSE ); +	virtual BOOL setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE ); +	virtual BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake = FALSE ); +	virtual BOOL setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake = FALSE );  	// get visual param weight by param or name  	F32 getVisualParamWeight(LLVisualParam *distortion); diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 6232c7588b..297322fe58 100644 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -225,7 +225,7 @@ BOOL LLVisualParam::parseData(LLXmlTreeNode *node)  //-----------------------------------------------------------------------------  // setWeight()  //----------------------------------------------------------------------------- -void LLVisualParam::setWeight(F32 weight, BOOL set_by_user) +void LLVisualParam::setWeight(F32 weight, BOOL upload_bake)  {  	if (mIsAnimating)  	{ @@ -243,19 +243,19 @@ void LLVisualParam::setWeight(F32 weight, BOOL set_by_user)  	if (mNext)  	{ -		mNext->setWeight(weight, set_by_user); +		mNext->setWeight(weight, upload_bake);  	}  }  //-----------------------------------------------------------------------------  // setAnimationTarget()  //----------------------------------------------------------------------------- -void LLVisualParam::setAnimationTarget(F32 target_value, BOOL set_by_user) +void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake)  {  	// don't animate dummy parameters  	if (mIsDummy)  	{ -		setWeight(target_value, set_by_user); +		setWeight(target_value, upload_bake);  		return;  	} @@ -274,7 +274,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL set_by_user)  	if (mNext)  	{ -		mNext->setAnimationTarget(target_value, set_by_user); +		mNext->setAnimationTarget(target_value, upload_bake);  	}  } @@ -291,24 +291,24 @@ void LLVisualParam::setNextParam( LLVisualParam *next )  //-----------------------------------------------------------------------------  // animate()  //----------------------------------------------------------------------------- -void LLVisualParam::animate( F32 delta, BOOL set_by_user ) +void LLVisualParam::animate( F32 delta, BOOL upload_bake )  {  	if (mIsAnimating)  	{  		F32 new_weight = ((mTargetWeight - mCurWeight) * delta) + mCurWeight; -		setWeight(new_weight, set_by_user); +		setWeight(new_weight, upload_bake);  	}  }  //-----------------------------------------------------------------------------  // stopAnimating()  //----------------------------------------------------------------------------- -void LLVisualParam::stopAnimating(BOOL set_by_user) +void LLVisualParam::stopAnimating(BOOL upload_bake)  {   	if (mIsAnimating && getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)  	{  		mIsAnimating = FALSE;  -		setWeight(mTargetWeight, set_by_user); +		setWeight(mTargetWeight, upload_bake);  	}  } diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index eec56d7844..12b45e6ebe 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -113,10 +113,10 @@ public:  	//virtual BOOL			parseData( LLXmlTreeNode *node ) = 0;  	virtual void			apply( ESex avatar_sex ) = 0;  	//  Default functions -	virtual void			setWeight(F32 weight, BOOL set_by_user); -	virtual void			setAnimationTarget( F32 target_value, BOOL set_by_user ); -	virtual void			animate(F32 delta, BOOL set_by_user); -	virtual void			stopAnimating(BOOL set_by_user); +	virtual void			setWeight(F32 weight, BOOL upload_bake); +	virtual void			setAnimationTarget( F32 target_value, BOOL upload_bake ); +	virtual void			animate(F32 delta, BOOL upload_bake); +	virtual void			stopAnimating(BOOL upload_bake);  	virtual BOOL			linkDrivenParams(visual_param_mapper mapper, BOOL only_cross_params);  	virtual void			resetDrivenParams(); diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp index a7c268758a..544352176a 100644 --- a/indra/llui/llscrolllistcell.cpp +++ b/indra/llui/llscrolllistcell.cpp @@ -71,7 +71,8 @@ LLScrollListCell* LLScrollListCell::create(const LLScrollListCell::Params& cell_  LLScrollListCell::LLScrollListCell(const LLScrollListCell::Params& p) -:	mWidth(p.width) +:	mWidth(p.width),  +	mToolTip(p.tool_tip)  {}  // virtual @@ -204,13 +205,28 @@ BOOL LLScrollListText::isText() const  	return TRUE;  } +// virtual +const std::string &LLScrollListText::getToolTip() const +{ +	// If base class has a tooltip, return that +	if (! LLScrollListCell::getToolTip().empty()) +		return LLScrollListCell::getToolTip(); +	 +	// ...otherwise, return the value itself as the tooltip +	return mText.getString(); +} + +// virtual  BOOL LLScrollListText::needsToolTip() const  { -	// show tooltips for truncated text +	// If base class has a tooltip, return that +	if (LLScrollListCell::needsToolTip()) +		return LLScrollListCell::needsToolTip(); +	 +	// ...otherwise, show tooltips for truncated text  	return mFont->getWidth(mText.getString()) > getWidth();  } -  //virtual   BOOL LLScrollListText::getVisible() const  { diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h index 758623f121..5fecf5aade 100644 --- a/indra/llui/llscrolllistcell.h +++ b/indra/llui/llscrolllistcell.h @@ -66,6 +66,7 @@ public:  		Optional<void*>				userdata;  		Optional<LLSD>				value; +		Optional<std::string>		tool_tip;  		Optional<const LLFontGL*>	font;  		Optional<LLColor4>			font_color; @@ -80,6 +81,7 @@ public:  			enabled("enabled", true),  			visible("visible", true),  			value("value"), +			tool_tip("tool_tip", ""),  			font("font", LLFontGL::getFontSansSerifSmall()),  			font_color("font_color", LLColor4::black),  			color("color", LLColor4::white), @@ -101,11 +103,13 @@ public:  	virtual S32				getHeight() const { return 0; }  	virtual const LLSD		getValue() const;  	virtual void			setValue(const LLSD& value) { } +	virtual const std::string &getToolTip() const { return mToolTip; } +	virtual void			setToolTip(const std::string &str) { mToolTip = str; }  	virtual BOOL			getVisible() const { return TRUE; }  	virtual void			setWidth(S32 width) { mWidth = width; }  	virtual void			highlightText(S32 offset, S32 num_chars) {}  	virtual BOOL			isText() const { return FALSE; } -	virtual BOOL			needsToolTip() const { return FALSE; } +	virtual BOOL			needsToolTip() const { return ! mToolTip.empty(); }  	virtual void			setColor(const LLColor4&) {}  	virtual void			onCommit() {}; @@ -114,6 +118,7 @@ public:  private:  	S32 mWidth; +	std::string mToolTip;  };  class LLScrollListSpacer : public LLScrollListCell @@ -143,6 +148,7 @@ public:  	/*virtual*/ void	setColor(const LLColor4&);  	/*virtual*/ BOOL	isText() const; +	/*virtual*/ const std::string &	getToolTip() const;  	/*virtual*/ BOOL	needsToolTip() const;  	void			setText(const LLStringExplicit& text); diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 1c2c02e1cc..a53a30b501 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -1565,7 +1565,7 @@ BOOL LLScrollListCtrl::handleToolTip(S32 x, S32 y, MASK mask)  			// display tooltip exactly over original cell, in same font  			LLToolTipMgr::instance().show(LLToolTip::Params() -										.message(hit_cell->getValue().asString()) +										.message(hit_cell->getToolTip())  										.font(LLFontGL::getFontSansSerifSmall())  										.pos(LLCoordGL(sticky_rect.mLeft - 5, sticky_rect.mTop + 6))  										.delay_time(0.2f) diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index dd807a3f7e..aaadc1b58d 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -38,7 +38,11 @@  #include "llpanel.h"  #include "lluictrlfactory.h" -static LLWidgetNameRegistry::StaticRegistrar r(&typeid(LLUICtrl::Params), "ui_ctrl"); +// This breaks the ability to construct dummy LLUICtrls for calls like +// getChild<LLUICtrl>("not-there") +//static LLWidgetNameRegistry::StaticRegistrar r(&typeid(LLUICtrl::Params), "ui_ctrl"); +// This doesn't appear to read/apply ui_ctrl.xml +static LLDefaultChildRegistry::Register<LLUICtrl> r("ui_ctrl");  LLUICtrl::Params::Params()  :	tab_stop("tab_stop", true), diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index dae4b512d1..219fae84be 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -512,50 +512,6 @@ std::string LLUrlEntryTeleport::getLocation(const std::string &url) const  	return ::getStringAfterToken(url, "app/teleport/");  } -/// -/// LLUrlEntryObjectIM Describes a Second Life object instant msg Url, e.g., -/// secondlife:///app/objectim/<sessionid> -/// -LLUrlEntryObjectIM::LLUrlEntryObjectIM() -{ -	mPattern = boost::regex("secondlife:///app/objectim/[\\da-f-]+\\??\\S*", -							boost::regex::perl|boost::regex::icase); -	mMenuName = "menu_url_objectim.xml"; -	mTooltip = LLTrans::getString("TooltipObjectIMUrl"); -} - -std::string LLUrlEntryObjectIM::getLabel(const std::string &url, const LLUrlLabelCallback &cb) -{ -	LLURI uri(url); -	LLSD params = uri.queryMap(); -	if (params.has("name")) -	{ -		// look for a ?name=<obj-name> param in the url -		// and use that as the label if present. -		std::string name = params.get("name"); -		LLStringUtil::trim(name); -		if (name.empty()) -		{ -			name = LLTrans::getString("Unnamed"); -		} -		return name; -	} - -	return unescapeUrl(url); -} - -std::string LLUrlEntryObjectIM::getLocation(const std::string &url) const -{ -	LLURI uri(url); -	LLSD params = uri.queryMap(); -	if (params.has("slurl")) -	{ -		return params.get("slurl"); -	} - -	return ""; -} -  //  // LLUrlEntrySL Describes a generic SLURL, e.g., a Url that starts  // with secondlife:// (used as a catch-all for cases not matched above) diff --git a/indra/llui/llurlentry.h b/indra/llui/llurlentry.h index 4507572b1e..7970b48eb5 100644 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -209,18 +209,6 @@ public:  };  /// -/// LLUrlEntryObjectIM Describes a Second Life object instant msg Url, e.g., -/// secondlife:///app/objectim/<sessionid>?name=Foo -/// -class LLUrlEntryObjectIM : public LLUrlEntryBase -{ -public: -	LLUrlEntryObjectIM(); -	/*virtual*/ std::string getLabel(const std::string &url, const LLUrlLabelCallback &cb); -	/*virtual*/ std::string getLocation(const std::string &url) const; -}; - -///  /// LLUrlEntrySL Describes a generic SLURL, e.g., a Url that starts  /// with secondlife:// (used as a catch-all for cases not matched above)  /// diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index 60275b60bc..a6922b019b 100644 --- a/indra/llui/llurlregistry.cpp +++ b/indra/llui/llurlregistry.cpp @@ -52,7 +52,6 @@ LLUrlRegistry::LLUrlRegistry()  	registerUrl(new LLUrlEntryParcel());  	registerUrl(new LLUrlEntryTeleport());  	registerUrl(new LLUrlEntryWorldMap()); -	registerUrl(new LLUrlEntryObjectIM());  	registerUrl(new LLUrlEntryPlace());  	registerUrl(new LLUrlEntrySL());  	registerUrl(new LLUrlEntrySLLabel()); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 13c381edae..b129bca1f3 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -246,6 +246,7 @@ set(viewer_SOURCE_FILES      llinspectavatar.cpp      llinspectgroup.cpp      llinspectobject.cpp +    llinspectremoteobject.cpp      llinventorybridge.cpp      llinventoryclipboard.cpp      llinventoryfilter.cpp @@ -741,6 +742,7 @@ set(viewer_HEADER_FILES      llinspectavatar.h      llinspectgroup.h      llinspectobject.h +    llinspectremoteobject.h      llinventorybridge.h      llinventoryclipboard.h      llinventoryfilter.h @@ -1379,7 +1381,7 @@ if (WINDOWS)                ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.sln                --workingdir                ${VIEWER_BINARY_NAME} -              "./${CMAKE_CFG_INTDIR}" +              "${CMAKE_CURRENT_SOURCE_DIR}"              COMMENT "Setting the ${VIEWER_BINARY_NAME} working directory for debugging."              )      endif (NOT UNATTENDED) diff --git a/indra/newview/llagentlistener.cpp b/indra/newview/llagentlistener.cpp index 3da6a4e3f4..b3ed7c353e 100644 --- a/indra/newview/llagentlistener.cpp +++ b/indra/newview/llagentlistener.cpp @@ -48,7 +48,7 @@ void LLAgentListener::requestTeleport(LLSD const & event_data) const  		params.append(event_data["y"]);  		params.append(event_data["z"]);  		LLCommandDispatcher::dispatch("teleport", params, LLSD(), NULL, true); -		// *TODO - lookup other LLCommandHandlers for "agent", "classified", "event", "group", "floater", "objectim", "parcel", "login", login_refresh", "balance", "chat" +		// *TODO - lookup other LLCommandHandlers for "agent", "classified", "event", "group", "floater", "parcel", "login", login_refresh", "balance", "chat"  		// should we just compose LLCommandHandler and LLDispatchListener?  	}  	else diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 3fc1055acd..9938c3db2b 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1985,14 +1985,14 @@ bool LLAgentWearables::canWearableBeRemoved(const LLWearable* wearable) const  	return !(((type == WT_SHAPE) || (type == WT_SKIN) || (type == WT_HAIR) || (type == WT_EYES))  			 && (getWearableCount(type) <= 1) );		    } -void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL set_by_user) +void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL upload_bake)  {  	for( S32 type = 0; type < WT_COUNT; ++type )  	{  		for (S32 count = 0; count < (S32)getWearableCount((EWearableType)type); ++count)  		{  			LLWearable *wearable = getWearable((EWearableType)type,count); -			wearable->animateParams(delta, set_by_user); +			wearable->animateParams(delta, upload_bake);  		}  	}  } diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 317f4a7e4f..9017c25fc6 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -80,7 +80,7 @@ public:  	// Note: False for shape, skin, eyes, and hair, unless you have MORE than 1.  	bool			canWearableBeRemoved(const LLWearable* wearable) const; -	void			animateAllWearableParams(F32 delta, BOOL set_by_user); +	void			animateAllWearableParams(F32 delta, BOOL upload_bake);  	//--------------------------------------------------------------------  	// Accessors diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp index 45f4b4fbd0..3961afe9af 100644 --- a/indra/newview/lldriverparam.cpp +++ b/indra/newview/lldriverparam.cpp @@ -242,7 +242,7 @@ BOOL LLDriverParam::parseData(LLXmlTreeNode* node)  }  #endif -void LLDriverParam::setWeight(F32 weight, BOOL set_by_user) +void LLDriverParam::setWeight(F32 weight, BOOL upload_bake)  {  	F32 min_weight = getMinWeight();  	F32 max_weight = getMaxWeight(); @@ -301,7 +301,7 @@ void LLDriverParam::setWeight(F32 weight, BOOL set_by_user)  					driven_weight = driven_min;  				} -				setDrivenWeight(driven,driven_weight,set_by_user); +				setDrivenWeight(driven,driven_weight,upload_bake);  				continue;  			}  			else  @@ -325,13 +325,13 @@ void LLDriverParam::setWeight(F32 weight, BOOL set_by_user)  					driven_weight = driven_min;  				} -				setDrivenWeight(driven,driven_weight,set_by_user); +				setDrivenWeight(driven,driven_weight,upload_bake);  				continue;  			}  		}  		driven_weight = getDrivenWeight(driven, mCurWeight); -		setDrivenWeight(driven,driven_weight,set_by_user); +		setDrivenWeight(driven,driven_weight,upload_bake);  	}  } @@ -455,9 +455,9 @@ const LLVector3*	LLDriverParam::getNextDistortion(U32 *index, LLPolyMesh **poly_  //-----------------------------------------------------------------------------  // setAnimationTarget()  //----------------------------------------------------------------------------- -void LLDriverParam::setAnimationTarget( F32 target_value, BOOL set_by_user ) +void LLDriverParam::setAnimationTarget( F32 target_value, BOOL upload_bake )  { -	LLVisualParam::setAnimationTarget(target_value, set_by_user); +	LLVisualParam::setAnimationTarget(target_value, upload_bake);  	for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ )  	{ @@ -466,16 +466,16 @@ void LLDriverParam::setAnimationTarget( F32 target_value, BOOL set_by_user )  		// this isn't normally necessary, as driver params handle interpolation of their driven params  		// but texture params need to know to assume their final value at beginning of interpolation -		driven->mParam->setAnimationTarget(driven_weight, set_by_user); +		driven->mParam->setAnimationTarget(driven_weight, upload_bake);  	}  }  //-----------------------------------------------------------------------------  // stopAnimating()  //----------------------------------------------------------------------------- -void LLDriverParam::stopAnimating(BOOL set_by_user) +void LLDriverParam::stopAnimating(BOOL upload_bake)  { -	LLVisualParam::stopAnimating(set_by_user); +	LLVisualParam::stopAnimating(upload_bake);  	for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ )  	{ @@ -585,7 +585,7 @@ F32 LLDriverParam::getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight  	return driven_weight;  } -void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool set_by_user) +void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake)  {  	LLVOAvatarSelf *avatar_self = gAgent.getAvatarObject();  	if(mWearablep &&  @@ -593,10 +593,10 @@ void LLDriverParam::setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bo  	   mWearablep->isOnTop())  	{  		// call setWeight through LLVOAvatarSelf so other wearables can be updated with the correct values -		avatar_self->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, set_by_user ); +		avatar_self->setVisualParamWeight( (LLVisualParam*)driven->mParam, driven_weight, upload_bake );  	}  	else  	{ -		driven->mParam->setWeight( driven_weight, set_by_user ); +		driven->mParam->setWeight( driven_weight, upload_bake );  	}  } diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h index 069e71a2cb..4e2daf5ba7 100644 --- a/indra/newview/lldriverparam.h +++ b/indra/newview/lldriverparam.h @@ -99,9 +99,9 @@ public:  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL				parseData(LLXmlTreeNode* node);  	/*virtual*/ void				apply( ESex sex ) {} // apply is called separately for each driven param. -	/*virtual*/ void				setWeight(F32 weight, BOOL set_by_user); -	/*virtual*/ void				setAnimationTarget( F32 target_value, BOOL set_by_user ); -	/*virtual*/ void				stopAnimating(BOOL set_by_user); +	/*virtual*/ void				setWeight(F32 weight, BOOL upload_bake); +	/*virtual*/ void				setAnimationTarget( F32 target_value, BOOL upload_bake ); +	/*virtual*/ void				stopAnimating(BOOL upload_bake);  	/*virtual*/ BOOL				linkDrivenParams(visual_param_mapper mapper, BOOL only_cross_params);  	/*virtual*/ void				resetDrivenParams(); @@ -114,7 +114,7 @@ public:  	/*virtual*/ const LLVector3*	getNextDistortion(U32 *index, LLPolyMesh **poly_mesh);  protected:  	F32 getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight); -	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool set_by_user); +	void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake);  	LLVector3	mDefaultVec; // temp holder diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index ca2cdffcf8..e2df2ffdf7 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -124,9 +124,19 @@ void LLFloaterSearch::search(const LLSD &key)  	url += "&p=" + search_token.asString();  	// also append the user's preferred maturity (can be changed via prefs) -	std::string maturity = "pg"; -	if (gAgent.prefersMature()) maturity += ",mature"; -	if (gAgent.prefersAdult()) maturity += ",adult"; +	std::string maturity; +	if (gAgent.prefersAdult()) +	{ +		maturity = "42";  // PG,Mature,Adult +	} +	else if (gAgent.prefersMature()) +	{ +		maturity = "21";  // PG,Mature +	} +	else +	{ +		maturity = "13";  // PG +	}  	url += "&r=" + maturity;  	// and load the URL in the web view diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp new file mode 100644 index 0000000000..e4d2eec242 --- /dev/null +++ b/indra/newview/llinspectremoteobject.cpp @@ -0,0 +1,200 @@ +/**  + * @file llinspectremoteobject.cpp + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + *  + * Copyright (c) 2009, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llinspectremoteobject.h" +#include "llinspect.h" +#include "llslurl.h" +#include "llmutelist.h" +#include "llurlaction.h" +#include "llpanelblockedlist.h" +#include "llfloaterreg.h" +#include "llui.h" +#include "lluictrl.h" + +class LLViewerObject; + +////////////////////////////////////////////////////////////////////////////// +// LLInspectRemoteObject +////////////////////////////////////////////////////////////////////////////// + +// Remote Object Inspector, a small information window used to +// display information about potentially-remote objects. Used +// to display details about objects sending messages to the user. +class LLInspectRemoteObject : public LLInspect +{ +	friend class LLFloaterReg; +	 +public: +	LLInspectRemoteObject(const LLSD& object_id); +	virtual ~LLInspectRemoteObject() {}; + +	/*virtual*/ BOOL postBuild(void); +	/*virtual*/ void onOpen(const LLSD& avatar_id); + +	void onClickMap(); +	void onClickBlock(); +	void onClickClose(); +	 +private: +	void update(); +	static void nameCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* data); +	 +private: +	LLUUID		 mObjectID; +	LLUUID		 mOwnerID; +	std::string  mOwner; +	std::string  mSLurl; +	std::string  mName; +	bool         mGroupOwned; +}; + +LLInspectRemoteObject::LLInspectRemoteObject(const LLSD& sd) : +	LLInspect(LLSD()), +	mObjectID(NULL), +	mOwnerID(NULL), +	mOwner(""), +	mSLurl(""), +	mName(""), +	mGroupOwned(false) +{ +} + +/*virtual*/ +BOOL LLInspectRemoteObject::postBuild(void) +{ +	// hook up the inspector's buttons +	getChild<LLUICtrl>("map_btn")->setCommitCallback( +		boost::bind(&LLInspectRemoteObject::onClickMap, this)); +	getChild<LLUICtrl>("block_btn")->setCommitCallback( +		boost::bind(&LLInspectRemoteObject::onClickBlock, this)); +	getChild<LLUICtrl>("close_btn")->setCommitCallback( +		boost::bind(&LLInspectRemoteObject::onClickClose, this)); + +	return TRUE; +} + +/*virtual*/ +void LLInspectRemoteObject::onOpen(const LLSD& data) +{ +	// Start animation +	LLInspect::onOpen(data); + +	// Extract appropriate object information from input LLSD +	// (Eventually, it might be nice to query server for details +	// rather than require caller to pass in the information.) +	mObjectID   = data["object_id"].asUUID(); +	mName       = data["name"].asString(); +	mOwnerID    = data["owner_id"].asUUID(); +	mGroupOwned = data["group_owned"].asBoolean(); +	mSLurl      = data["slurl"].asString(); + +	// work out the owner's name +	mOwner = ""; +	if (gCacheName) +	{ +		gCacheName->get(mOwnerID, mGroupOwned, nameCallback, this); +	} + +	// update the inspector with the current object state +	update(); + +	// Position the inspector relative to the mouse cursor +	LLUI::positionViewNearMouse(this); +} + +void LLInspectRemoteObject::onClickMap() +{ +	std::string url = "secondlife://" + mSLurl; +	LLUrlAction::showLocationOnMap(url); +	closeFloater(); +} + +void LLInspectRemoteObject::onClickBlock() +{ +	LLMute::EType mute_type = mGroupOwned ? LLMute::GROUP : LLMute::AGENT; +	LLMute mute(mOwnerID, mOwner, mute_type); +	LLMuteList::getInstance()->add(mute); +	LLPanelBlockedList::showPanelAndSelect(mute.mID); +	closeFloater(); +} + +void LLInspectRemoteObject::onClickClose() +{ +	closeFloater(); +} + +//static  +void LLInspectRemoteObject::nameCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group, void* data) +{ +	LLInspectRemoteObject *self = (LLInspectRemoteObject*)data; +	self->mOwner = first; +	if (!last.empty()) +	{ +		self->mOwner += " " + last; +	} +	self->update(); +} + +void LLInspectRemoteObject::update() +{ +	// show the object name as the inspector's title +	getChild<LLUICtrl>("object_name")->setValue(mName); + +	// show the object's owner - click it to show profile +	std::string owner = mOwner; +	if (! mOwnerID.isNull()) +	{ +		if (mGroupOwned) +		{ +			owner = LLSLURL::buildCommand("group", mOwnerID, "about"); +		} +		else +		{ +			owner = LLSLURL::buildCommand("agent", mOwnerID, "about"); +		} +	} +	getChild<LLUICtrl>("object_owner")->setValue(owner); + +	// display the object's SLurl - click it to teleport +	std::string url = "secondlife:///app/teleport/" + mSLurl; +	getChild<LLUICtrl>("object_slurl")->setValue(url); +} + +////////////////////////////////////////////////////////////////////////////// +// LLInspectRemoteObjectUtil +////////////////////////////////////////////////////////////////////////////// +void LLInspectRemoteObjectUtil::registerFloater() +{ +	LLFloaterReg::add("inspect_remote_object", "inspect_remote_object.xml", +					  &LLFloaterReg::build<LLInspectRemoteObject>); +} diff --git a/indra/newview/llinspectremoteobject.h b/indra/newview/llinspectremoteobject.h new file mode 100644 index 0000000000..e756f1caf4 --- /dev/null +++ b/indra/newview/llinspectremoteobject.h @@ -0,0 +1,40 @@ +/**  + * @file llinspectremoteobject.h + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + *  + * Copyright (c) 2009, Linden Research, Inc. + *  + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab.  Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + *  + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + *  + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + *  + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#ifndef LLINSPECTREMOTEOBJECT_H +#define LLINSPECTREMOTEOBJECT_H + +namespace LLInspectRemoteObjectUtil +{ +	void registerFloater(); +} + +#endif diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 5c3c260549..24de2dcdfc 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -118,21 +118,33 @@ LLPanelPrimMediaControls::~LLPanelPrimMediaControls()  BOOL LLPanelPrimMediaControls::postBuild()  {  	LLButton* scroll_up_ctrl = getChild<LLButton>("scrollup"); -	scroll_up_ctrl->setClickedCallback(onScrollUp, this); -	scroll_up_ctrl->setHeldDownCallback(onScrollUpHeld, this); -	scroll_up_ctrl->setMouseUpCallback(onScrollStop, this); +	if (scroll_up_ctrl) +	{ +		scroll_up_ctrl->setClickedCallback(onScrollUp, this); +		scroll_up_ctrl->setHeldDownCallback(onScrollUpHeld, this); +		scroll_up_ctrl->setMouseUpCallback(onScrollStop, this); +	}  	LLButton* scroll_left_ctrl = getChild<LLButton>("scrollleft"); -	scroll_left_ctrl->setClickedCallback(onScrollLeft, this); -	scroll_left_ctrl->setHeldDownCallback(onScrollLeftHeld, this); -	scroll_left_ctrl->setMouseUpCallback(onScrollStop, this); +	if (scroll_left_ctrl) +	{ +		scroll_left_ctrl->setClickedCallback(onScrollLeft, this); +		scroll_left_ctrl->setHeldDownCallback(onScrollLeftHeld, this); +		scroll_left_ctrl->setMouseUpCallback(onScrollStop, this); +	}  	LLButton* scroll_right_ctrl = getChild<LLButton>("scrollright"); -	scroll_right_ctrl->setClickedCallback(onScrollRight, this); -	scroll_right_ctrl->setHeldDownCallback(onScrollRightHeld, this); -	scroll_right_ctrl->setMouseUpCallback(onScrollStop, this); +	if (scroll_right_ctrl) +	{ +		scroll_right_ctrl->setClickedCallback(onScrollRight, this); +		scroll_right_ctrl->setHeldDownCallback(onScrollRightHeld, this); +		scroll_right_ctrl->setMouseUpCallback(onScrollStop, this); +	}  	LLButton* scroll_down_ctrl = getChild<LLButton>("scrolldown"); -	scroll_down_ctrl->setClickedCallback(onScrollDown, this); -	scroll_down_ctrl->setHeldDownCallback(onScrollDownHeld, this); -	scroll_down_ctrl->setMouseUpCallback(onScrollStop, this); +	if (scroll_down_ctrl) +	{ +		scroll_down_ctrl->setClickedCallback(onScrollDown, this); +		scroll_down_ctrl->setHeldDownCallback(onScrollDownHeld, this); +		scroll_down_ctrl->setMouseUpCallback(onScrollStop, this); +	}  	LLUICtrl* media_address	= getChild<LLUICtrl>("media_address");  	media_address->setFocusReceivedCallback(boost::bind(&LLPanelPrimMediaControls::onInputURL, _1, this )); @@ -326,11 +338,14 @@ void LLPanelPrimMediaControls::updateShape()  			whitelist_icon->setVisible(false);  			secure_lock_icon->setVisible(false); -			scroll_up_ctrl->setVisible(false); -			scroll_left_ctrl->setVisible(false); -			scroll_right_ctrl->setVisible(false); -			scroll_down_ctrl->setVisible(false); -			media_panel_scroll->setVisible(false); +			if (media_panel_scroll) +			{ +				media_panel_scroll->setVisible(false); +				scroll_up_ctrl->setVisible(false); +				scroll_left_ctrl->setVisible(false); +				scroll_right_ctrl->setVisible(false); +				scroll_down_ctrl->setVisible(false); +			}  			F32 volume = media_impl->getVolume();  			// movie's url changed @@ -422,12 +437,15 @@ void LLPanelPrimMediaControls::updateShape()  			volume_ctrl->setEnabled(FALSE);  			volume_up_ctrl->setEnabled(FALSE);  			volume_down_ctrl->setEnabled(FALSE); -				 -			scroll_up_ctrl->setVisible(has_focus); -			scroll_left_ctrl->setVisible(has_focus); -			scroll_right_ctrl->setVisible(has_focus); -			scroll_down_ctrl->setVisible(has_focus); -			media_panel_scroll->setVisible(has_focus); +			 +			if (media_panel_scroll) +			{ +				media_panel_scroll->setVisible(has_focus); +				scroll_up_ctrl->setVisible(has_focus); +				scroll_left_ctrl->setVisible(has_focus); +				scroll_right_ctrl->setVisible(has_focus); +				scroll_down_ctrl->setVisible(has_focus); +			}  			// TODO: get the secure lock bool from media plug in  			std::string prefix =  std::string("https://");  			std::string test_prefix = mCurrentURL.substr(0, prefix.length()); diff --git a/indra/newview/lltexglobalcolor.cpp b/indra/newview/lltexglobalcolor.cpp index 595b24ad47..d7840fb435 100644 --- a/indra/newview/lltexglobalcolor.cpp +++ b/indra/newview/lltexglobalcolor.cpp @@ -108,9 +108,9 @@ LLTexParamGlobalColor::LLTexParamGlobalColor(LLTexGlobalColor* tex_global_color)  	return new_param;  } -void LLTexParamGlobalColor::onGlobalColorChanged(bool set_by_user) +void LLTexParamGlobalColor::onGlobalColorChanged(bool upload_bake)  { -	mAvatar->onGlobalColorChanged(mTexGlobalColor, set_by_user); +	mAvatar->onGlobalColorChanged(mTexGlobalColor, upload_bake);  }  //----------------------------------------------------------------------------- diff --git a/indra/newview/lltexglobalcolor.h b/indra/newview/lltexglobalcolor.h index 1e6754133f..829a7d645b 100644 --- a/indra/newview/lltexglobalcolor.h +++ b/indra/newview/lltexglobalcolor.h @@ -80,7 +80,7 @@ public:  	LLTexParamGlobalColor(LLTexGlobalColor *tex_color);  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const;  protected: -	/*virtual*/ void onGlobalColorChanged(bool set_by_user); +	/*virtual*/ void onGlobalColorChanged(bool upload_bake);  private:  	LLTexGlobalColor*		mTexGlobalColor;  }; diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 5d682cad3c..25e0ca46e4 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -1834,7 +1834,7 @@ LLTexLayer* LLTexLayerTemplate::getLayer(U32 i)  		}  		if (layer)  		{ -			wearable->writeToAvatar(FALSE, FALSE); +			wearable->writeToAvatar();  			layer->setLTO(lto);  			success &= layer->render(x,y,width,height);  		} diff --git a/indra/newview/lltexlayerparams.cpp b/indra/newview/lltexlayerparams.cpp index b744722f4c..0c7e61d00e 100644 --- a/indra/newview/lltexlayerparams.cpp +++ b/indra/newview/lltexlayerparams.cpp @@ -160,7 +160,7 @@ BOOL LLTexLayerParamAlpha::getMultiplyBlend() const  	return ((LLTexLayerParamAlphaInfo *)getInfo())->mMultiplyBlend; 	  } -void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL set_by_user) +void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL upload_bake)  {  	if (mIsAnimating || mTexLayer == NULL)  	{ @@ -179,37 +179,37 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL set_by_user)  		{  			if (gAgent.cameraCustomizeAvatar())  			{ -				set_by_user = FALSE; +				upload_bake = FALSE;  			} -			mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), set_by_user); +			mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);  			mTexLayer->invalidateMorphMasks();  		}  	}  } -void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value, BOOL set_by_user) +void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value, BOOL upload_bake)  {   	// do not animate dummy parameters  	if (mIsDummy)  	{ -		setWeight(target_value, set_by_user); +		setWeight(target_value, upload_bake);  		return;  	}  	mTargetWeight = target_value;  -	setWeight(target_value, set_by_user);  +	setWeight(target_value, upload_bake);   	mIsAnimating = TRUE;  	if (mNext)  	{ -		mNext->setAnimationTarget(target_value, set_by_user); +		mNext->setAnimationTarget(target_value, upload_bake);  	}  } -void LLTexLayerParamAlpha::animate(F32 delta, BOOL set_by_user) +void LLTexLayerParamAlpha::animate(F32 delta, BOOL upload_bake)  {  	if (mNext)  	{ -		mNext->animate(delta, set_by_user); +		mNext->animate(delta, upload_bake);  	}  } @@ -449,7 +449,7 @@ LLColor4 LLTexLayerParamColor::getNetColor() const  	}  } -void LLTexLayerParamColor::setWeight(F32 weight, BOOL set_by_user) +void LLTexLayerParamColor::setWeight(F32 weight, BOOL upload_bake)  {  	if (mIsAnimating)  	{ @@ -474,10 +474,10 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL set_by_user)  		if ((mAvatar->getSex() & getSex()) && (mAvatar->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param.  		{ -			onGlobalColorChanged(set_by_user); +			onGlobalColorChanged(upload_bake);  			if (mTexLayer)  			{ -				mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), set_by_user); +				mAvatar->invalidateComposite(mTexLayer->getTexLayerSet(), upload_bake);  			}  		} @@ -485,23 +485,23 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL set_by_user)  	}  } -void LLTexLayerParamColor::setAnimationTarget(F32 target_value, BOOL set_by_user) +void LLTexLayerParamColor::setAnimationTarget(F32 target_value, BOOL upload_bake)  {   	// set value first then set interpolating flag to ignore further updates  	mTargetWeight = target_value;  -	setWeight(target_value, set_by_user); +	setWeight(target_value, upload_bake);  	mIsAnimating = TRUE;  	if (mNext)  	{ -		mNext->setAnimationTarget(target_value, set_by_user); +		mNext->setAnimationTarget(target_value, upload_bake);  	}  } -void LLTexLayerParamColor::animate(F32 delta, BOOL set_by_user) +void LLTexLayerParamColor::animate(F32 delta, BOOL upload_bake)  {  	if (mNext)  	{ -		mNext->animate(delta, set_by_user); +		mNext->animate(delta, upload_bake);  	}  } diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h index 98365864f9..2b80dbdba4 100644 --- a/indra/newview/lltexlayerparams.h +++ b/indra/newview/lltexlayerparams.h @@ -66,9 +66,9 @@ public:  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL		parseData(LLXmlTreeNode* node);  	/*virtual*/ void		apply( ESex avatar_sex ) {} -	/*virtual*/ void		setWeight(F32 weight, BOOL set_by_user); -	/*virtual*/ void		setAnimationTarget(F32 target_value, BOOL set_by_user);  -	/*virtual*/ void		animate(F32 delta, BOOL set_by_user); +	/*virtual*/ void		setWeight(F32 weight, BOOL upload_bake); +	/*virtual*/ void		setAnimationTarget(F32 target_value, BOOL upload_bake);  +	/*virtual*/ void		animate(F32 delta, BOOL upload_bake);  	// LLViewerVisualParam Virtual functions  	/*virtual*/ F32					getTotalDistortion()									{ return 1.f; } @@ -143,9 +143,9 @@ public:  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL			parseData(LLXmlTreeNode* node);  	/*virtual*/ void			apply( ESex avatar_sex ) {} -	/*virtual*/ void			setWeight(F32 weight, BOOL set_by_user); -	/*virtual*/ void			setAnimationTarget(F32 target_value, BOOL set_by_user); -	/*virtual*/ void			animate(F32 delta, BOOL set_by_user); +	/*virtual*/ void			setWeight(F32 weight, BOOL upload_bake); +	/*virtual*/ void			setAnimationTarget(F32 target_value, BOOL upload_bake); +	/*virtual*/ void			animate(F32 delta, BOOL upload_bake);  	// LLViewerVisualParam Virtual functions @@ -159,7 +159,7 @@ public:  	// New functions  	LLColor4				getNetColor() const;  protected: -	virtual void onGlobalColorChanged(bool set_by_user) {} +	virtual void onGlobalColorChanged(bool upload_bake) {}  private:  	LLVector3				mAvgDistortionVec;  }; diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 6a4b967487..9be342c424 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -1541,23 +1541,24 @@ bool LLTextureCache::readComplete(handle_t handle, bool abort)  {  	lockWorkers();  	handle_map_t::iterator iter = mReaders.find(handle); -	llassert_always(iter != mReaders.end() || abort); -	LLTextureCacheWorker* worker = iter->second; -	if (!worker) -		return false; -	bool res = worker->complete(); -	if (res || abort) +	LLTextureCacheWorker* worker = NULL; +	bool complete = false; +	if (iter != mReaders.end())  	{ -		mReaders.erase(handle); +		worker = iter->second; +		complete = worker->complete(); +	} +	if (worker && (complete || abort)) +	{ +		mReaders.erase(iter);  		unlockWorkers();  		worker->scheduleDelete(); -		return true;  	}  	else  	{  		unlockWorkers(); -		return false;  	} +	return (complete || abort);  }  LLTextureCache::handle_t LLTextureCache::writeToCache(const LLUUID& id, U32 priority, diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp index a3daca6fa4..9e064d8135 100644 --- a/indra/newview/llurldispatcher.cpp +++ b/indra/newview/llurldispatcher.cpp @@ -364,9 +364,9 @@ bool LLURLDispatcher::dispatchRightClick(const std::string& url)  bool LLURLDispatcher::dispatchFromTextEditor(const std::string& url)  {  	// *NOTE: Text editors are considered sources of trusted URLs -	// in order to make objectim and avatar profile links in chat -	// history work.  While a malicious resident could chat an app -	// SLURL, the receiving resident will see it and must affirmatively +	// in order to make avatar profile links in chat history work. +	// While a malicious resident could chat an app SLURL, the +	// receiving resident will see it and must affirmatively  	// click on it.  	// *TODO: Make this trust model more refined.  JC  	const bool trusted_browser = true; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index edbac69e1b..964d3bc2fa 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -112,6 +112,7 @@  #include "llinspectavatar.h"  #include "llinspectgroup.h"  #include "llinspectobject.h" +#include "llinspectremoteobject.h"  #include "llmediaremotectrl.h"  #include "llmoveview.h"  #include "llnearbychat.h" @@ -176,6 +177,7 @@ void LLViewerFloaterReg::registerFloaters()  	LLInspectAvatarUtil::registerFloater();  	LLInspectGroupUtil::registerFloater();  	LLInspectObjectUtil::registerFloater(); +	LLInspectRemoteObjectUtil::registerFloater();  	LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>);  	LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 1a4c849f25..4088eafe16 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1431,6 +1431,17 @@ bool goto_url_callback(const LLSD& notification, const LLSD& response)  }  static LLNotificationFunctorRegistration goto_url_callback_reg("GotoURL", goto_url_callback); +bool inspect_remote_object_callback(const LLSD& notification, const LLSD& response) +{ +	S32 option = LLNotification::getSelectedOption(notification, response); +	if (0 == option) +	{ +		LLFloaterReg::showInstance("inspect_remote_object", notification["payload"]); +	} +	return false; +} +static LLNotificationFunctorRegistration inspect_remote_object_callback_reg("ServerObjectMessage", inspect_remote_object_callback); +  void process_improved_im(LLMessageSystem *msg, void **user_data)  {  	if (gNoRender) @@ -1943,9 +1954,23 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				return;  			} +			// Build a link to open the object IM info window. +			std::string location = ll_safe_string((char*)binary_bucket, binary_bucket_size-1); +  			LLSD substitutions; +			substitutions["NAME"] = name;  			substitutions["MSG"] = message; -			LLNotifications::instance().add("ServerObjectMessage", substitutions); + +			LLSD payload; +			payload["object_id"] = session_id; +			payload["owner_id"] = from_id; +			payload["slurl"] = location; +			payload["name"] = name; +			if (from_group) +			{ +				payload["groupowned"] = "true"; +			} +			LLNotifications::instance().add("ServerObjectMessage", substitutions, payload);  		}  		break;  	case IM_FROM_TASK_AS_ALERT: diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 16bd74f798..62ac8adad0 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -647,7 +647,6 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,  	mWindFreq(0.f),  	mRipplePhase( 0.f ),  	mBelowWater(FALSE), -	mAppearanceAnimSetByUser(FALSE),  	mLastAppearanceBlendTime(0.f),  	mAppearanceAnimating(FALSE),  	mNameString(), @@ -2436,7 +2435,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation()  			{  				if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)  				{ -					param->stopAnimating(mAppearanceAnimSetByUser); +					param->stopAnimating(FALSE);  				}  			}  			updateVisualParams(); @@ -2459,7 +2458,7 @@ void LLVOAvatar::idleUpdateAppearanceAnimation()  				{  					if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)  					{ -						param->animate(morph_amt, mAppearanceAnimSetByUser); +						param->animate(morph_amt, FALSE);  					}  				}  			} @@ -5372,11 +5371,11 @@ void LLVOAvatar::updateShadowFaces()  //-----------------------------------------------------------------------------  // updateSexDependentLayerSets()  //----------------------------------------------------------------------------- -void LLVOAvatar::updateSexDependentLayerSets( BOOL set_by_user ) +void LLVOAvatar::updateSexDependentLayerSets( BOOL upload_bake )  { -	invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); -	invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, set_by_user ); -	invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, set_by_user ); +	invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); +	invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, upload_bake ); +	invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, upload_bake );  }  //----------------------------------------------------------------------------- @@ -5741,7 +5740,7 @@ LLColor4 LLVOAvatar::getGlobalColor( const std::string& color_name ) const  }  // virtual -void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL set_by_user ) +void LLVOAvatar::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result )  {  } @@ -5754,18 +5753,18 @@ void LLVOAvatar::setCompositeUpdatesEnabled( BOOL b )  {  } -void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL set_by_user ) +void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake )  {  	if (global_color == mTexSkinColor)  	{ -		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); -		invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, set_by_user ); -		invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, set_by_user ); +		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); +		invalidateComposite( mBakedTextureDatas[BAKED_UPPER].mTexLayerSet, upload_bake ); +		invalidateComposite( mBakedTextureDatas[BAKED_LOWER].mTexLayerSet, upload_bake );  	}  	else if (global_color == mTexHairColor)  	{ -		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, set_by_user ); -		invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet, set_by_user ); +		invalidateComposite( mBakedTextureDatas[BAKED_HEAD].mTexLayerSet, upload_bake ); +		invalidateComposite( mBakedTextureDatas[BAKED_HAIR].mTexLayerSet, upload_bake );  		// ! BACKWARDS COMPATIBILITY !  		// Fix for dealing with avatars from viewers that don't bake hair. @@ -5781,7 +5780,7 @@ void LLVOAvatar::onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL  	else if (global_color == mTexEyeColor)  	{  //		llinfos << "invalidateComposite cause: onGlobalColorChanged( eyecolor )" << llendl;  -		invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet,  set_by_user ); +		invalidateComposite( mBakedTextureDatas[BAKED_EYES].mTexLayerSet,  upload_bake );  	}  	updateMeshTextures();  } @@ -6239,14 +6238,14 @@ BOOL LLVOAvatar::teToColorParams( ETextureIndex te, U32 *param_name )  	return TRUE;  } -void LLVOAvatar::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL set_by_user ) +void LLVOAvatar::setClothesColor( ETextureIndex te, const LLColor4& new_color, BOOL upload_bake )  {  	U32 param_name[3];  	if( teToColorParams( te, param_name ) )  	{ -		setVisualParamWeight( param_name[0], new_color.mV[VX], set_by_user ); -		setVisualParamWeight( param_name[1], new_color.mV[VY], set_by_user ); -		setVisualParamWeight( param_name[2], new_color.mV[VZ], set_by_user ); +		setVisualParamWeight( param_name[0], new_color.mV[VX], upload_bake ); +		setVisualParamWeight( param_name[1], new_color.mV[VY], upload_bake ); +		setVisualParamWeight( param_name[2], new_color.mV[VZ], upload_bake );  	}  } @@ -6592,7 +6591,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  		{  			if (interp_params)  			{ -				startAppearanceAnimation(FALSE, FALSE); +				startAppearanceAnimation();  			}  			updateVisualParams(); @@ -6977,11 +6976,10 @@ void LLVOAvatar::cullAvatarsByPixelArea()  	}  } -void LLVOAvatar::startAppearanceAnimation(BOOL set_by_user, BOOL play_sound) +void LLVOAvatar::startAppearanceAnimation()  {  	if(!mAppearanceAnimating)  	{ -		mAppearanceAnimSetByUser = set_by_user;  		mAppearanceAnimating = TRUE;  		mAppearanceMorphTimer.reset();  		mLastAppearanceBlendTime = 0.f; diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 173ad02808..2fd1a506a9 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -522,7 +522,7 @@ protected:  	// Composites  	//--------------------------------------------------------------------  public: -	virtual void	invalidateComposite(LLTexLayerSet* layerset, BOOL set_by_user); +	virtual void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);  	virtual void	invalidateAll();  	virtual void	setCompositeUpdatesEnabled(BOOL b); @@ -558,7 +558,7 @@ private:  public:  	void 			updateMeshTextures(); -	void 			updateSexDependentLayerSets(BOOL set_by_user); +	void 			updateSexDependentLayerSets(BOOL upload_bake);  	void 			dirtyMesh(); // Dirty the avatar mesh  	void 			updateMeshData();  protected: @@ -591,7 +591,7 @@ protected:  public:  	void 			processAvatarAppearance(LLMessageSystem* mesgsys);  	void 			hideSkirt(); -	void			startAppearanceAnimation(BOOL set_by_user, BOOL play_sound); +	void			startAppearanceAnimation();  	//--------------------------------------------------------------------  	// Appearance morphing @@ -600,14 +600,13 @@ public:  	BOOL			mAppearanceAnimating;  private:  	LLFrameTimer	mAppearanceMorphTimer; -	BOOL			mAppearanceAnimSetByUser;  	F32				mLastAppearanceBlendTime;  	//--------------------------------------------------------------------  	// Clothing colors (convenience functions to access visual parameters)  	//--------------------------------------------------------------------  public: -	void			setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL set_by_user); +	void			setClothesColor(LLVOAvatarDefines::ETextureIndex te, const LLColor4& new_color, BOOL upload_bake);  	LLColor4		getClothesColor(LLVOAvatarDefines::ETextureIndex te);  	static BOOL			teToColorParams(LLVOAvatarDefines::ETextureIndex te, U32 *param_name); @@ -616,7 +615,7 @@ public:  	//--------------------------------------------------------------------  public:  	LLColor4		getGlobalColor(const std::string& color_name ) const; -	void			onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL set_by_user); +	void			onGlobalColorChanged(const LLTexGlobalColor* global_color, BOOL upload_bake);  private:  	LLTexGlobalColor* mTexSkinColor;  	LLTexGlobalColor* mTexHairColor; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index a2203ba2ea..185274d40d 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -633,33 +633,33 @@ LLJoint *LLVOAvatarSelf::getJoint(const std::string &name)  	return LLVOAvatar::getJoint(name);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL set_by_user ) +/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake )  {  	if (!which_param)  	{  		return FALSE;  	}  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(which_param->getID()); -	return setParamWeight(param,weight,set_by_user); +	return setParamWeight(param,weight,upload_bake);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL set_by_user ) +/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake )  {  	if (!param_name)  	{  		return FALSE;  	}  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(param_name); -	return setParamWeight(param,weight,set_by_user); +	return setParamWeight(param,weight,upload_bake);  } -/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL set_by_user ) +/*virtual*/ BOOL LLVOAvatarSelf::setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake )  {  	LLViewerVisualParam *param = (LLViewerVisualParam*) LLCharacter::getVisualParam(index); -	return setParamWeight(param,weight,set_by_user); +	return setParamWeight(param,weight,upload_bake);  } -BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL set_by_user ) +BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL upload_bake )  {  	if (!param)  	{ @@ -675,12 +675,12 @@ BOOL LLVOAvatarSelf::setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL  			LLWearable *wearable = gAgentWearables.getWearable(type,count);  			if (wearable)  			{ -				wearable->setVisualParamWeight(param->getID(), weight, set_by_user); +				wearable->setVisualParamWeight(param->getID(), weight, upload_bake);  			}  		}  	} -	return LLCharacter::setVisualParamWeight(param,weight,set_by_user); +	return LLCharacter::setVisualParamWeight(param,weight,upload_bake);  }  /*virtual*/  @@ -691,7 +691,7 @@ void LLVOAvatarSelf::updateVisualParams()  		LLWearable *wearable = gAgentWearables.getTopWearable((EWearableType)type);  		if (wearable)  		{ -			wearable->writeToAvatar(FALSE, FALSE); +			wearable->writeToAvatar();  		}  	} @@ -702,7 +702,7 @@ void LLVOAvatarSelf::updateVisualParams()  void LLVOAvatarSelf::idleUpdateAppearanceAnimation()  {  	// Animate all top-level wearable visual parameters -	gAgentWearables.animateAllWearableParams(calcMorphAmount(), mAppearanceAnimSetByUser); +	gAgentWearables.animateAllWearableParams(calcMorphAmount(), FALSE);  	// apply wearable visual params to avatar  	updateVisualParams(); @@ -737,8 +737,7 @@ void LLVOAvatarSelf::stopMotionFromSource(const LLUUID& source_id)  	}  } -// virtual -void LLVOAvatarSelf::setLocalTextureTE(U8 te, LLViewerTexture* image, BOOL set_by_user, U32 index) +void LLVOAvatarSelf::setLocalTextureTE(U8 te, LLViewerTexture* image, U32 index)  {  	if (te >= TEX_NUM_INDICES)  	{ @@ -1347,7 +1346,7 @@ bool LLVOAvatarSelf::hasPendingBakedUploads() const  	return false;  } -void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL set_by_user ) +void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL upload_result )  {  	if( !layerset || !layerset->getUpdatesEnabled() )  	{ @@ -1358,7 +1357,7 @@ void LLVOAvatarSelf::invalidateComposite( LLTexLayerSet* layerset, BOOL set_by_u  	layerset->requestUpdate();  	layerset->invalidateMorphMasks(); -	if( set_by_user ) +	if( upload_result )  	{  		llassert(isSelf()); @@ -1945,9 +1944,7 @@ void LLVOAvatarSelf::processRebakeAvatarTextures(LLMessageSystem* msg, void**)  				if (layer_set)  				{  					llinfos << "TAT: rebake - matched entry " << (S32)index << llendl; -					// Apparently set_by_user == force upload -					BOOL set_by_user = TRUE; -					self->invalidateComposite(layer_set, set_by_user); +					self->invalidateComposite(layer_set, TRUE);  					found = TRUE;  					LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES);  				} @@ -1983,8 +1980,7 @@ void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug)  				layer_set->cancelUpload();  			} -			BOOL set_by_user = TRUE; -			invalidateComposite(layer_set, set_by_user); +			invalidateComposite(layer_set, TRUE);  			LLViewerStats::getInstance()->incStat(LLViewerStats::ST_TEX_REBAKES);  		}  		else @@ -2047,7 +2043,6 @@ void LLVOAvatarSelf::onCustomizeEnd()  	if (avatarp)  	{  		avatarp->invalidateAll(); -		avatarp->requestLayerSetUploads();  	}  } @@ -2084,7 +2079,6 @@ void LLVOAvatarSelf::setInvisible(BOOL newvalue)  	{  		setCompositeUpdatesEnabled(TRUE);  		invalidateAll(); -		requestLayerSetUploads();  		gAgent.sendAgentSetAppearance();  	}  } diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index 8a66422c44..6702f030fe 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -86,15 +86,15 @@ public:  	/*virtual*/ void 		requestStopMotion(LLMotion* motion);  	/*virtual*/ LLJoint*	getJoint(const std::string &name); -	/*virtual*/ BOOL setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL set_by_user = FALSE ); -	/*virtual*/ BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL set_by_user = FALSE ); -	/*virtual*/ BOOL setVisualParamWeight(S32 index, F32 weight, BOOL set_by_user = FALSE ); +	/*virtual*/ BOOL setVisualParamWeight(LLVisualParam *which_param, F32 weight, BOOL upload_bake = FALSE ); +	/*virtual*/ BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL upload_bake = FALSE ); +	/*virtual*/ BOOL setVisualParamWeight(S32 index, F32 weight, BOOL upload_bake = FALSE );  	/*virtual*/ void updateVisualParams();  	/*virtual*/ void idleUpdateAppearanceAnimation();  private:  	// helper function. Passed in param is assumed to be in avatar's parameter list. -	BOOL setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL set_by_user = FALSE ); +	BOOL setParamWeight(LLViewerVisualParam *param, F32 weight, BOOL upload_bake = FALSE );  /**                    Initialization @@ -186,7 +186,7 @@ public:  	BOOL				getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture** image_gl_pp, U32 index) const;  	LLViewerFetchedTexture*	getLocalTextureGL(LLVOAvatarDefines::ETextureIndex type, U32 index) const;  	const LLUUID&		getLocalTextureID(LLVOAvatarDefines::ETextureIndex type, U32 index) const; -	void				setLocalTextureTE(U8 te, LLViewerTexture* image, BOOL set_by_user, U32 index); +	void				setLocalTextureTE(U8 te, LLViewerTexture* image, U32 index);  	const LLUUID&		grabLocalTexture(LLVOAvatarDefines::ETextureIndex type, U32 index) const;  	BOOL				canGrabLocalTexture(LLVOAvatarDefines::ETextureIndex type, U32 index) const;  	/*virtual*/ void	setLocalTexture(LLVOAvatarDefines::ETextureIndex type, LLViewerTexture* tex, BOOL baked_version_exits, U32 index); @@ -228,7 +228,7 @@ public:  	// Composites  	//--------------------------------------------------------------------  public: -	/* virtual */ void	invalidateComposite(LLTexLayerSet* layerset, BOOL set_by_user); +	/* virtual */ void	invalidateComposite(LLTexLayerSet* layerset, BOOL upload_result);  	/* virtual */ void	invalidateAll();  	/* virtual */ void	setCompositeUpdatesEnabled(BOOL b); // only works for self  	void				setupComposites(); diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index 3185ee45bf..c5c97e7649 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -602,7 +602,7 @@ void LLWearable::setTexturesToDefaults()  }  // Updates the user's avatar's appearance -void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater ) +void LLWearable::writeToAvatar()  {  	LLVOAvatarSelf* avatar = gAgent.getAvatarObject();  	llassert( avatar ); @@ -622,24 +622,10 @@ void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater  			S32 param_id = param->getID();  			F32 weight = getVisualParamWeight(param_id); -			// only animate with user-originated changes -			if (set_by_user) -			{ -				param->setAnimationTarget(weight, set_by_user); -			} -			else -			{ -				avatar->setVisualParamWeight( param_id, weight, set_by_user ); -			} +			avatar->setVisualParamWeight( param_id, weight, FALSE );  		}  	} -	// only interpolate with user-originated changes -	if (set_by_user) -	{ -		avatar->startAppearanceAnimation(TRUE, TRUE); -	} -  	// Pull texture entries  	for( S32 te = 0; te < TEX_NUM_INDICES; te++ )  	{ @@ -657,24 +643,17 @@ void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater  			}  			LLViewerTexture* image = LLViewerTextureManager::getFetchedTexture( image_id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE );  			// MULTI-WEARABLE: replace hard-coded 0 -			avatar->setLocalTextureTE(te, image, set_by_user, 0); +			avatar->setLocalTextureTE(te, image, 0);  		}  	} - -	if( gFloaterCustomize && update_customize_floater ) -	{ -		gFloaterCustomize->setWearable(mType, 0); -		gFloaterCustomize->setCurrentWearableType( mType ); -	} -  	ESex new_sex = avatar->getSex();  	if( old_sex != new_sex )  	{ -		avatar->updateSexDependentLayerSets( set_by_user ); +		avatar->updateSexDependentLayerSets( FALSE );  	}	 -//	if( set_by_user ) +//	if( upload_bake )  //	{  //		gAgent.sendAgentSetAppearance();  //	} @@ -683,7 +662,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater  // Updates the user's avatar's appearance, replacing this wearables' parameters and textures with default values.  // static  -void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user ) +void LLWearable::removeFromAvatar( EWearableType type, BOOL upload_bake )  {  	LLVOAvatarSelf* avatar = gAgent.getAvatarObject();  	llassert( avatar ); @@ -707,7 +686,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user )  		if( (((LLViewerVisualParam*)param)->getWearableType() == type) && (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE ) )  		{  			S32 param_id = param->getID(); -			avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), set_by_user ); +			avatar->setVisualParamWeight( param_id, param->getDefaultWeight(), upload_bake );  		}  	} @@ -719,7 +698,7 @@ void LLWearable::removeFromAvatar( EWearableType type, BOOL set_by_user )  	avatar->updateVisualParams();  	avatar->wearableUpdated(type); -//	if( set_by_user ) +//	if( upload_bake )  //	{  //		gAgent.sendAgentSetAppearance();  //	} @@ -868,12 +847,12 @@ void LLWearable::setVisualParams()  } -void LLWearable::setVisualParamWeight(S32 param_index, F32 value, BOOL set_by_user) +void LLWearable::setVisualParamWeight(S32 param_index, F32 value, BOOL upload_bake)  {  	if( is_in_map(mVisualParamIndexMap, param_index ) )  	{  		LLVisualParam *wearable_param = mVisualParamIndexMap[param_index]; -		wearable_param->setWeight(value, set_by_user); +		wearable_param->setWeight(value, upload_bake);  	}  	else  	{ @@ -914,14 +893,14 @@ void LLWearable::getVisualParams(visual_param_vec_t &list)  	}  } -void LLWearable::animateParams(F32 delta, BOOL set_by_user) +void LLWearable::animateParams(F32 delta, BOOL upload_bake)  {  	for(visual_param_index_map_t::iterator iter = mVisualParamIndexMap.begin();  		 iter != mVisualParamIndexMap.end();  		 ++iter)  	{  		LLVisualParam *param = (LLVisualParam*) iter->second; -		param->animate(delta, set_by_user); +		param->animate(delta, upload_bake);  	}  } @@ -939,14 +918,14 @@ LLColor4 LLWearable::getClothesColor(S32 te) const  	return color;  } -void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL set_by_user ) +void LLWearable::setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake )  {  	U32 param_name[3];  	if( LLVOAvatar::teToColorParams( (LLVOAvatarDefines::ETextureIndex)te, param_name ) )  	{  		for( U8 index = 0; index < 3; index++ )  		{ -			setVisualParamWeight(param_name[index], new_color.mV[index], set_by_user); +			setVisualParamWeight(param_name[index], new_color.mV[index], upload_bake);  		}  	}  } diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index 96631811c5..fd19a86406 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -89,9 +89,9 @@ public:  	BOOL				isDirty() const;  	BOOL				isOldVersion() const; -	void				writeToAvatar( BOOL set_by_user, BOOL update_customize_floater = TRUE ); -	void				removeFromAvatar( BOOL set_by_user )	{ LLWearable::removeFromAvatar( mType, set_by_user ); } -	static void			removeFromAvatar( EWearableType type, BOOL set_by_user );  +	void				writeToAvatar(); +	void				removeFromAvatar( BOOL upload_bake )	{ LLWearable::removeFromAvatar( mType, upload_bake ); } +	static void			removeFromAvatar( EWearableType type, BOOL upload_bake );   	BOOL				exportFile(LLFILE* file) const;  	BOOL				importFile(LLFILE* file); @@ -115,14 +115,14 @@ public:  	void				setLocalTextureObject(S32 index, LLLocalTextureObject *lto);  	void				addVisualParam(LLVisualParam *param);  	void				setVisualParams(); -	void 				setVisualParamWeight(S32 index, F32 value, BOOL set_by_user); +	void 				setVisualParamWeight(S32 index, F32 value, BOOL upload_bake);  	F32					getVisualParamWeight(S32 index) const;  	LLVisualParam*		getVisualParam(S32 index) const;  	void				getVisualParams(visual_param_vec_t &list); -	void				animateParams(F32 delta, BOOL set_by_user); +	void				animateParams(F32 delta, BOOL upload_bake);  	LLColor4			getClothesColor(S32 te) const; -	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL set_by_user ); +	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake );  	void				revertValues(); diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index e881665578..4c4b6a3899 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -531,6 +531,8 @@    <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" />    <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" />    <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" /> +   +  <texture name="Tooltip" file_name="widgets/Tooltip.png" preload="true" scale.left="2" scale.top="1" scale.right="99" scale.bottom="14" />    <texture name="TrashItem_Disabled" file_name="icons/TrashItem_Disabled.png" preload="false" />    <texture name="TrashItem_Off" file_name="icons/TrashItem_Off.png" preload="false" /> diff --git a/indra/newview/skins/default/textures/widgets/Tooltip.png b/indra/newview/skins/default/textures/widgets/Tooltip.pngBinary files differ new file mode 100644 index 0000000000..f989ac9083 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/Tooltip.png diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index a0f9bb59fd..3a1499eaaa 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -16,7 +16,7 @@      </floater.string>      <floater.string       name="no_one_near"> -        No-one near +        No one near      </floater.string>      <floater.string       name="no_results"> diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml index 68dd2001af..8122386fae 100644 --- a/indra/newview/skins/default/xui/en/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <floater   legacy_header_height="18" - bottom="-666"  + bottom="666"    can_close="true"    can_drag_on_left="false"    can_minimize="true" @@ -12,14 +12,14 @@   width="365"    height="535"    left="330"  - min_height="430"  - min_width="620" + min_height="535"  + min_width="365"   mouse_opaque="true"  - name="Media Settings"  + name="media_settings"    help_topic = "media_settings"   title="MEDIA SETTINGS">  	<button  -	 bottom="-525"  +	 bottom="525"   	 enabled="true"   	 follows="right|bottom"   	 font="SansSerif" @@ -61,7 +61,7 @@  	 scale_image="true"  	 width="90" />  	<tab_container  -	 bottom="-500"  +	 bottom="500"   	 enabled="true"   	 follows="left|top|right|bottom"   	 height="485" diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index b9cf456842..d9498586af 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -25,7 +25,7 @@          Done      </floater.string>      <layout_stack -     bottom="400" +     bottom="512"       follows="left|right|top|bottom"       layout="topleft"       left="10" @@ -54,7 +54,7 @@               layout="topleft"               left_delta="0"               name="status_text" -             top_pad="4" +             top_pad="5"               width="150" />          </layout_panel>      </layout_stack> diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml new file mode 100644 index 0000000000..07c684d904 --- /dev/null +++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml @@ -0,0 +1,99 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- +  Not can_close / no title to avoid window chrome +  Single instance - only have one at a time, recycle it each spawn +--> +<floater + legacy_header_height="18" + bevel_style="in" + bg_opaque_image="Inspector_Background"  + can_close="false" + can_minimize="false" + height="145" + layout="topleft" + name="inspect_remote_object" + single_instance="true" + sound_flags="0" + visible="true" + width="300"> +  <text +   follows="all" +   font="SansSerifLargeBold" +   height="16" +   left="8" +   name="object_name" +   text_color="White" +   top="5" +   use_ellipses="true" +   width="290"> +     Test Object Name That Is Really Long +  </text> +  <text +   follows="all" +   font="SansSerif" +   height="20" +   left="8" +   name="object_owner_label" +   width="55" +   top_pad="20"> +     Owner: +  </text> +  <text +   follows="top|left" +   font="SansSerif" +   height="20" +   left_pad="10" +   name="object_owner" +   use_ellipses="true" +   width="200" +   word_wrap="false"> +     Longavatarname Johnsonlongstonnammer +  </text> +  <text +   follows="top|left" +   font="SansSerif" +   height="20" +   left="8" +   name="object_slurl_label" +   top_pad="10" +   width="55"> +     Location: +  </text> +  <text +   follows="top|left" +   height="20" +   left_pad="10" +   name="object_slurl" +   width="240" +   use_ellipses="true" +   word_wrap="false"> +     http://slurl.com/Ahern/50/50/50 +  </text> +  <button +   follows="top|left" +   font="SansSerif" +   height="20" +   label="Map" +   left="10" +   name="map_btn" +   top="114" +   width="75" /> +  <button +   follows="top|left" +   font="SansSerif" +   height="20" +   label="Block" +   left_pad="5" +   name="block_btn" +   top_delta="0" +   width="75" /> +  <button +   follows="top|left" +   font="SansSerif" +   height="20" +   label="Close" +   right="-10" +   name="close_btn" +   top_delta="0" +   width="75" /> +</floater> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 96c6d970c2..ff0cd7ffeb 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4696,7 +4696,12 @@ The objects on the selected parcel that are NOT owned by you have been returned     icon="notify.tga"     name="ServerObjectMessage"     type="notify"> +Message from [NAME]:  [MSG] +    <usetemplate +     name="okcancelbuttons" +     notext="OK" +     yestext="Inspect"/>    </notification>    <notification diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 15fdd73bdc..9fac7d34f7 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -16,7 +16,7 @@ background_visible="true"       value="No people" />      <string       name="no_one_near" -     value="No-one near" /> +     value="No one near" />      <string       name="no_friends_online"       value="No friends online" /> | 
