diff options
80 files changed, 903 insertions, 578 deletions
| diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index db5495091e..b159092592 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -35,13 +35,13 @@ if (WINDOWS)    # Don't build DLLs.    set(BUILD_SHARED_LIBS OFF) -  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd" +  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP"        CACHE STRING "C++ compiler debug options" FORCE)    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  -      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD" +      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP"        CACHE STRING "C++ compiler release-with-debug options" FORCE)    set(CMAKE_CXX_FLAGS_RELEASE -      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD" +      "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP"        CACHE STRING "C++ compiler release options" FORCE)    set(CMAKE_CXX_STANDARD_LIBRARIES "") 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/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index d9520b3bf6..f0df3bcf90 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -61,8 +61,11 @@ BOOL LLRenderTarget::sUseFBO = FALSE;  LLRenderTarget::LLRenderTarget() :  	mResX(0),  	mResY(0), +	mViewportWidth(0), +	mViewportHeight(0),  	mTex(0),  	mFBO(0), +	mColorFmt(0),  	mDepth(0),  	mStencil(0),  	mUseDepth(FALSE), @@ -86,13 +89,31 @@ void LLRenderTarget::setSampleBuffer(LLMultisampleBuffer* buffer)  void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, BOOL depth, BOOL stencil, LLTexUnit::eTextureType usage, BOOL use_fbo)  { +	// only reallocate if something changed +	if (mResX == resx +		&& mResY == resy +		&& mUseDepth == depth +		&& mStencil == stencil +		&& mUsage == usage +		&& (mFBO != 0) == ((sUseFBO || use_fbo) && gGLManager.mHasFramebufferObject) +		&& mColorFmt == color_fmt) +	{ +		// nothing to do +		return; +	} +		  	stop_glerror();  	mResX = resx;  	mResY = resy; +	// default viewport to entire texture +	mViewportWidth = mResX; +	mViewportHeight = mResY;  	mStencil = stencil;  	mUsage = usage;  	mUseDepth = depth; +	mFBO = 0; +	mColorFmt = color_fmt;  	release(); @@ -312,7 +333,7 @@ void LLRenderTarget::bindTarget()  		}  	} -	glViewport(0, 0, mResX, mResY); +	glViewport(0, 0, mViewportWidth, mViewportHeight);  	sBoundTarget = this;  } @@ -515,12 +536,18 @@ BOOL LLRenderTarget::isComplete() const  	return (!mTex.empty() || mDepth) ? TRUE : FALSE;  } +void LLRenderTarget::setViewport(U32 width, U32 height) +{ +	mViewportWidth = llmin(width, mResX); +	mViewportHeight = llmin(height, mResY); +} +  void LLRenderTarget::getViewport(S32* viewport)  {  	viewport[0] = 0;  	viewport[1] = 0; -	viewport[2] = mResX; -	viewport[3] = mResY; +	viewport[2] = mViewportWidth; +	viewport[3] = mViewportHeight;  }  //================================================== @@ -581,7 +608,7 @@ void LLMultisampleBuffer::bindTarget(LLRenderTarget* ref)  	check_framebuffer_status(); -	glViewport(0, 0, mResX, mResY); +	glViewport(0, 0, mViewportWidth, mViewportHeight);  	sBoundTarget = this;  } @@ -593,13 +620,30 @@ void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, BOOL depth  void LLMultisampleBuffer::allocate(U32 resx, U32 resy, U32 color_fmt, BOOL depth, BOOL stencil,  LLTexUnit::eTextureType usage, BOOL use_fbo, U32 samples )  { +	if (mResX == resx +		&& mResY == resy +		&& mUseDepth == depth +		&& mStencil == stencil +		&& mUsage == usage +		&& (mFBO != 0) == ((sUseFBO || use_fbo) && gGLManager.mHasFramebufferObject) +		&& mColorFmt == color_fmt +		&& mSamples == samples) +	{ +		// nothing to do +		return; +	} +  	stop_glerror();  	mResX = resx;  	mResY = resy; +	mViewportWidth = mResX; +	mViewportHeight = mResY;  	mUsage = usage;  	mUseDepth = depth;  	mStencil = stencil; +	mFBO = 0; +	mColorFmt = color_fmt;  	releaseSampleBuffer(); diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h index b7ebfc8f7f..125747424c 100644 --- a/indra/llrender/llrendertarget.h +++ b/indra/llrender/llrendertarget.h @@ -107,6 +107,9 @@ public:  	//uses scissor rect if in copy-to-texture mode  	void clear(U32 mask = 0xFFFFFFFF); +	// override default viewport to a smaller size +	void setViewport(U32 width, U32 height); +  	//get applied viewport  	void getViewport(S32* viewport); @@ -150,12 +153,16 @@ protected:  	friend class LLMultisampleBuffer;  	U32 mResX;  	U32 mResY; +	U32 mViewportWidth; +	U32 mViewportHeight;  	std::vector<U32> mTex;  	U32 mFBO; +	U32 mColorFmt;  	U32 mDepth;  	BOOL mStencil;  	BOOL mUseDepth;  	BOOL mRenderDepth; +  	LLTexUnit::eTextureType mUsage;  	U32 mSamples;  	LLMultisampleBuffer* mSampleBuffer; diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 35a854267a..045505af5b 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -256,7 +256,6 @@ void LLDockControl::on()  {  	 if (isDockVisible())  	{ -		mDockableFloater->setCanDrag(false);  		mEnabled = true;  		mRecalculateDocablePosition = true;  	} @@ -264,7 +263,6 @@ void LLDockControl::on()  void LLDockControl::off()  { -	mDockableFloater->setCanDrag(true);  	mEnabled = false;  } diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 07c0f3ce84..89c4656297 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -512,6 +512,8 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu  			// add children using dimensions from referenced xml for consistent layout  			setShape(params.rect);  			LLUICtrlFactory::createChildren(this, referenced_xml, child_registry_t::instance()); + +			setXMLFilename(xml_filename);  		}  		// ask LLUICtrlFactory for filename, since xml_filename might be empty diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 8d36c9c616..9706878a57 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -994,6 +994,12 @@ void LLTextBase::setColor( const LLColor4& c )  	mFgColor = c;  } +//virtual  +void LLTextBase::setReadOnlyColor(const LLColor4 &c) +{ +	mReadOnlyFgColor = c; +} +  //virtual  void LLTextBase::setValue(const LLSD& value )  { @@ -2369,7 +2375,9 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt  	height = mFontHeight;  	width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars); -	return num_chars >= 1 && text[mStart + num_chars - 1] == '\n'; +	// if last character is a newline, then return true, forcing line break +	llwchar last_char = text[mStart + first_char + num_chars - 1]; +	return num_chars >= 1 && last_char == '\n';  }  S32	LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 8cae8fde22..fb01cd1e7c 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -118,6 +118,8 @@ public:  	// LLUICtrl interface  	/*virtual*/ BOOL		acceptsTextInput() const { return !mReadOnly; }  	/*virtual*/ void		setColor( const LLColor4& c ); +	virtual     void 		setReadOnlyColor(const LLColor4 &c); +  	/*virtual*/ void		setValue(const LLSD& value );  	/*virtual*/ LLTextViewModel* getViewModel() const; diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 984a534da6..bb85177811 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -172,7 +172,6 @@ LLToolTip::Params::Params()  LLToolTip::LLToolTip(const LLToolTip::Params& p)  :	LLPanel(p), -	mMaxWidth(p.max_width),  	mHasClickCallback(p.click_callback.isProvided()),  	mPadding(p.padding),  	mTextBox(NULL), @@ -181,11 +180,9 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)  	mHomePageButton(NULL)  {  	LLTextBox::Params params; -	params.initial_value = "tip_text";  	params.name = params.initial_value().asString();  	// bake textbox padding into initial rect  	params.rect = LLRect (mPadding, mPadding + 1, mPadding + 1, mPadding); -	params.follows.flags = FOLLOWS_ALL;  	params.h_pad = 0;  	params.v_pad = 0;  	params.mouse_opaque = false; @@ -210,7 +207,6 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)  		TOOLTIP_ICON_SIZE = (imagep ? imagep->getWidth() : 16);  		icon_rect.setOriginAndSize(mPadding, mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE);  		icon_params.rect = icon_rect; -		//icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM;  		icon_params.image_unselected(imagep);  		icon_params.image_selected(imagep); @@ -281,15 +277,30 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)  	}  } -void LLToolTip::setValue(const LLSD& value) +void LLToolTip::initFromParams(const LLToolTip::Params& p)  { +	LLPanel::initFromParams(p); + +	// do this *after* we've had our size set in LLPanel::initFromParams();  	const S32 REALLY_LARGE_HEIGHT = 10000; -	reshape(mMaxWidth, REALLY_LARGE_HEIGHT); +	mTextBox->reshape(p.max_width, REALLY_LARGE_HEIGHT); -	mTextBox->setValue(value); +	if (p.styled_message.isProvided()) +	{ +		for (LLInitParam::ParamIterator<LLToolTip::StyledText>::const_iterator text_it = p.styled_message().begin(); +			text_it != p.styled_message().end(); +			++text_it) +		{ +			mTextBox->appendText(text_it->text(), false, text_it->style); +		} +	} +	else +	{ +		mTextBox->setText(p.message()); +	}  	LLRect text_contents_rect = mTextBox->getContentsRect(); -	S32 text_width = llmin(mMaxWidth, text_contents_rect.getWidth()); +	S32 text_width = llmin(p.max_width(), text_contents_rect.getWidth());  	S32 text_height = text_contents_rect.getHeight();  	mTextBox->reshape(text_width, text_height); @@ -300,7 +311,7 @@ void LLToolTip::setValue(const LLSD& value)  	tooltip_rect.mBottom = 0;  	tooltip_rect.mLeft = 0; -	setRect(tooltip_rect); +	setShape(tooltip_rect);  }  void LLToolTip::setVisible(BOOL visible) @@ -411,9 +422,8 @@ void LLToolTipMgr::createToolTip(const LLToolTip::Params& params)  	}  	tooltip_params.rect = LLRect (0, 1, 1, 0); -  	mToolTip = LLUICtrlFactory::create<LLToolTip> (tooltip_params); -	mToolTip->setValue(params.message()); +  	gToolTipView->addChild(mToolTip);  	if (params.pos.isProvided()) diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 774ca507c1..8c8fdf0a4c 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -37,6 +37,7 @@  #include "llsingleton.h"  #include "llinitparam.h"  #include "llpanel.h" +#include "llstyle.h"  //  // Classes @@ -65,11 +66,19 @@ public:  class LLToolTip : public LLPanel  {  public: + +	struct StyledText : public LLInitParam::Block<StyledText> +	{ +		Mandatory<std::string>		text; +		Optional<LLStyle::Params>	style; +	}; +  	struct Params : public LLInitParam::Block<Params, LLPanel::Params>   	{  		typedef boost::function<void(void)> click_callback_t; -		Mandatory<std::string>		message; +		Optional<std::string>		message; +		Multiple<StyledText>		styled_message;  		Optional<LLCoordGL>			pos;  		Optional<F32>				delay_time, @@ -85,8 +94,8 @@ public:  		Optional<click_callback_t>	click_callback,  									click_playmedia_callback,  									click_homepage_callback; -		Optional<S32>				max_width; -		Optional<S32>				padding; +		Optional<S32>				max_width, +									padding;  		Optional<bool>				wrap;  		Params(); @@ -94,7 +103,6 @@ public:  	/*virtual*/ void draw();  	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);  	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); -	/*virtual*/ void setValue(const LLSD& value);  	/*virtual*/ void setVisible(BOOL visible);  	bool isFading(); @@ -102,6 +110,7 @@ public:  	bool hasClickCallback();  	LLToolTip(const Params& p); +	void initFromParams(const LLToolTip::Params& params);  private:  	class LLTextBox*	mTextBox; @@ -111,7 +120,6 @@ private:  	LLFrameTimer	mFadeTimer;  	LLFrameTimer	mVisibleTimer; -	S32				mMaxWidth;  	bool			mHasClickCallback;  	S32				mPadding;	// pixels  }; diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 08fc8fb784..dd807a3f7e 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -38,7 +38,7 @@  #include "llpanel.h"  #include "lluictrlfactory.h" -static LLDefaultChildRegistry::Register<LLUICtrl> r("ui_ctrl"); +static LLWidgetNameRegistry::StaticRegistrar r(&typeid(LLUICtrl::Params), "ui_ctrl");  LLUICtrl::Params::Params()  :	tab_stop("tab_stop", true), diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 13c381edae..e69d3f417f 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1379,7 +1379,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/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index d7bb64ce8a..ec80d2d014 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -34,6 +34,7 @@  						</array>  					<key>classes</key>  						<array> +							<string>LLBottomTray</string>  						</array>  					<key>files</key>  						<array> diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 7129c0cfcf..13fe7b4c49 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/llavataractions.cpp b/indra/newview/llavataractions.cpp index 4456e0aa74..f631978565 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -54,6 +54,7 @@  #include "llmutelist.h"  #include "llrecentpeople.h"  #include "llsidetray.h" +#include "lltrans.h"  #include "llviewerobjectlist.h"  #include "llviewermessage.h"	// for handle_lure  #include "llviewerregion.h" diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 46902006a6..327d80ba34 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -143,7 +143,8 @@ void LLAvatarIconIDCache::remove	(const LLUUID& avatar_id)  LLAvatarIconCtrl::Params::Params()  :	avatar_id("avatar_id"), -	draw_tooltip("draw_tooltip", true) +	draw_tooltip("draw_tooltip", true), +	default_icon_name("default_icon_name")  {  	name = "avatar_icon";  } @@ -151,7 +152,8 @@ LLAvatarIconCtrl::Params::Params()  LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p)  :	LLIconCtrl(p), -	mDrawTooltip(p.draw_tooltip) +	mDrawTooltip(p.draw_tooltip), +	mDefaultIconName(p.default_icon_name)  {  	mPriority = LLViewerFetchedTexture::BOOST_ICON; @@ -193,7 +195,7 @@ LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p)  	}  	else  	{ -		LLIconCtrl::setValue("default_profile_picture.j2c"); +		LLIconCtrl::setValue(mDefaultIconName);  	}  } @@ -260,7 +262,7 @@ bool LLAvatarIconCtrl::updateFromCache()  	}  	else  	{ -		LLIconCtrl::setValue("default_profile_picture.j2c"); +		LLIconCtrl::setValue(mDefaultIconName);  	}  	return true; diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 5eb830df4b..38616b7852 100644 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -74,6 +74,7 @@ public:  	{  		Optional <LLUUID> avatar_id;  		Optional <bool> draw_tooltip; +		Optional <std::string> default_icon_name;  		Params();  	}; @@ -106,7 +107,7 @@ protected:  	std::string			mFirstName;  	std::string			mLastName;  	bool				mDrawTooltip; - +	std::string			mDefaultIconName;  	bool updateFromCache();  }; diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 832694873f..204d7d23fa 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -50,6 +50,8 @@ LLBottomTray::LLBottomTray(const LLSD&)  	mSpeakBtn(NULL),  	mNearbyChatBar(NULL),  	mToolbarStack(NULL) +,	mMovementButton(NULL) +// Add more members  {  	mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL); @@ -72,6 +74,8 @@ LLBottomTray::LLBottomTray(const LLSD&)  	//destroyed LLBottomTray requires some subsystems that are long gone  	//LLUI::getRootView()->addChild(this); +	initStateProcessedObjectMap(); +  	// Necessary for focus movement among child controls  	setFocusRoot(TRUE);  } @@ -254,10 +258,11 @@ void LLBottomTray::showSnapshotButton(BOOL visible)  namespace  { -	const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel"; -	const std::string& PANEL_CHATBAR_NAME = "chat_bar"; -	const std::string& PANEL_MOVEMENT_NAME = "movement_panel"; -	const std::string& PANEL_CAMERA_NAME = "cam_panel"; +	const std::string& PANEL_CHICLET_NAME	= "chiclet_list_panel"; +	const std::string& PANEL_CHATBAR_NAME	= "chat_bar"; +	const std::string& PANEL_MOVEMENT_NAME	= "movement_panel"; +	const std::string& PANEL_CAMERA_NAME	= "cam_panel"; +	const std::string& PANEL_GESTURE_NAME	= "gesture_panel";  }  BOOL LLBottomTray::postBuild() @@ -283,159 +288,393 @@ BOOL LLBottomTray::postBuild()  	return TRUE;  } +void LLBottomTray::log(LLView* panel, const std::string& descr) +{ +	if (NULL == panel) return; +	LLView* layout = panel->getParent(); +	lldebugs << descr << ": " +		<< "panel: " << panel->getName() +		<< ", rect: " << panel->getRect() +  +  +		<< "layout: " << layout->getName() +		<< ", rect: " << layout->getRect() +		<< llendl +		;  +} +  void LLBottomTray::verifyChildControlsSizes()  {  	LLRect rect = mChicletPanel->getRect(); +	/*  	if (rect.getWidth() < mChicletPanel->getMinWidth())  	{ +		llwarns << "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ: chiclet panel less then min" << llendl;  		mChicletPanel->reshape(mChicletPanel->getMinWidth(), rect.getHeight());  	} - +*/  	rect = mNearbyChatBar->getRect(); +/*  	if (rect.getWidth() < mNearbyChatBar->getMinWidth())  	{ +		llwarns << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel less then min" << llendl;  		mNearbyChatBar->reshape(mNearbyChatBar->getMinWidth(), rect.getHeight());  	} -	else if (rect.getWidth() > mNearbyChatBar->getMaxWidth()) +	else  +*/ +		if (rect.getWidth() > mNearbyChatBar->getMaxWidth())  	{ +		llerrs << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel more then max width" << llendl; +  		rect.setLeftTopAndSize(rect.mLeft, rect.mTop, mNearbyChatBar->getMaxWidth(), rect.getHeight());  		mNearbyChatBar->reshape(mNearbyChatBar->getMaxWidth(), rect.getHeight());  		mNearbyChatBar->setRect(rect);  	}  } - +#define __FEATURE_EXT_991  void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)  { +	lldebugs << "****************************************" << llendl; + +	S32 current_width = getRect().getWidth(); +	lldebugs << "Reshaping: "  +		<< ", width: " << width +		<< ", height: " << height +		<< ", called_from_parent: " << called_from_parent +		<< ", cur width: " << current_width +		<< ", cur height: " << getRect().getHeight() +		<< llendl; + +	if (mNearbyChatBar)			log(mNearbyChatBar, "before"); +	if (mChicletPanel)			log(mChicletPanel, "before");  	if (mChicletPanel && mToolbarStack && mNearbyChatBar)  	{ -#ifdef __FEATURE_EXT_991__ -		BOOL shrink = width < getRect().getWidth(); -		const S32 MIN_RENDERED_CHARS = 3; -#endif +		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); + 		verifyChildControlsSizes(); + 		updateResizeState(width, current_width); +	} -		verifyChildControlsSizes(); -		updateResizeState(width, height); +	LLPanel::reshape(width, height, called_from_parent); + + +	if (mNearbyChatBar)			log(mNearbyChatBar, "after"); +	if (mChicletPanel)			log(mChicletPanel, "after"); +} + +void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width) +{ +	mResizeState = RS_NORESIZE; +	MASK compensative_view_item_mask = RS_CHATBAR_INPUT; +	LLPanel* compansative_view = mNearbyChatBar; + +	S32 delta_width = new_width - cur_width; +//	if (delta_width == 0) return; +	bool shrink = new_width < cur_width; + +	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); +	const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); + +	const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); +	const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth(); +	const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth(); + +	lldebugs << "chatbar_panel_width: " << chatbar_panel_width +		<< ", chatbar_panel_min_width: " << chatbar_panel_min_width +		<< ", chatbar_panel_max_width: " << chatbar_panel_max_width +		<< ", chiclet_panel_width: " << chiclet_panel_width +		<< ", chiclet_panel_min_width: " << chiclet_panel_min_width +		<< llendl; + +	bool still_should_be_processed = true; +	// bottom tray is narrowed +	if (shrink) +	{ +		S32 compensative_delta_width = 0; +		if (chiclet_panel_width > chiclet_panel_min_width) +		{ +			// we have some space to decrease chiclet panel +			S32 panel_delta_min = chiclet_panel_width - chiclet_panel_min_width; +			mResizeState |= RS_CHICLET_PANEL; + +			S32 delta_panel = llmin(-delta_width, panel_delta_min); + +			lldebugs << "delta_width: " << delta_width +				<< ", panel_delta_min: " << panel_delta_min +				<< ", delta_panel: " << delta_panel +				<< llendl; + +			// is chiclet panel width enough to process resizing? +			delta_width += panel_delta_min; -		switch (mResizeState) +			still_should_be_processed = delta_width < 0; + +			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - delta_panel, mChicletPanel->getParent()->getRect().getHeight()); +			log(mChicletPanel, "after processing panel decreasing via chiclet panel"); + +			lldebugs << "RS_CHICLET_PANEL"  +				<< ", delta_width: " << delta_width +				<< llendl; +		} +		 +		if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)  		{ -		case STATE_CHICLET_PANEL: -			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); +			// we have some space to decrease chatbar panel +			S32 panel_delta_min = chatbar_panel_width - chatbar_panel_min_width; +			mResizeState |= RS_CHATBAR_INPUT; -			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE); -			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE); -			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE); +			S32 delta_panel = llmin(-delta_width, panel_delta_min); -			break; -		case STATE_CHATBAR_INPUT: -			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE); +			// is chatbar panel width enough to process resizing? +			delta_width += panel_delta_min; +			 -			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE); -			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE); -			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE); +			still_should_be_processed = delta_width < 0; -			break; +			mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight()); -#ifdef __FEATURE_EXT_991__ +			lldebugs << "RS_CHATBAR_INPUT" +				<< ", delta_panel: " << delta_panel +				<< ", delta_width: " << delta_width +				<< llendl; -		case STATE_BUTTONS: -			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, TRUE); -			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, TRUE); +			log(mChicletPanel, "after nearby was processed"); -			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE); -			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE); +		} +		if (still_should_be_processed) +		{ +			mResizeState |= compensative_view_item_mask; -			if (shrink) +			if (mSnapshotPanel->getVisible())  			{ +				mResizeState |= RS_BUTTON_SNAPSHOT; +				delta_width += mSnapshotPanel->getRect().getWidth(); -				if (mSnapshotPanel->getVisible()) +				if (delta_width > 0)  				{ -					showSnapshotButton(FALSE); +					compensative_delta_width += delta_width;  				} +				lldebugs << "RS_BUTTON_SNAPSHOT"  +					<< ", compensative_delta_width: " << compensative_delta_width +					<< ", delta_width: " << delta_width +					<< llendl; +				showSnapshotButton(false); +			} -				if (mCamPanel->getVisible() && mCamButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS) +			if (delta_width < 0 && mCamPanel->getVisible()) +			{ +				mResizeState |= RS_BUTTON_CAMERA; +				delta_width += mCamPanel->getRect().getWidth(); +				if (delta_width > 0)  				{ -					showCameraButton(FALSE); +					compensative_delta_width += delta_width;  				} +				lldebugs << "RS_BUTTON_CAMERA" +					<< ", compensative_delta_width: " << compensative_delta_width +					<< ", delta_width: " << delta_width +					<< llendl; +				showCameraButton(false); +			} -				if (mMovementPanel->getVisible() && mMovementButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS) +			if (delta_width < 0 && mMovementPanel->getVisible()) +			{ +				mResizeState |= RS_BUTTON_MOVEMENT; +				delta_width += mMovementPanel->getRect().getWidth(); +				if (delta_width > 0)  				{ -					showMoveButton(FALSE); +					compensative_delta_width += delta_width;  				} - +				lldebugs << "RS_BUTTON_MOVEMENT" +					<< ", compensative_delta_width: " << compensative_delta_width +					<< ", delta_width: " << delta_width +					<< llendl; +				showMoveButton(false);  			} -			else -			{ -				showMoveButton(TRUE); -				mMovementPanel->draw(); -				if (mMovementButton->getLastDrawCharsCount() >= MIN_RENDERED_CHARS) -				{ -					showMoveButton(TRUE); -				} -				else +			if (delta_width < 0 && mGesturePanel->getVisible()) +			{ +				mResizeState |= RS_BUTTON_GESTURES; +				delta_width += mGesturePanel->getRect().getWidth(); +				if (delta_width > 0)  				{ -					showMoveButton(FALSE); +					compensative_delta_width += delta_width;  				} +				lldebugs << "RS_BUTTON_GESTURES" +					<< ", compensative_delta_width: " << compensative_delta_width +					<< ", delta_width: " << delta_width +					<< llendl; +				showGestureButton(false); +			} + +			if (delta_width < 0) +			{ +				llwarns << "WARNING: there is no enough room for bottom tray, resizing still should be processed" << llendl;  			} -			break; -#endif -		default: -			break; +			if (compensative_delta_width != 0) +			{ +				if (compansative_view)			log(compansative_view, "before applying compensative width: "); +				compansative_view->reshape(compansative_view->getRect().getWidth() + compensative_delta_width, compansative_view->getRect().getHeight() ); +				if (compansative_view)			log(compansative_view, "after applying compensative width: "); +				lldebugs << compensative_delta_width << llendl; + +			}  		}  	} +	// bottom tray is widen +	else +	{ +		processWidthIncreased(delta_width); +	} -	LLPanel::reshape(width, height, called_from_parent); +	lldebugs << "New resize state: " << mResizeState << llendl;  } -void LLBottomTray::updateResizeState(S32 width, S32 height) +void LLBottomTray::processWidthDecreased(S32 delta_width)  { -	mResizeState = STATE_BUTTONS; -	const S32 chiclet_panel_width = mChicletPanel->getRect().getWidth(); +} + +void LLBottomTray::processWidthIncreased(S32 delta_width) +{ +	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();  	const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();  	const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();  	const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();  	const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth(); -	// bottom tray is narrowed -	if (width < getRect().getWidth()) +	const S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width; +	const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width; + +	// how many room we have to show hidden buttons +	S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet; +	S32 buttons_required_width = 0; //How many room will take shown buttons + +	if (available_width > 0)  	{ -		if (chiclet_panel_width > chiclet_panel_min_width) -		{ -			mResizeState = STATE_CHICLET_PANEL; -		} -		else if (chatbar_panel_width > chatbar_panel_min_width) -		{ -			mResizeState = STATE_CHATBAR_INPUT; -		} -		else -		{ -			mResizeState = STATE_BUTTONS; -		} +		lldebugs << "Trying to process: RS_BUTTON_GESTURES" << llendl; +		processShowButton(RS_BUTTON_GESTURES, &available_width, &buttons_required_width);  	} -	// bottom tray is widen -	else + +	if (available_width > 0) +	{ +		lldebugs << "Trying to process: RS_BUTTON_MOVEMENT" << llendl; +		processShowButton(RS_BUTTON_MOVEMENT, &available_width, &buttons_required_width); +	} + +	if (available_width > 0) +	{ +		lldebugs << "Trying to process: RS_BUTTON_CAMERA" << llendl; +		processShowButton(RS_BUTTON_CAMERA, &available_width, &buttons_required_width); +	} + +	if (available_width > 0) +	{ +		lldebugs << "Trying to process: RS_BUTTON_SNAPSHOT" << llendl; +		processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width); +	} + +	// if we have to show some buttons but whidth increasing is not enough... +	if (buttons_required_width > 0 && delta_width < buttons_required_width)  	{ -#ifdef __FEATURE_EXT_991__ -		if (!mMovementPanel->getVisible()) +		// ... let's shrink nearby chat & chiclet panels +		S32 required_to_process_width = buttons_required_width; + +		// 1. use delta width of resizing +		required_to_process_width -= delta_width; + +		// 2. use width available via decreasing of nearby chat panel +		S32 chatbar_shrink_width = required_to_process_width; +		if (chatbar_available_shrink_width < chatbar_shrink_width)  		{ -			mResizeState = STATE_BUTTONS; +			chatbar_shrink_width = chatbar_available_shrink_width;  		} -		else -#endif -		if (chatbar_panel_width < chatbar_panel_max_width) + +		log(mNearbyChatBar, "increase width: before applying compensative width: "); +		mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - chatbar_shrink_width, mNearbyChatBar->getRect().getHeight() ); +		if (mNearbyChatBar)			log(mNearbyChatBar, "after applying compensative width: "); +		lldebugs << chatbar_shrink_width << llendl; + +		// 3. use width available via decreasing of chiclet panel +		required_to_process_width -= chatbar_shrink_width; + +		if (required_to_process_width > 0)  		{ -			mResizeState = STATE_CHATBAR_INPUT; +			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight()); +			log(mChicletPanel, "after applying compensative width for chiclets: "); +			lldebugs << required_to_process_width << llendl;  		} -		else + +	} + +	// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels +	delta_width -= buttons_required_width; + +	// how many space can nearby chatbar take? +	S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth(); +	if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width) +	{ +		mResizeState |= RS_CHATBAR_INPUT; +		S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_; +		S32 delta_panel = llmin(delta_width, delta_panel_max); +		delta_width -= delta_panel_max; +		mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight()); +	} +} + +bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width) +{ +	LLPanel* panel = mStateProcessedObjectMap[shown_object_type]; +	if (NULL == panel) +	{ +		lldebugs << "There is no object to process for state: " << shown_object_type << llendl; +		return false; +	} +	bool can_be_shown = canButtonBeShown(panel); +	if (can_be_shown) +	{ +		//validate if we have enough room to show this button +		const S32 required_width = panel->getRect().getWidth(); +		can_be_shown = *available_width >= required_width; +		if (can_be_shown)  		{ -			mResizeState = STATE_CHICLET_PANEL; +			*available_width -= required_width; +			*buttons_required_width += required_width; + +			switch (shown_object_type) +			{ +			case RS_BUTTON_GESTURES:	showGestureButton(true);				break; +			case RS_BUTTON_MOVEMENT:	showMoveButton(true);					break; +			case RS_BUTTON_CAMERA:		showCameraButton(true);					break; +			case RS_BUTTON_SNAPSHOT:	showSnapshotButton(true);				break; +			default: +				llwarns << "Unexpected type of button to be shown: " << shown_object_type << llendl; +			} + +			lldebugs << "processing object type: " << shown_object_type +				<< ", buttons_required_width: " << buttons_required_width +				<< llendl;  		}  	} +	return can_be_shown; +} +bool LLBottomTray::canButtonBeShown(LLPanel* panel) const +{ +	bool can_be_shown = !panel->getVisible(); +	if (can_be_shown) +	{ +		// *TODO: mantipov: synchronize with situation when button was hidden via context menu; +	} +	return can_be_shown; +} -	// TODO: finish implementation +void LLBottomTray::initStateProcessedObjectMap() +{ +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, mGesturePanel)); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel)); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel)); +	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel));  } +//EOF diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 02588a1975..6509fea63d 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -52,6 +52,7 @@ class LLBottomTray  	, public LLPanel  	, public LLIMSessionObserver  { +	LOG_CLASS(LLBottomTray);  	friend class LLSingleton<LLBottomTray>;  public:  	~LLBottomTray(); @@ -82,18 +83,32 @@ public:  	void showSnapshotButton(BOOL visible);  private: - -	enum EResizeState +	typedef enum e_resize_status_type  	{ -		STATE_CHICLET_PANEL = 1, -		STATE_CHATBAR_INPUT, -		STATE_BUTTONS -	}; - -	void updateResizeState(S32 width, S32 height); +		  RS_NORESIZE			= 0x0000 +		, RS_CHICLET_PANEL		= 0x0001 +		, RS_CHATBAR_INPUT		= 0x0002 +		, RS_BUTTON_SNAPSHOT	= 0x0004 +		, RS_BUTTON_CAMERA		= 0x0008 +		, RS_BUTTON_MOVEMENT	= 0x0010 +		, RS_BUTTON_GESTURES	= 0x0020 +		, RS_BUTTON_SPEAK		= 0x0040 +		, RS_RESIZABLE_BUTTONS			= /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES +	}EResizeState; + +	void updateResizeState(S32 new_width, S32 cur_width);  	void verifyChildControlsSizes(); +	void processWidthDecreased(S32 delta_width); +	void processWidthIncreased(S32 delta_width); +	void log(LLView* panel, const std::string& descr); +	bool processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width); +	bool canButtonBeShown(LLPanel* panel) const; +	void initStateProcessedObjectMap(); + +	MASK mResizeState; -	EResizeState mResizeState; +	typedef std::map<EResizeState, LLPanel*> state_object_map_t; +	state_object_map_t mStateProcessedObjectMap;  protected: diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 2ccd6b7d35..d1922cfd6e 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -47,7 +47,6 @@  #include "llmutelist.h"  static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history"); -static const std::string MESSAGE_USERNAME_DATE_SEPARATOR(" ----- ");  std::string formatCurrentTime()  { @@ -175,7 +174,7 @@ public:  	const std::string&	getFirstName() const { return mFirstName; }  	const std::string&	getLastName	() const { return mLastName; } -	void setup(const LLChat& chat)  +	void setup(const LLChat& chat,const LLStyle::Params& style_params)   	{  		mAvatarID = chat.mFromID;  		mSourceType = chat.mSourceType; @@ -185,8 +184,11 @@ public:  			mSourceType = CHAT_SOURCE_SYSTEM;  		} -  		LLTextBox* userName = getChild<LLTextBox>("user_name"); + +		LLUIColor color = style_params.color; +		userName->setReadOnlyColor(color); +		userName->setColor(color);  		if(!chat.mFromName.empty())  		{ @@ -198,6 +200,7 @@ public:  			std::string SL = LLTrans::getString("SECOND_LIFE");  			userName->setValue(SL);  		} +  		LLTextBox* timeBox = getChild<LLTextBox>("time_box");  		timeBox->setValue(formatCurrentTime()); @@ -323,17 +326,17 @@ LLView* LLChatHistory::getSeparator()  	return separator;  } -LLView* LLChatHistory::getHeader(const LLChat& chat) +LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params)  {  	LLChatHistoryHeader* header = LLChatHistoryHeader::createInstance(mMessageHeaderFilename); -	header->setup(chat); +	header->setup(chat,style_params);  	return header;  }  void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& style_params)  {  	LLView* view = NULL; -	std::string view_text; +	std::string view_text = "\n[" + formatCurrentTime() + "] " + chat.mFromName + ": ";  	LLInlineViewSegment::Params p;  	p.force_newline = true; @@ -343,14 +346,12 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty  	if (mLastFromName == chat.mFromName)  	{  		view = getSeparator(); -		view_text = "\n";  		p.top_pad = mTopSeparatorPad;  		p.bottom_pad = mBottomSeparatorPad;  	}  	else  	{ -		view = getHeader(chat); -		view_text = chat.mFromName + MESSAGE_USERNAME_DATE_SEPARATOR + formatCurrentTime() + '\n'; +		view = getHeader(chat,style_params);  		if (getText().size() == 0)  			p.top_pad = 0;  		else @@ -370,10 +371,8 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty  	appendWidget(p, view_text, false);  	//Append the text message -	std::string message = chat.mText + '\n'; -	appendText(message, FALSE, style_params); +	appendText(chat.mText, FALSE, style_params);  	mLastFromName = chat.mFromName;  	blockUndo(); -	setCursorAndScrollToEnd();  } diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 3789ebff4e..f0944042af 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -94,11 +94,9 @@ class LLChatHistory : public LLTextEditor  		LLView* getSeparator();  		/**  		 * Builds a message header. -		 * @param from owner of a message. -		 * @param time time of a message.  		 * @return pointer to LLView header object.  		 */ -		LLView* getHeader(const LLChat& chat); +		LLView* getHeader(const LLChat& chat,const LLStyle::Params& style_params);  	public:  		~LLChatHistory(); diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 6e0654e157..b919195fb2 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -103,6 +103,7 @@ LLNotificationChiclet::LLNotificationChiclet(const Params& p)  	// connect counter handlers to the signals  	connectCounterUpdatersToSignal("notify");  	connectCounterUpdatersToSignal("groupnotify"); +	connectCounterUpdatersToSignal("offer");  }  LLNotificationChiclet::~LLNotificationChiclet() @@ -790,11 +791,13 @@ LLChicletPanel::Params::Params()  	chiclet_padding = 3;  	scrolling_offset = 40; +/*  	if (!min_width.isProvided())  	{  		// min_width = 4 chiclets + 3 paddings -		min_width = 179 + 3*chiclet_padding; +		min_width = 180 + 3*chiclet_padding;  	} +*/  };  LLChicletPanel::LLChicletPanel(const Params&p) @@ -808,6 +811,7 @@ LLChicletPanel::LLChicletPanel(const Params&p)  , mShowControls(true)  {  	LLPanel::Params panel_params; +	panel_params.follows.flags(FOLLOWS_LEFT | FOLLOWS_RIGHT);  	mScrollArea = LLUICtrlFactory::create<LLPanel>(panel_params,this);  	// important for Show/Hide Camera and Move controls menu in bottom tray to work properly @@ -1058,7 +1062,7 @@ void LLChicletPanel::reshape(S32 width, S32 height, BOOL called_from_parent )  		width, scroll_button_rect.mBottom));  	mScrollArea->setRect(LLRect(scroll_button_rect.getWidth() + SCROLL_BUTTON_PAD,  		height, width - scroll_button_rect.getWidth() - SCROLL_BUTTON_PAD, 0)); -	mShowControls = width > mMinWidth; +	mShowControls = width >= mMinWidth;  	mScrollArea->setVisible(mShowControls);  	trimChiclets(); diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index e7afd7f08e..eab4a282f5 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -107,6 +107,7 @@ public:  		{  			draw_tooltip(FALSE);  			mouse_opaque(FALSE); +			default_icon_name("Generic_Person");  		};  	}; @@ -128,7 +129,7 @@ public:  		Optional<std::string> default_icon;  		Params() -		 : default_icon("default_icon", "default_land_picture.j2c") +		 : default_icon("default_icon", "Generic_Group")  		{  		};  	}; 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/llimfloater.cpp b/indra/newview/llimfloater.cpp index 5a2331aa06..54fc6f02fb 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -479,11 +479,29 @@ void LLIMFloater::updateMessages()  			LLStyle::Params style_params;  			style_params.color(chat_color); -			LLChat chat(message); +			LLChat chat;  			chat.mFromID = from_id;  			chat.mFromName = from; -			mChatHistory->appendWidgetMessage(chat, style_params); +			//Handle IRC styled /me messages. +			std::string prefix = message.substr(0, 4); +			if (prefix == "/me " || prefix == "/me'") +			{ +				if (from.size() > 0) +				{ +					style_params.font.style = "ITALIC"; +					chat.mText = from + " "; +					mChatHistory->appendWidgetMessage(chat, style_params); +				} +				message = message.substr(3); +				style_params.font.style = "UNDERLINE"; +				mChatHistory->appendText(message, FALSE, style_params); +			} +			else +			{ +				chat.mText = message; +				mChatHistory->appendWidgetMessage(chat, style_params); +			}  			mLastMessageIndex = msg["index"].asInteger();  		} @@ -499,7 +517,7 @@ void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void*  	LLIMModel::LLIMSession* im_session =  		LLIMModel::instance().findIMSession(self->mSessionID);  	//TODO: While disabled lllineeditor can receive focus we need to check if it is enabled (EK) -	if( im_session && im_session->mTextIMPossible && !self->mInputEditor->getEnabled()) +	if( im_session && im_session->mTextIMPossible && self->mInputEditor->getEnabled())  	{  		//in disconnected state IM input editor should be disabled  		self->mInputEditor->setEnabled(!gDisconnected); diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 14f94d5a88..be5fbdbbf8 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -439,8 +439,11 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co  	addToHistory(session_id, from, from_id, utf8_text);  	if (log2file) logToFile(session_id, from, from_id, utf8_text); -	//we do not count system messages -	if (from_id.notNull()) session->mNumUnread++; +	//we do not count system messages and our messages +	if (from_id.notNull() && from_id != gAgentID && SYSTEM_FROM != from) +	{ +		session->mNumUnread++; +	}  	// notify listeners  	LLSD arg; @@ -651,22 +654,10 @@ void LLIMModel::sendMessage(const std::string& utf8_text,  		//local echo for the legacy communicate panel  		std::string history_echo; -		std::string utf8_copy = utf8_text;  		LLAgentUI::buildFullname(history_echo); -		// Look for IRC-style emotes here. +		history_echo += ": " + utf8_text; -		std::string prefix = utf8_copy.substr(0, 4); -		if (prefix == "/me " || prefix == "/me'") -		{ -			utf8_copy.replace(0,3,""); -		} -		else -		{ -			history_echo += ": "; -		} -		history_echo += utf8_copy; -		  		LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(im_session_id);  		if (floater) floater->addHistoryLine(history_echo, LLUIColorTable::instance().getColor("IMChatColor"), true, gAgent.getID()); @@ -2347,15 +2338,6 @@ public:  			BOOL is_linden = LLMuteList::getInstance()->isLinden(name);  			std::string separator_string(": "); -			int message_offset=0; - -			//Handle IRC styled /me messages. -			std::string prefix = message.substr(0, 4); -			if (prefix == "/me " || prefix == "/me'") -			{ -				separator_string = ""; -				message_offset = 3; -			}  			chat.mMuted = is_muted && !is_linden;  			chat.mFromID = from_id; @@ -2372,7 +2354,7 @@ public:  			{  				saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());  			} -			std::string buffer = saved + message.substr(message_offset); +			std::string buffer = saved + message;  			BOOL is_this_agent = FALSE;  			if(from_id == gAgentID) @@ -2391,7 +2373,7 @@ public:  				ll_vector3_from_sd(message_params["position"]),  				true); -			chat.mText = std::string("IM: ") + name + separator_string + saved + message.substr(message_offset); +			chat.mText = std::string("IM: ") + name + separator_string + saved + message;  			LLFloaterChat::addChat(chat, TRUE, is_this_agent);  			//K now we want to accept the invitation diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index d54545971b..3993431311 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -260,6 +260,8 @@ bool LLNearbyChatBar::instanceExists()  void LLNearbyChatBar::draw()  { +// TODO: mantipov: remove +/*  	LLRect rect = getRect();  	S32 max_width = getMaxWidth(); @@ -269,6 +271,7 @@ void LLNearbyChatBar::draw()  		reshape(rect.getWidth(), rect.getHeight(), FALSE);  		setRect(rect);  	} +*/  	displaySpeakingIndicator();  	LLPanel::draw(); diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 4286582cdc..6145588df2 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -155,11 +155,9 @@ void LLNetMap::draw()  	F32 rotation = 0;  	{ -		LLGLEnable scissor(GL_SCISSOR_TEST); -		 +		LLLocalClipRect clip(getLocalRect());  		{  			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -			LLLocalClipRect clip(getLocalRect());  			glMatrixMode(GL_MODELVIEW); diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index 1bf7be1c4e..471dd28426 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -95,14 +95,9 @@ bool LLOfferHandler::processNotification(const LLSD& notify)  		LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, notification->getPayload()["from_id"]);  		if (!LLIMMgr::instance().hasSession(session_id))  		{ -			// create session with faked type to avoid creating chicklets  			session_id = LLIMMgr::instance().addSession(  					notification->getSubstitutions()["NAME"], IM_NOTHING_SPECIAL,  					notification->getPayload()["from_id"]); -			if (session_id != LLUUID::null) -			{ -				LLIMFloater::show(session_id); -			}  		}  		LLIMMgr::instance().addMessage(session_id, LLUUID(),  				notification->getSubstitutions()["NAME"], diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 5679233844..67a2704501 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -1167,7 +1167,9 @@ LLPanelClassifiedInfo* LLPanelClassifiedInfo::create()  BOOL LLPanelClassifiedInfo::postBuild()  { -	childSetAction("back_btn", boost::bind(&LLPanelClassifiedInfo::onExit, this), NULL); +	childSetAction("back_btn", boost::bind(&LLPanelClassifiedInfo::onExit, this)); +	childSetAction("show_on_map_btn", boost::bind(&LLPanelClassifiedInfo::onMapClick, this)); +	childSetAction("teleport_btn", boost::bind(&LLPanelClassifiedInfo::onTeleportClick, this));  	return TRUE;  } @@ -1177,6 +1179,11 @@ void LLPanelClassifiedInfo::setExitCallback(const commit_callback_t& cb)  	getChild<LLButton>("back_btn")->setClickedCallback(cb);  } +void LLPanelClassifiedInfo::setEditClassifiedCallback(const commit_callback_t& cb) +{ +	getChild<LLButton>("edit_btn")->setClickedCallback(cb); +} +  void LLPanelClassifiedInfo::onOpen(const LLSD& key)  {  	LLUUID avatar_id = key["avatar_id"]; @@ -1216,6 +1223,7 @@ void LLPanelClassifiedInfo::processProperties(void* data, EAvatarProcessorType t  			setDescription(c_info->description);  			setSnapshotId(c_info->snapshot_id);  			setParcelId(c_info->parcel_id); +			setPosGlobal(c_info->pos_global);  			setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));  			childSetValue("category", LLClassifiedInfo::sCategories[c_info->category]); @@ -1325,6 +1333,21 @@ std::string LLPanelClassifiedInfo::createLocationText(  	return location_text;  } +void LLPanelClassifiedInfo::onMapClick() +{ +	LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal()); +	LLFloaterReg::showInstance("world_map", "center"); +} + +void LLPanelClassifiedInfo::onTeleportClick() +{ +	if (!getPosGlobal().isExactlyZero()) +	{ +		gAgent.teleportViaLocation(getPosGlobal()); +		LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal()); +	} +} +  void LLPanelClassifiedInfo::onExit()  {  	LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this); diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 187bdbb37e..8b32495854 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -249,7 +249,9 @@ public:  	void setInfoLoaded(bool loaded) { mInfoLoaded = loaded; } -	virtual void setExitCallback(const commit_callback_t& cb); +	void setExitCallback(const commit_callback_t& cb); + +	void setEditClassifiedCallback(const commit_callback_t& cb);  protected: @@ -264,9 +266,8 @@ protected:  		const std::string& sim_name,   		const LLVector3d& pos_global); -	void onClickMap(); -	void onClickTeleport(); -	void onClickBack(); +	void onMapClick(); +	void onTeleportClick();  	void onExit();  private: diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 88aad4923d..7b5b232ad2 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -2383,12 +2383,8 @@ BOOL LLPanelGroupActionsSubTab::postBuildSubTab(LLView* root)  void LLPanelGroupActionsSubTab::activate()  {  	LLPanelGroupSubTab::activate(); -	lldebugs << "LLPanelGroupActionsSubTab::activate()" << llendl; -	mActionList->deselectAllItems(); -	mActionMembers->deleteAllItems(); -	mActionRoles->deleteAllItems(); -	mActionDescription->clear(); +	update(GC_ALL);  }  void LLPanelGroupActionsSubTab::deactivate() diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index 5a0c1164de..1770138b3e 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -181,7 +181,14 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)  	LLIMModel::LLIMSession* im_session =  		im_model.findIMSession(session_id);  	if( im_session && !im_session->mOtherParticipantIsAvatar ) +	{  		childSetEnabled("view_profile_btn", FALSE); +		childSetEnabled("add_friend_btn", FALSE); + +		childSetEnabled("share_btn", FALSE); +		childSetEnabled("teleport_btn", FALSE); +		childSetEnabled("pay_btn", FALSE); +	}  }  void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index c30658755a..6905c7e546 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -687,6 +687,10 @@ void LLPanelPicks::onPanelClassifiedSave(LLPanelClassifiedEdit* panel)  		c_item->setRightMouseUpCallback(boost::bind(&LLPanelPicks::onRightMouseUpItem, this, _1, _2, _3, _4));  		c_item->setMouseUpCallback(boost::bind(&LLPanelPicks::updateButtons, this));  		c_item->childSetAction("info_chevron", boost::bind(&LLPanelPicks::onClickInfo, this)); + +		// order does matter, showAccordion will invoke arrange for accordions. +		mClassifiedsAccTab->changeOpenClose(false); +		showAccordion("tab_classifieds", true);  	}  	else   	{ @@ -740,6 +744,7 @@ void LLPanelPicks::createClassifiedInfoPanel()  	{  		mPanelClassifiedInfo = LLPanelClassifiedInfo::create();  		mPanelClassifiedInfo->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedInfo)); +		mPanelClassifiedInfo->setEditClassifiedCallback(boost::bind(&LLPanelPicks::onPanelClassifiedEdit, this));  		mPanelClassifiedInfo->setVisible(FALSE);  	}  } diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 5c3c260549..bb2ded7ca5 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -271,7 +271,7 @@ void LLPanelPrimMediaControls::updateShape()  		LLIconCtrl* whitelist_icon			= getChild<LLIconCtrl>("media_whitelist_flag");  		LLIconCtrl* secure_lock_icon		= getChild<LLIconCtrl>("media_secure_lock_flag"); -		LLUICtrl* media_panel_scroll		= getChild<LLUICtrl>("media_panel_scroll"); +//		LLUICtrl* media_panel_scroll		= getChild<LLUICtrl>("media_panel_scroll");  		LLUICtrl* scroll_up_ctrl			= getChild<LLUICtrl>("scrollup");  		LLUICtrl* scroll_left_ctrl			= getChild<LLUICtrl>("scrollleft");  		LLUICtrl* scroll_right_ctrl			= getChild<LLUICtrl>("scrollright"); @@ -330,7 +330,7 @@ void LLPanelPrimMediaControls::updateShape()  			scroll_left_ctrl->setVisible(false);  			scroll_right_ctrl->setVisible(false);  			scroll_down_ctrl->setVisible(false); -			media_panel_scroll->setVisible(false); +//			media_panel_scroll->setVisible(false);  			F32 volume = media_impl->getVolume();  			// movie's url changed @@ -427,7 +427,7 @@ void LLPanelPrimMediaControls::updateShape()  			scroll_left_ctrl->setVisible(has_focus);  			scroll_right_ctrl->setVisible(has_focus);  			scroll_down_ctrl->setVisible(has_focus); -			media_panel_scroll->setVisible(has_focus); +//			media_panel_scroll->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/llsidetray.cpp b/indra/newview/llsidetray.cpp index 3d0b4de88a..70dc04f575 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -101,6 +101,7 @@ LLSideTray* LLSideTray::getInstance()  	if (!sInstance)  	{  		sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance()); +		sInstance->setXMLFilename("panel_side_tray.xml");  	}  	return sInstance; @@ -353,7 +354,8 @@ bool LLSideTray::selectTabByName	(const std::string& name)  	return true;  } -LLButton* LLSideTray::createButton	(const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback) +LLButton* LLSideTray::createButton	(const std::string& name,const std::string& image,const std::string& tooltip, +									 LLUICtrl::commit_callback_t callback)  {  	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	 @@ -374,6 +376,9 @@ LLButton* LLSideTray::createButton	(const std::string& name,const std::string& i  	LLButton* button = LLUICtrlFactory::create<LLButton> (bparams);  	button->setLabel(name);  	button->setClickedCallback(callback); + +	if(tooltip!="Home") +		button->setToolTip(tooltip);  	if(image.length())  	{ @@ -412,12 +417,12 @@ void	LLSideTray::createButtons	()  		// change if the home screen becomes its own tab.  		if (name == "sidebar_home")  		{ -			mCollapseButton = createButton("",sidebar_tab->mImage, +			mCollapseButton = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),  				boost::bind(&LLSideTray::onToggleCollapse, this));  		}  		else  		{ -			LLButton* button = createButton("",sidebar_tab->mImage, +			LLButton* button = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),  				boost::bind(&LLSideTray::onTabButtonClick, this, name));  			mTabButtons[name] = button;  		} diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index 5bb17eedd5..8b30199c45 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -141,7 +141,8 @@ protected:  	LLSideTrayTab* getTab		(const std::string& name);  	void		createButtons	(); -	LLButton*	createButton	(const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback); +	LLButton*	createButton	(const std::string& name,const std::string& image,const std::string& tooltip, +									LLUICtrl::commit_callback_t callback);  	void		arrange			();  	void		reflectCollapseChange(); 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/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index c02fd7a5ef..9370e318cf 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -50,7 +50,19 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) :	LLToastPanel(p.notif  	mMessage = getChild<LLTextBox>("message");  	mReplyBtn = getChild<LLButton>("reply");	 -	mMessage->setValue(p.message); +	LLStyle::Params style_params; +	//Handle IRC styled /me messages. +	std::string prefix = p.message.substr(0, 4); +	if (prefix == "/me " || prefix == "/me'") +	{ +		mMessage->clear(); +		style_params.font.style= "ITALIC"; +		mMessage->appendText(p.from + " ", FALSE, style_params); +		style_params.font.style= "UNDERLINE"; +		mMessage->appendText(p.message.substr(3), FALSE, style_params); +	} +	else +		mMessage->setValue(p.message);  	mUserName->setValue(p.from);  	mTime->setValue(p.time);  	mSessionID = p.session_id; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index a90790c59a..1a4c849f25 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1498,15 +1498,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  	}  	std::string separator_string(": "); -	int message_offset = 0; - -		//Handle IRC styled /me messages. -	std::string prefix = message.substr(0, 4); -	if (prefix == "/me " || prefix == "/me'") -	{ -		separator_string = ""; -		message_offset = 3; -	}  	LLSD args;  	switch(dialog) @@ -1558,7 +1549,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			// now store incoming IM in chat history -			buffer = message.substr(message_offset); +			buffer = message;  			LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; @@ -1576,7 +1567,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				true);  			// pretend this is chat generated by self, so it does not show up on screen -			chat.mText = std::string("IM: ") + name + separator_string + message.substr(message_offset); +			chat.mText = std::string("IM: ") + name + separator_string + message;  			LLFloaterChat::addChat( chat, TRUE, TRUE );  		}  		else if (from_id.isNull()) @@ -1596,7 +1587,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			// Treat like a system message and put in chat history.  			// Claim to be from a local agent so it doesn't go into  			// console. -			chat.mText = name + separator_string + message.substr(message_offset); +			chat.mText = name + separator_string + message;  			LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  			if(nearby_chat) @@ -1612,7 +1603,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			{  				saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());  			} -			buffer = saved + message.substr(message_offset); +			buffer = saved + message;  			LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; @@ -1634,7 +1625,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  					region_id,  					position,  					true); -				chat.mText = std::string("IM: ") + name + separator_string + saved + message.substr(message_offset); +				chat.mText = std::string("IM: ") + name + separator_string + saved + message;  				BOOL local_agent = FALSE;  				LLFloaterChat::addChat( chat, TRUE, local_agent ); @@ -1922,7 +1913,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  		{  			saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());  		} -		buffer = saved + message.substr(message_offset); +		buffer = saved + message;  		BOOL is_this_agent = FALSE;  		if(from_id == gAgentID)  		{ @@ -1940,7 +1931,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			position,  			true); -		chat.mText = std::string("IM: ") + name + separator_string +  saved + message.substr(message_offset); +		chat.mText = std::string("IM: ") + name + separator_string +  saved + message;  		LLFloaterChat::addChat(chat, TRUE, is_this_agent);  	}  	break; @@ -1953,7 +1944,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			}  			LLSD substitutions; -			substitutions["MSG"] = message.substr(message_offset); +			substitutions["MSG"] = message;  			LLNotifications::instance().add("ServerObjectMessage", substitutions);  		}  		break; @@ -1978,7 +1969,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  		else  		{  			// TODO: after LLTrans hits release, get "busy response" into translatable file -			buffer = llformat("%s (%s): %s", name.c_str(), "busy response", message.substr(message_offset).c_str()); +			buffer = llformat("%s (%s): %s", name.c_str(), "busy response", message.c_str());  			gIMMgr->addMessage(session_id, from_id, name, buffer);  		}  		break; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index d69cc5999c..1054223dcf 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2302,13 +2302,13 @@ void LLViewerWindow::moveCursorToCenter()  // Hover handlers  // -void append_xui_tooltip(LLView* viewp, std::string& tool_tip_msg) +void append_xui_tooltip(LLView* viewp, LLToolTip::Params& params)  {  	if (viewp)   	{ -		if (!tool_tip_msg.empty()) +		if (!params.styled_message().empty())  		{ -			tool_tip_msg.append("\n---------\n"); +			params.styled_message.add().text("\n---------\n");   		}  		LLView::root_to_view_iterator_t end_tooltip_it = viewp->endRootToView();  		// NOTE: we skip "root" since it is assumed @@ -2318,15 +2318,16 @@ void append_xui_tooltip(LLView* viewp, std::string& tool_tip_msg)  		{  			LLView* viewp = *tooltip_it; -			tool_tip_msg.append(viewp->getName()); +			params.styled_message.add().text(viewp->getName()); +  			LLPanel* panelp = dynamic_cast<LLPanel*>(viewp);  			if (panelp && !panelp->getXMLFilename().empty())  			{ -				tool_tip_msg.append("("); -				tool_tip_msg.append(panelp->getXMLFilename()); -				tool_tip_msg.append(")"); +				params.styled_message.add() +					.text("(" + panelp->getXMLFilename() + ")") +					.style.color(LLColor4(0.7f, 0.7f, 1.f, 1.f));  			} -			tool_tip_msg.append("/"); +			params.styled_message.add().text("/");  		}  	}  } @@ -2567,6 +2568,8 @@ void LLViewerWindow::updateUI()  		if (gSavedSettings.getBOOL("DebugShowXUINames"))  		{ +			LLToolTip::Params params; +  			LLView* tooltip_view = mRootView;  			LLView::tree_iterator_t end_it = mRootView->endTreeDFS();  			for (LLView::tree_iterator_t it = mRootView->beginTreeDFS(); it != end_it; ++it) @@ -2599,20 +2602,20 @@ void LLViewerWindow::updateUI()  					// NOTE: this emulates visiting only the leaf nodes that meet our criteria  					if (!viewp->hasAncestor(tooltip_view))  					{ -						append_xui_tooltip(tooltip_view, tool_tip_msg); +						append_xui_tooltip(tooltip_view, params);  						screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect());  					}  					tooltip_view = viewp;  				}  			} -			append_xui_tooltip(tooltip_view, tool_tip_msg); +			append_xui_tooltip(tooltip_view, params);  			screen_sticky_rect.intersectWith(tooltip_view->calcScreenRect()); -			LLToolTipMgr::instance().show(LLToolTip::Params() -				.message(tool_tip_msg) -				.sticky_rect(screen_sticky_rect) -				.max_width(400)); +			params.sticky_rect = screen_sticky_rect; +			params.max_width = 400; + +			LLToolTipMgr::instance().show(params);  		}  		// if there is a mouse captor, nothing else gets a tooltip  		else if (mouse_captor) 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/pipeline.cpp b/indra/newview/pipeline.cpp index 1129e9ffd1..507c726e02 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -512,16 +512,18 @@ void LLPipeline::resizeScreenTexture()  	LLFastTimer ft(FTM_RESIZE_SCREEN_TEXTURE);  	if (gPipeline.canUseVertexShaders() && assertInitialized())  	{ -		GLuint resX = gViewerWindow->getWorldViewWidthRaw(); -		GLuint resY = gViewerWindow->getWorldViewHeightRaw(); +		GLuint resX = gViewerWindow->getWindowWidthRaw(); +		GLuint resY = gViewerWindow->getWindowHeightRaw(); +		GLuint view_width = gViewerWindow->getWorldViewWidthRaw(); +		GLuint view_height = gViewerWindow->getWorldViewHeightRaw(); -		allocateScreenBuffer(resX,resY); +		allocateScreenBuffer(resX, resY, view_width, view_height);  		llinfos << "RESIZED SCREEN TEXTURE: " << resX << "x" << resY << llendl;  	}  } -void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) +void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U32 viewport_height)  {  	U32 samples = gSavedSettings.getU32("RenderFSAASamples"); @@ -542,18 +544,24 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		//allocate deferred rendering color buffers  		mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);  		mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); +		mDeferredScreen.setViewport(viewport_width, viewport_height); +		mDeferredDepth.setViewport(viewport_width, viewport_height);  		addDeferredAttachments(mDeferredScreen);  		mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		  		mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); +		mScreen.setViewport(viewport_width, viewport_height); +		mEdgeMap.setViewport(viewport_width, viewport_height);  		for (U32 i = 0; i < 3; i++)  		{  			mDeferredLight[i].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); +			mDeferredLight[i].setViewport(viewport_width, viewport_height);  		}  		for (U32 i = 0; i < 2; i++)  		{  			mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); +			mGIMapPost[i].setViewport(viewport_width, viewport_height);  		}  		F32 scale = gSavedSettings.getF32("RenderShadowResolutionScale"); @@ -561,6 +569,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		for (U32 i = 0; i < 4; i++)  		{  			mShadow[i].allocate(U32(resX*scale),U32(resY*scale), 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE); +			mShadow[i].setViewport(viewport_width, viewport_height);  		} @@ -570,6 +579,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		for (U32 i = 4; i < 6; i++)  		{  			mShadow[i].allocate(width, height, 0, TRUE, FALSE); +			mShadow[i].setViewport(viewport_width, viewport_height);  		} @@ -577,16 +587,19 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)  		width = nhpo2(resX)/2;  		height = nhpo2(resY)/2;  		mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE); +		mLuminanceMap.setViewport(viewport_width, viewport_height);  	}  	else  	{  		mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		 +		mScreen.setViewport(viewport_width, viewport_height);  	}  	if (gGLManager.mHasFramebufferMultisample && samples > 1)  	{  		mSampleBuffer.allocate(resX,resY,GL_RGBA,TRUE,TRUE,LLTexUnit::TT_RECT_TEXTURE,FALSE,samples); +		mSampleBuffer.setViewport(viewport_width, viewport_height);  		mScreen.setSampleBuffer(&mSampleBuffer);  		if (LLPipeline::sRenderDeferred) @@ -698,8 +711,10 @@ void LLPipeline::createGLBuffers()  	stop_glerror(); -	GLuint resX = gViewerWindow->getWorldViewWidthRaw(); -	GLuint resY = gViewerWindow->getWorldViewHeightRaw(); +	GLuint resX = gViewerWindow->getWindowWidthRaw(); +	GLuint resY = gViewerWindow->getWindowHeightRaw(); +	GLuint viewport_width = gViewerWindow->getWorldViewWidthRaw(); +	GLuint viewport_height = gViewerWindow->getWorldViewHeightRaw();  	if (LLPipeline::sRenderGlow)  	{ //screen space glow buffers @@ -711,7 +726,7 @@ void LLPipeline::createGLBuffers()  			mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE);  		} -		allocateScreenBuffer(resX,resY); +		allocateScreenBuffer(resX,resY, viewport_width, viewport_height);  	}  	if (sRenderDeferred) diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index ce50a37405..9193e19bb1 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -111,7 +111,7 @@ public:  	void resizeScreenTexture();  	void releaseGLBuffers();  	void createGLBuffers(); -	void allocateScreenBuffer(U32 resX, U32 resY); +	void allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U32 viewport_height);  	void resetVertexBuffers(LLDrawable* drawable);  	void setUseVBO(BOOL use_vbo); diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 7e19a80c10..028a5844c6 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -513,7 +513,7 @@       reference="White" />      <color       name="ObjectChatColor" -     reference="LtGray" /> +     reference="0.7 0.8 0.9 1" />      <color       name="OverdrivenColor"       value="1 0 0 1" /> 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_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index 44dcb07526..a2055d8c52 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -385,6 +385,16 @@ line to actually fit         left="10"         width="250"          follows="top|left" +       font.name="Monospace" +       name="test_text10" +       tool_tip="text"> +        Monospace Button Flyout Checkbox +      </text> +      <text +       top_pad="10" +       left="10" +       width="250"  +       follows="top|left"         font.name="SansSerifSmall"         name="test_text10"         tool_tip="text"> diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 5eb0560962..bd60574a95 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -185,6 +185,14 @@          <menu_item_call.on_click           function="Advanced.ShowSideTray" />        </menu_item_call> +        <menu_item_call +         label="Widget Test" +         name="Widget Test" +         shortcut="control|shift|T"> +            <menu_item_call.on_click +             function="ShowFloater" +             parameter="test_widgets" /> +        </menu_item_call>        <menu_item_check           label="Reg In Client Test (restart)"           name="Reg In Client Test (restart)"> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index ccd8bc569e..96c6d970c2 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5013,6 +5013,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a     name="GodMessage"     type="notify">  [NAME] +  [MESSAGE]    </notification> diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml index 0c42686531..2eaa3a94ee 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -30,7 +30,7 @@      <avatar_icon       follows="top|left"       height="20" -     image_name="smile.png" +     default_icon_name="Generic_Person"       layout="topleft"       left="5"       mouse_opaque="true" diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index ca6d8334a2..8188016455 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -45,7 +45,7 @@           min_height="23"           width="310"           top="0" -         min_width="310" +         min_width="192"           name="chat_bar"           user_resize="false"           filename="panel_nearby_chat_bar.xml" /> @@ -92,13 +92,13 @@           height="28"           layout="topleft"           min_height="28" -         width="80" +         width="82"           top_delta="0" -         min_width="76" +         min_width="82"           name="gesture_panel"           user_resize="false"> -         <button -           follows="right" +         <gesture_combo_box +          follows="left|right"            height="23"            label="Gesture"            layout="topleft" @@ -106,7 +106,7 @@            left="0"            top="3"           use_ellipses="true" -          width="80" +          width="82"            tool_tip="Shows/hides gestures"/>          </layout_panel>  		 <icon @@ -129,8 +129,9 @@           layout="topleft"           min_height="28"           name="movement_panel" +         user_resize="false"           width="80" -         min_width="76"> +         min_width="80">              <button               follows="left|right"               height="23" @@ -166,10 +167,10 @@           height="28"           layout="topleft"           min_height="28" -         min_width="76" +         min_width="80"           name="cam_panel" -         top_delta="-10" -         width="100"> +         user_resize="false" +         width="80">              <button               follows="left|right"               height="23" @@ -205,6 +206,7 @@           follows="left|right"           height="28"           layout="topleft" +         min_width="40"           name="snapshot_panel"           width="40">              <button @@ -231,15 +233,18 @@           top="0"           name="chiclet_list_panel"           width="189" -         min_width="189" +         min_width="180"           user_resize="false"           auto_resize="true"> +<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same  +as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->              <chiclet_panel  	    mouse_opaque="false"               follows="left|right"               height="28"               layout="topleft"               left="0" +             min_width="180"               name="chiclet_list"               top="0"               chiclet_padding="3" @@ -313,9 +318,9 @@                 />                 <unread_notifications                 width="34" -               height="23" -               left="22" -               top="23" /> +               height="20" +               left="0" +               top="19" />  	    </chiclet_notification>          </layout_panel>         <icon diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 4f24c7a745..58a78a0ab8 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -8,7 +8,7 @@   left="0"   top="0"   name="general_tab" - width="303"> + width="310">      <panel.string       name="help_text">          The General tab contains general information about this group, a list of members, general Group Preferences and member options. @@ -32,7 +32,7 @@ Hover your mouse over the options for more help.       max_length="511"       name="charter"       top="5" -     width="303" +     width="305"       word_wrap="true">       Group Charter      </text_editor> @@ -43,10 +43,10 @@ Hover your mouse over the options for more help.       heading_height="16"       height="130"       layout="topleft" -     left_delta="0" +     left="5"       name="visible_members" -     top_pad="0" -     width="303"> +     top_pad="2" +     width="305">          <name_list.columns           label="Member"           name="name" @@ -64,7 +64,7 @@ Hover your mouse over the options for more help.           left_delta="0"           name="active_title_label"           top_pad="5" -         width="303"> +         width="300">              My Title          </text>          <combo_box @@ -75,7 +75,7 @@ Hover your mouse over the options for more help.           name="active_title"           tool_tip="Sets the title that appears in your avatar's name tag when this group is active."           top_pad="2" -         width="303" /> +         width="305" />          <check_box           height="16"           font="SansSerifSmall" @@ -85,7 +85,7 @@ Hover your mouse over the options for more help.           name="receive_notices"           tool_tip="Sets whether you want to receive Notices from this group.  Uncheck this box if this group is spamming you."           top_pad="5" -         width="303" /> +         width="300" />          <check_box           height="16"           label="Show in my profile" @@ -94,7 +94,7 @@ Hover your mouse over the options for more help.           name="list_groups_in_profile"           tool_tip="Sets whether you want to show this group in your profile"           top_pad="5" -         width="303" /> +         width="295" />          <panel           background_visible="true"           bevel_style="in" @@ -106,7 +106,7 @@ Hover your mouse over the options for more help.           left="5"           name="preferences_container"           top_pad="5" -         width="303"> +         width="305">          <check_box           follows="right|top"           height="16" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index de1323d9cb..0082128ca4 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -9,7 +9,7 @@ background_visible="true"   left="0"   top="20"   name="GroupInfo" - width="333"> + width="323">      <panel.string       name="default_needs_apply_text">          There are unsaved changes to the current tab @@ -117,28 +117,17 @@ background_visible="true"       width="120" />     <accordion               follows="all" -             height="425" +             height="405"               layout="topleft"               left="0"               name="groups_accordion"               top_pad="15" -             width="336"> +             width="323">               <accordion_tab                   expanded="true"                   layout="topleft"                   name="group_general_tab"                   title="General"> -         <scroll_container -         color="DkGray2" -         opaque="true" -         height="323" -         follows="all" -         layout="topleft" -         left="0" -         top="0" -         name="general_scroll" -         reserve_scroll_corner="false" -         width="333">              <panel              border="false"           class="panel_group_general"  @@ -146,27 +135,15 @@ background_visible="true"               layout="topleft"               left="0"               help_topic="group_general_tab" -         name="group_general_tab_panel" +             name="group_general_tab_panel"               top="0" -             width="303" /> -         </scroll_container> +             width="300" />           </accordion_tab>           <accordion_tab                   expanded="false"                   layout="topleft"                   name="group_roles_tab"                   title="Roles"> -               <scroll_container -                  color="DkGray2" -                  opaque="true" -                  height="323" -                  follows="all" -                  layout="topleft" -                  left="0" -                  top="0" -                  name="roles_scroll" -                  reserve_scroll_corner="false" -                  width="333">                   <panel                   border="false"           class="panel_group_roles" @@ -177,24 +154,12 @@ background_visible="true"           name="group_roles_tab_panel"                    top="0"               width="303" /> -         </scroll_container>           </accordion_tab>           <accordion_tab                   expanded="false"                   layout="topleft"                   name="group_notices_tab"                   title="Notices"> -            <scroll_container -                  color="DkGray2" -                  opaque="true" -                  height="323" -                  follows="all" -                  layout="topleft" -                  left="0" -                  top="0" -                  name="notices_scroll" -                  reserve_scroll_corner="false" -                  width="333">          <panel          border="false"           class="panel_group_notices" @@ -205,24 +170,12 @@ background_visible="true"           name="group_notices_tab_panel"           top="0"           width="303" /> -         </scroll_container>           </accordion_tab>          <accordion_tab                   expanded="false"                   layout="topleft"                   name="group_land_tab"                   title="Land/Assets"> -           <scroll_container -                  color="DkGray2" -                  opaque="true" -                  height="323" -                  follows="all" -                  layout="topleft" -                  left="0" -                  top="0" -                  name="land_scroll" -                  reserve_scroll_corner="false" -                  width="333">          <panel          border="false"           class="panel_group_land_money" @@ -232,8 +185,7 @@ background_visible="true"           help_topic="group_land_money_tab"           name="group_land_tab_panel"           top="0" -         width="313" /> -         </scroll_container> +         width="300" />           </accordion_tab>           </accordion>     <button diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 0c6f81f8fd..2c649642c3 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -5,10 +5,10 @@   height="510"   label="Land & L$"   layout="topleft" - left="1" + left="0"   name="land_money_tab"   top="0" - width="313"> + width="310">      <panel.string       name="help_text">          Parcels owned by a group are listed along with contribution details. A warning appears until the Total Land in Use is less than or = to the Total Contribution. @@ -47,10 +47,10 @@       heading_height="20"       height="150"       layout="topleft" -     left="0" +     left="2"       name="group_parcel_list"       top_pad="0" -     width="313"> +     width="305">          <scroll_list.columns           label="Parcel"           name="name" @@ -79,7 +79,7 @@       label_selected="Map"       layout="topleft"       name="map_button" -     right="-10" +     right="-5"       top_pad="5"       width="95"       enabled="false" /> @@ -185,7 +185,9 @@       layout="topleft"       left_pad="3"       name="your_contribution_units" -     top_delta="2"> +     top_delta="2" +     width="40" +      >          m²      </text>       <text @@ -210,17 +212,17 @@       visible="false"       width="16" />      <text -      follows="left|top" +     follows="left|top"       type="string"       word_wrap="true"       font="SansSerifSmall"       height="35"       layout="topleft" -     left_pad="0" +     left_pad="5"       name="group_over_limit_text"       text_color="EmphasisColor"       top_delta="0" -     width="290"> +     width="260">          Group members must contribute more land credits to support land in use      </text>      <text @@ -241,7 +243,7 @@       height="200"       halign="center"       layout="topleft" -     left="10" +     left="5"       name="group_money_tab_container"       tab_position="top"       tab_height="20" @@ -268,7 +270,7 @@               left="0"               max_length="4096"               name="group_money_planning_text" -             top="0" +             top="2"               width="300"               word_wrap="true">                  Loading... @@ -293,7 +295,7 @@               left="0"               max_length="4096"               name="group_money_details_text" -             top="0" +             top="2"               width="300"               word_wrap="true">                  Loading... @@ -305,8 +307,8 @@  	     layout="topleft"  	     name="earlier_details_button"  	     tool_tip="Back" -	     top_pad="3" -             right="-35" +	     top_pad="5" +             right="-45"  	     width="31" />               <button  	     follows="left|top" @@ -327,7 +329,7 @@           left_delta="0"           help_topic="group_money_sales_tab"           name="group_money_sales_tab" -         top_delta="-1" +         top="5"           width="300">              <text_editor               type="string" @@ -337,7 +339,7 @@               left="0"               max_length="4096"               name="group_money_sales_text" -             top="0" +             top="2"               width="300"               word_wrap="true">                  Loading... @@ -349,8 +351,8 @@  	     layout="topleft"  	     name="earlier_sales_button"  	     tool_tip="Back" -	     top_pad="3" -             right="-35" +	     top_pad="5" +         right="-45"  	     width="31" />               <button  	     follows="left|top" @@ -358,7 +360,7 @@  	     image_overlay="Arrow_Right_Off"  	     layout="topleft"  	     left_pad="10" -             name="later_sales_button" +         name="later_sales_button"  	     tool_tip="Next"  	     width="31" />          </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml index 24a4005a45..e56db6414f 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml @@ -7,7 +7,7 @@   left="0"   name="notices_tab"   top="0" - width="313"> + width="310">      <panel.string       name="help_text">          Notices are a quick way to communicate across a  @@ -27,7 +27,7 @@ the General tab.       word_wrap="true"       height="30"       layout="topleft" -     left="10" +     left="5"       name="lbl2"       top="5"       width="300"> @@ -41,10 +41,10 @@ Groups are limited to 200 notices/group daily       heading_height="16"       height="125"       layout="topleft" -     left="0" +     left="2"       name="notice_list"       top_pad="0" -     width="303"> +     width="305">          <scroll_list.columns           label=""           name="icon" @@ -81,10 +81,10 @@ Groups are limited to 200 notices/group daily         image_disabled="AddItem_Disabled"         layout="topleft"         label="Create a new notice" -       left="15" +       left="5"         name="create_new_notice"         tool_tip="Create a new notice" -     top_delta="-5" +     top_delta="0"         width="18" />       <button       follows="top|left" @@ -93,7 +93,7 @@ Groups are limited to 200 notices/group daily       layout="topleft"       name="refresh_notices"       right="-5" -     top_delta="5" +     top_delta="0"       width="23" />      <panel       follows="left|top" @@ -219,7 +219,7 @@ Groups are limited to 200 notices/group daily           label_selected="Send Notice"           layout="topleft"           right="-10" -         top_pad="20" +         top_pad="10"           name="send_notice"           width="100" />        <group_drop_target diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 4129d7b448..604fb81c8e 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -7,7 +7,7 @@   left="0"   top="0"   name="roles_tab" - width="313"> + width="310">      <panel.string       name="default_needs_apply_text">          There are unsaved changes to the current tab @@ -28,9 +28,9 @@       name="roles_tab_container"       tab_position="top"       tab_height="20" -     tab_min_width="96" +     tab_min_width="75"       top="3" -     width="303"> +     width="300">          <panel           border="false"           height="220" @@ -51,23 +51,13 @@ clicking on their names.           <filter_editor           layout="topleft"           top="10" -         left="4" +         left="5"           width="280"           height="20"           follows="left|top|right"           max_length="250"           label="Filter Members"           name="filter_input" /> -          <!--  <button -             enabled="false" -             font="SansSerifSmall" -             height="20" -             label="Show All" -             layout="topleft" -             left_pad="-90" -             name="show_all_button" -             top_delta="-6" -             width="80" />-->              <name_list               column_padding="0"               draw_heading="true" @@ -111,14 +101,6 @@ clicking on their names.               right="-5"               name="member_eject"               width="100" /> -             <!--What is this?--> -            <icon -             height="16" -             image_name="Inv_FolderClosed" -             layout="topleft" -             name="power_folder_icon" -             visible="false" -             width="16" />          </panel>          <panel           border="false" @@ -156,7 +138,7 @@ including the Everyone and Owner Roles.           <filter_editor           layout="topleft"           top="10" -         left="4" +         left="5"           width="280"           height="20"           follows="left|top|right" @@ -179,12 +161,12 @@ including the Everyone and Owner Roles.               draw_stripes="false"               follows="left|top"               heading_height="20" -             height="150" +             height="160"               layout="topleft"               search_column="1"               left="0"               name="role_list" -             top_pad="4" +             top_pad="2"               width="300">                  <scroll_list.columns                   label="Role" @@ -238,24 +220,13 @@ things in this group. There's a broad variety of Abilities.           <filter_editor           layout="topleft"           top="10" -         left="4" +         left="5"           width="280"           height="20"           follows="left|top|right"           max_length="250"           label="Filter Abilities"           name="filter_input" /> -            <!-- -            <button -             enabled="false" -             font="SansSerifSmall" -             height="20" -             label="Show All" -             layout="topleft" -             left_pad="0" -             name="show_all_button" -             top_delta="0" -             width="80" /> -->              <scroll_list               column_padding="0"               draw_stripes="false" @@ -267,14 +238,14 @@ things in this group. There's a broad variety of Abilities.               name="action_list"               search_column="1"               tool_tip="Select an Ability to view more details" -             top_pad="6" +             top_pad="2"               width="300">                  <scroll_list.columns                   label=""                   name="icon"                   width="16" />                  <scroll_list.columns -                 label="" +                 label="Action"                   name="action"                   width="247" />              </scroll_list> @@ -293,9 +264,9 @@ things in this group. There's a broad variety of Abilities.       follows="left|top"       left="10"       name="members_footer" -     top_pad="10" +     top="245"       top_delta="0" -     width="300"> +     width="290">          <text           type="string"           height="16" @@ -304,7 +275,7 @@ things in this group. There's a broad variety of Abilities.           left="0"           name="static"           top_pad="5" -         width="295"> +         width="285">              Assigned Roles          </text>          <scroll_list @@ -315,7 +286,7 @@ things in this group. There's a broad variety of Abilities.           left="0"           name="member_assigned_roles"           top_pad="0" -         width="295"> +         width="285">              <scroll_list.columns               label=""               name="checkbox" @@ -323,7 +294,7 @@ things in this group. There's a broad variety of Abilities.              <scroll_list.columns               label=""               name="role" -             width="265" /> +             width="255" />          </scroll_list>                   <text           type="string" @@ -333,7 +304,7 @@ things in this group. There's a broad variety of Abilities.           left="0"           name="static2"           top_pad="5" -         width="295"> +         width="285">              Allowed Abilities          </text>           <scroll_list @@ -345,7 +316,7 @@ things in this group. There's a broad variety of Abilities.           search_column="2"           tool_tip="For details of each allowed ability see the abilities tab"           top_pad="0" -         width="295"> +         width="285">              <scroll_list.columns               label=""               name="icon" @@ -353,7 +324,7 @@ things in this group. There's a broad variety of Abilities.              <scroll_list.columns               label=""               name="action" -             width="275" /> +             width="265" />          </scroll_list>      </panel>      <panel @@ -364,7 +335,7 @@ things in this group. There's a broad variety of Abilities.       top_delta="0"       top="245"       visible="false" -     width="300"> +     width="290">          <text           type="string"           height="16" @@ -386,7 +357,7 @@ things in this group. There's a broad variety of Abilities.           max_length="295"           name="role_name"           top_pad="0" -         width="295"> +         width="290">              Employees          </line_editor>          <text @@ -395,7 +366,7 @@ things in this group. There's a broad variety of Abilities.           layout="topleft"           name="static3"           top_pad="5" -         width="295"> +         width="290">              Title          </text>          <line_editor @@ -408,7 +379,7 @@ things in this group. There's a broad variety of Abilities.           max_length="295"           name="role_title"           top_pad="0" -         width="295"> +         width="290">            (waiting)          </line_editor>                  <text @@ -442,7 +413,7 @@ things in this group. There's a broad variety of Abilities.           left="0"           name="static4"           top_pad="5" -         width="295"> +         width="290">              Assigned Roles          </text>          <name_list @@ -452,7 +423,7 @@ things in this group. There's a broad variety of Abilities.           left="0"           name="role_assigned_members"           top_pad="0" -         width="295" /> +         width="290" />          <check_box           height="15"           label="Reveal members" @@ -469,7 +440,7 @@ things in this group. There's a broad variety of Abilities.           left="0"           name="static5"           top_pad="5" -         width="295"> +         width="290">              Allowed Abilities          </text>          <scroll_list @@ -504,7 +475,7 @@ things in this group. There's a broad variety of Abilities.       top_delta="0"       top="245"       visible="false" -     width="300"> +     width="290">          <text           type="string"           height="16" @@ -550,7 +521,7 @@ things in this group. There's a broad variety of Abilities.           layout="topleft"           name="static3"           top_pad="5" -         width="295"> +         width="290">              Members with this ability          </text>          <name_list @@ -558,6 +529,6 @@ things in this group. There's a broad variety of Abilities.           layout="topleft"           name="action_members"           top_pad="0" -         width="295" /> +         width="290" />      </panel>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_instant_message.xml b/indra/newview/skins/default/xui/en/panel_instant_message.xml index 26d8304551..be56866119 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -79,7 +79,7 @@       text_color="white"       top="33"       use_ellipses="true" -     value="MESSAGE" +     value=""       width="285"       word_wrap="true"       max_length="350" /> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index a12797d96b..1ef845b769 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -9,7 +9,7 @@   top="21"   width="310">      <string name="min_width"> -        310 +        192      </string>      <string name="max_width">          320 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" /> diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index dbe76e553b..9cfbed432a 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -22,6 +22,7 @@    left="0"    name="accordion"    top="0" +  single_expansion="true"    width="313">      <accordion_tab       can_resize="false" @@ -46,7 +47,7 @@       layout="topleft"       height="235"       name="tab_classifieds" -     title="Classified" +     title="Classifieds"       visible="false">              <flat_list_view               color="DkGray2" diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml index a9874f4553..a419a02d75 100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml @@ -94,7 +94,7 @@    <sidetray_tab      name="sidebar_me"      help_topic="sidebar_me" -    tab_title="Me" +    tab_title="My Profile"      description="Edit your public profile and Picks."      image="TabIcon_Me_Off"      image_selected="TabIcon_Me_Selected" @@ -112,7 +112,7 @@    <sidetray_tab      name="sidebar_appearance"      help_topic="sidebar_appearance" -    tab_title="Appearance" +    tab_title="My Appearance"      description="Change your appearance and current look."      image="TabIcon_Appearance_Off"      image_selected="TabIcon_Appearance_Selected" @@ -131,7 +131,7 @@    <sidetray_tab      name="sidebar_inventory"      help_topic="sidebar_inventory" -    tab_title="Inventory" +    tab_title="My Inventory"      description="Browse your inventory."      image="TabIcon_Things_Off"      image_selected="TabIcon_Things_Selected" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index b0a406a277..ea66bfa197 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2850,7 +2850,6 @@ If you continue to receive this message, contact the [SUPPORT_SITE].  	<string name="IM_to_label">To</string>  	<string name="IM_moderator_label">(Moderator)</string> -    <string name="ringing-im">      Joining Voice Chat...    </string> diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml new file mode 100644 index 0000000000..a35e2c3663 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> + +<avatar_icon default_icon_name="Generic_Person_Large"> +</avatar_icon> diff --git a/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml new file mode 100644 index 0000000000..2f72ad65a1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/ui_ctrl.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- Global settings for all widgets ("UI Controls") --> +<ui_ctrl +  font="SansSerif" +  />  | 
