diff options
| author | Vadim Savchuk <vsavchuk@productengine.com> | 2010-06-03 19:07:23 +0300 | 
|---|---|---|
| committer | Vadim Savchuk <vsavchuk@productengine.com> | 2010-06-03 19:07:23 +0300 | 
| commit | cdab7667320164666682cf46b79faf9d8c5e037b (patch) | |
| tree | 5e377cb7077f82a32cb7913b1cc1580b4b39befd /indra | |
| parent | 2af1fd0c62b06869253d7d68599365973821bab3 (diff) | |
| parent | 797c1dbc6ef1c51755dcace98caf0c493cd8f511 (diff) | |
Merge from default branch
--HG--
branch : product-engine
Diffstat (limited to 'indra')
67 files changed, 393 insertions, 319 deletions
| diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index 40a9752268..27c0c0b640 100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -389,27 +389,6 @@ void LLCharacter::clearVisualParamWeights()  }  //----------------------------------------------------------------------------- -// BOOL visualParamWeightsAreDefault() -//----------------------------------------------------------------------------- -BOOL LLCharacter::visualParamWeightsAreDefault() -{ -	for (LLVisualParam *param = getFirstVisualParam();  -		param; -		param = getNextVisualParam()) -	{ -		if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) -		{ -			if (param->getWeight() != param->getDefaultWeight()) -				return false; -		} -	} - -	return true; -} - - - -//-----------------------------------------------------------------------------  // getVisualParam()  //-----------------------------------------------------------------------------  LLVisualParam*	LLCharacter::getVisualParam(const char *param_name) diff --git a/indra/llcharacter/llcharacter.h b/indra/llcharacter/llcharacter.h index 27e2a51c62..cac73c01b9 100644 --- a/indra/llcharacter/llcharacter.h +++ b/indra/llcharacter/llcharacter.h @@ -212,12 +212,9 @@ public:  	F32 getVisualParamWeight(const char* param_name);  	F32 getVisualParamWeight(S32 index); -	// set all morph weights to 0 +	// set all morph weights to defaults  	void clearVisualParamWeights(); -	// see if all the weights are default -	BOOL visualParamWeightsAreDefault(); -  	// visual parameter accessors  	LLVisualParam*	getFirstVisualParam()  	{ @@ -231,6 +228,21 @@ public:  		return (mCurIterator++)->second;  	} +	S32 getVisualParamCountInGroup(const EVisualParamGroup group) const +	{ +		S32 rtn = 0; +		for (visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.begin(); +		     iter != mVisualParamIndexMap.end(); +		     /**/ ) +		{ +			if ((iter++)->second->getGroup() == group) +			{ +				++rtn; +			} +		} +		return rtn; +	} +  	LLVisualParam*	getVisualParam(S32 id) const  	{  		visual_param_index_map_t::const_iterator iter = mVisualParamIndexMap.find(id); diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 297322fe58..703fe2f9cc 100644 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -284,7 +284,7 @@ void LLVisualParam::setAnimationTarget(F32 target_value, BOOL upload_bake)  void LLVisualParam::setNextParam( LLVisualParam *next )  {  	llassert(!mNext); - +	llassert(getWeight() == getDefaultWeight()); // need to establish mNext before we start changing values on this, else initial value won't get mirrored (we can fix that, but better to forbid this pattern)  	mNext = next;  } diff --git a/indra/llrender/llrendersphere.cpp b/indra/llrender/llrendersphere.cpp index e22b753923..212963f270 100644 --- a/indra/llrender/llrendersphere.cpp +++ b/indra/llrender/llrendersphere.cpp @@ -68,45 +68,6 @@ void drawSolidSphere(GLdouble radius, GLint slices, GLint stacks)  } -// lat = 0 is Z-axis -// lon = 0, lat = 90 at X-axis -void lat2xyz(LLVector3 * result, F32 lat, F32 lon) -{ -	// Convert a latitude and longitude to x,y,z on a normal sphere and return it in result -	F32 r; -	result->mV[VX] = (F32) (cos(lon * DEG_TO_RAD) * sin(lat * DEG_TO_RAD)); -	result->mV[VY] = (F32) (sin(lon * DEG_TO_RAD) * sin(lat * DEG_TO_RAD)); -	r = (F32) pow(result->mV[VX] * result->mV[VX] + result->mV[VY] * result->mV[VY], 0.5f); -	if (r == 1.0f)  -	{ -		result->mV[VZ] = 0.0f; -	} -	else -	{ -		result->mV[VZ] = (F32) pow(1 - r*r, 0.5f); -		if (lat > 90.01) -		{ -			result->mV[VZ] *= -1.0; -		} -	} -} - -void lat2xyz_rad(LLVector3 * result, F32 lat, F32 lon) -{ -	// Convert a latitude and longitude to x,y,z on a normal sphere and return it in result -	F32 r; -	result->mV[VX] = (F32) (cos(lon) * sin(lat)); -	result->mV[VY] = (F32) (sin(lon) * sin(lat)); -	r = (F32) pow(result->mV[VX] * result->mV[VX] + result->mV[VY] * result->mV[VY], 0.5f); -	if (r == 1.0f)  -		result->mV[VZ] = 0.0f; -	else -	{ -		result->mV[VZ] = (F32) pow(1 - r*r, 0.5f); -		if (lat > F_PI_BY_TWO) result->mV[VZ] *= -1.0; -	} -} -  // A couple thoughts on sphere drawing:  // 1) You need more slices than stacks, but little less than 2:1  // 2) At low LOD, setting stacks to an odd number avoids a "band" around the equator, making things look smoother @@ -181,3 +142,50 @@ void LLRenderSphere::render()  {  	glCallList(mDList[0]);  } + +inline LLVector3 polar_to_cart(F32 latitude, F32 longitude) +{ +	return LLVector3(sin(F_TWO_PI * latitude) * cos(F_TWO_PI * longitude), +					 sin(F_TWO_PI * latitude) * sin(F_TWO_PI * longitude), +					 cos(F_TWO_PI * latitude)); +} + + +void LLRenderSphere::renderGGL() +{ +	S32 const LATITUDE_SLICES = 20; +	S32 const LONGITUDE_SLICES = 30; + +	if (mSpherePoints.empty()) +	{ +		mSpherePoints.resize(LATITUDE_SLICES + 1); +		for (S32 lat_i = 0; lat_i < LATITUDE_SLICES + 1; lat_i++) +		{ +			mSpherePoints[lat_i].resize(LONGITUDE_SLICES + 1); +			for (S32 lon_i = 0; lon_i < LONGITUDE_SLICES + 1; lon_i++) +			{ +				F32 lat = (F32)lat_i / LATITUDE_SLICES; +				F32 lon = (F32)lon_i / LONGITUDE_SLICES; + +				mSpherePoints[lat_i][lon_i] = polar_to_cart(lat, lon); +			} +		} +	} +	 +	gGL.begin(LLRender::TRIANGLES); + +	for (S32 lat_i = 0; lat_i < LATITUDE_SLICES; lat_i++) +	{ +		for (S32 lon_i = 0; lon_i < LONGITUDE_SLICES; lon_i++) +		{ +			gGL.vertex3fv(mSpherePoints[lat_i][lon_i].mV); +			gGL.vertex3fv(mSpherePoints[lat_i][lon_i+1].mV); +			gGL.vertex3fv(mSpherePoints[lat_i+1][lon_i].mV); + +			gGL.vertex3fv(mSpherePoints[lat_i+1][lon_i].mV); +			gGL.vertex3fv(mSpherePoints[lat_i][lon_i+1].mV); +			gGL.vertex3fv(mSpherePoints[lat_i+1][lon_i+1].mV); +		} +	} +	gGL.end(); +} diff --git a/indra/llrender/llrendersphere.h b/indra/llrender/llrendersphere.h index 617ee3e12e..ebc71b6146 100644 --- a/indra/llrender/llrendersphere.h +++ b/indra/llrender/llrendersphere.h @@ -52,6 +52,10 @@ public:  	void cleanupGL();  	void render(F32 pixel_area);		// of a box of size 1.0 at that position  	void render();						// render at highest LOD +	void renderGGL();                   // render using LLRender + +private: +	std::vector< std::vector<LLVector3> > mSpherePoints;  };  extern LLRenderSphere gSphere; diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 6babaf936b..fad98e553f 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -330,6 +330,7 @@ void LLFloater::addDragHandle()  		addChild(mDragHandle);  	}  	layoutDragHandle(); +	applyTitle();  }  void LLFloater::layoutDragHandle() @@ -348,7 +349,6 @@ void LLFloater::layoutDragHandle()  	}  	mDragHandle->setRect(rect);  	updateTitleButtons(); -	applyTitle();  }  void LLFloater::addResizeCtrls() @@ -2519,7 +2519,7 @@ LLFloater *LLFloaterView::getBackmost() const  void LLFloaterView::syncFloaterTabOrder()  { -	// look for a visible modal dialog, starting from first (should be only one) +	// look for a visible modal dialog, starting from first  	LLModalDialog* modal_dialog = NULL;  	for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)  	{ diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 94eade06ad..d4d161f2c9 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -2949,7 +2949,6 @@ BOOL LLScrollListCtrl::operateOnAll(EOperation op)  //virtual   void LLScrollListCtrl::setFocus(BOOL b)  { -	mSearchString.clear();  	// for tabbing into pristine scroll lists (Finder)  	if (!getFirstSelected())  	{ @@ -2994,6 +2993,9 @@ void LLScrollListCtrl::onFocusLost()  	{  		gFocusMgr.setMouseCapture(NULL);  	} + +	mSearchString.clear(); +  	LLUICtrl::onFocusLost();  } diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index ab9cd11769..55dbf50fd7 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -962,18 +962,19 @@ void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent)  {  	if (width != getRect().getWidth() || height != getRect().getHeight())  	{ -		//EXT-4288 -		//to keep consistance scrolling behaviour  -		//when scrolling from top and from bottom... -		bool is_scrolled_to_end = (mScroller!=NULL) && scrolledToEnd(); -		 +		bool scrolled_to_bottom = mScroller ? mScroller->isAtBottom() : false; +  		LLUICtrl::reshape( width, height, called_from_parent ); -	 -		if (is_scrolled_to_end) + +		if (mScroller && scrolled_to_bottom && mTrackEnd)  		{ -			deselect(); -			endOfDoc(); -		}		 +			// keep bottom of text buffer visible +			// do this here as well as in reflow to handle case +			// where shrinking from top, which causes buffer to temporarily  +			// not be scrolled to the bottom, since the scroll index +			// specified the _top_ of the visible document region +			mScroller->goToBottom(); +		}  		// do this first after reshape, because other things depend on  		// up-to-date mVisibleTextRect @@ -1116,6 +1117,34 @@ void LLTextBase::reflow()  	updateSegments(); +	if (mReflowIndex == S32_MAX) +	{ +		return; +	} + +	bool scrolled_to_bottom = mScroller ? mScroller->isAtBottom() : false; + +	LLRect cursor_rect = getLocalRectFromDocIndex(mCursorPos); +	bool follow_selection = getLocalRect().overlaps(cursor_rect); // cursor is (potentially) visible + +	// store in top-left relative coordinates to avoid issues with horizontal scrollbar appearing and disappearing +	cursor_rect.mTop = mVisibleTextRect.mTop - cursor_rect.mTop; +	cursor_rect.mBottom = mVisibleTextRect.mTop - cursor_rect.mBottom; + +	S32 first_line = getFirstVisibleLine(); + +	// if scroll anchor not on first line, update it to first character of first line +	if (!mLineInfoList.empty() +		&&	(mScrollIndex <  mLineInfoList[first_line].mDocIndexStart +			||	mScrollIndex >= mLineInfoList[first_line].mDocIndexEnd)) +	{ +		mScrollIndex = mLineInfoList[first_line].mDocIndexStart; +	} +	LLRect first_char_rect = getLocalRectFromDocIndex(mScrollIndex); +	// store in top-left relative coordinates to avoid issues with horizontal scrollbar appearing and disappearing +	first_char_rect.mTop = mVisibleTextRect.mTop - first_char_rect.mTop; +	first_char_rect.mBottom = mVisibleTextRect.mTop - first_char_rect.mBottom; +  	S32 reflow_count = 0;  	while(mReflowIndex < S32_MAX)  	{ @@ -1129,6 +1158,7 @@ void LLTextBase::reflow()  			lldebugs << "Breaking out of reflow due to possible infinite loop in " << getName() << llendl;  			break;  		} +	  		S32 start_index = mReflowIndex;  		mReflowIndex = S32_MAX; @@ -1136,25 +1166,6 @@ void LLTextBase::reflow()  		// to force inlined widgets with follows set to shrink  		mDocumentView->reshape(mVisibleTextRect.getWidth(), mDocumentView->getRect().getHeight()); -		bool scrolled_to_bottom = mScroller ? mScroller->isAtBottom() : false; - -		LLRect old_cursor_rect = getLocalRectFromDocIndex(mCursorPos); -		bool follow_selection = mVisibleTextRect.overlaps(old_cursor_rect); // cursor is visible -		old_cursor_rect.translate(-mVisibleTextRect.mLeft, -mVisibleTextRect.mBottom); - -		S32 first_line = getFirstVisibleLine(); - -		// if scroll anchor not on first line, update it to first character of first line -		if (!mLineInfoList.empty() -			&&	(mScrollIndex <  mLineInfoList[first_line].mDocIndexStart -				||	mScrollIndex >= mLineInfoList[first_line].mDocIndexEnd)) -		{ -			mScrollIndex = mLineInfoList[first_line].mDocIndexStart; -		} -		LLRect first_char_rect = getLocalRectFromDocIndex(mScrollIndex); -		// subtract off effect of horizontal scrollbar from local position of first char -		first_char_rect.translate(-mVisibleTextRect.mLeft, -mVisibleTextRect.mBottom); -  		S32 cur_top = 0;  		segment_set_t::iterator seg_iter = mSegments.begin(); @@ -1275,32 +1286,42 @@ void LLTextBase::reflow()  			segmentp->updateLayout(*this);  		} +	} -		// apply scroll constraints after reflowing text -		if (!hasMouseCapture() && mScroller) +	// apply scroll constraints after reflowing text +	if (!hasMouseCapture() && mScroller) +	{ +		if (scrolled_to_bottom && mTrackEnd)  		{ -			if (scrolled_to_bottom && mTrackEnd) -			{ -				// keep bottom of text buffer visible -				endOfDoc(); -			} -			else if (hasSelection() && follow_selection) -			{ -				// keep cursor in same vertical position on screen when selecting text -				LLRect new_cursor_rect_doc = getDocRectFromDocIndex(mCursorPos); -				mScroller->scrollToShowRect(new_cursor_rect_doc, old_cursor_rect); -			} -			else -			{ -				// keep first line of text visible -				LLRect new_first_char_rect = getDocRectFromDocIndex(mScrollIndex); -				mScroller->scrollToShowRect(new_first_char_rect, first_char_rect); -			} +			// keep bottom of text buffer visible +			endOfDoc();  		} +		else if (hasSelection() && follow_selection) +		{ +			// keep cursor in same vertical position on screen when selecting text +			LLRect new_cursor_rect_doc = getDocRectFromDocIndex(mCursorPos); +			LLRect old_cursor_rect = cursor_rect; +			old_cursor_rect.mTop = mVisibleTextRect.mTop - cursor_rect.mTop; +			old_cursor_rect.mBottom = mVisibleTextRect.mTop - cursor_rect.mBottom; -		// reset desired x cursor position -		updateCursorXPos(); +			mScroller->scrollToShowRect(new_cursor_rect_doc, old_cursor_rect); +		} +		else +		{ +			// keep first line of text visible +			LLRect new_first_char_rect = getDocRectFromDocIndex(mScrollIndex); + +			// pass in desired rect in the coordinate frame of the document viewport +			LLRect old_first_char_rect = first_char_rect; +			old_first_char_rect.mTop = mVisibleTextRect.mTop - first_char_rect.mTop; +			old_first_char_rect.mBottom = mVisibleTextRect.mTop - first_char_rect.mBottom; + +			mScroller->scrollToShowRect(new_first_char_rect, old_first_char_rect); +		}  	} + +	// reset desired x cursor position +	updateCursorXPos();  }  LLRect LLTextBase::getTextBoundingRect() @@ -1725,13 +1746,11 @@ void LLTextBase::appendAndHighlightTextImpl(const std::string &new_text, S32 hig  	setCursorPos(old_length); -	LLTextParser* highlight = LLTextParser::getInstance(); -	 -	if (mParseHighlights && highlight) +	if (mParseHighlights)  	{  		LLStyle::Params highlight_params(style_params); -		LLSD pieces = highlight->parsePartialLineHighlights(new_text, highlight_params.color(), (LLTextParser::EHighlightPosition)highlight_part); +		LLSD pieces = LLTextParser::instance().parsePartialLineHighlights(new_text, highlight_params.color(), (LLTextParser::EHighlightPosition)highlight_part);  		for (S32 i = 0; i < pieces.size(); i++)  		{  			LLSD color_llsd = pieces[i]["color"]; @@ -2010,11 +2029,18 @@ LLRect LLTextBase::getDocRectFromDocIndex(S32 pos) const  LLRect LLTextBase::getLocalRectFromDocIndex(S32 pos) const  { +	LLRect content_window_rect = mScroller ? mScroller->getContentWindowRect() : getLocalRect(); +	if (mBorderVisible) +	{ +		content_window_rect.stretch(-1); +	} +  	LLRect local_rect; +  	if (mLineInfoList.empty())   	{   		// return default height rect in upper left -		local_rect = mVisibleTextRect; +		local_rect = content_window_rect;  		local_rect.mBottom = local_rect.mTop - (S32)(mDefaultFont->getLineHeight());  		return local_rect;  	} @@ -2025,8 +2051,8 @@ LLRect LLTextBase::getLocalRectFromDocIndex(S32 pos) const  	// compensate for scrolled, inset view of doc  	LLRect scrolled_view_rect = getVisibleDocumentRect();  	local_rect = doc_rect; -	local_rect.translate(mVisibleTextRect.mLeft - scrolled_view_rect.mLeft,  -						mVisibleTextRect.mBottom - scrolled_view_rect.mBottom); +	local_rect.translate(content_window_rect.mLeft - scrolled_view_rect.mLeft,  +						content_window_rect.mBottom - scrolled_view_rect.mBottom);  	return local_rect;  } diff --git a/indra/llui/lltextparser.cpp b/indra/llui/lltextparser.cpp index 76a39e3094..2493afcb5d 100644 --- a/indra/llui/lltextparser.cpp +++ b/indra/llui/lltextparser.cpp @@ -43,29 +43,14 @@  #include "v4color.h"  #include "lldir.h" -// Routines used for parsing text for TextParsers and html - -LLTextParser* LLTextParser::sInstance = NULL; -  //  // Member Functions  // -LLTextParser::~LLTextParser() -{ -	sInstance=NULL; -} +LLTextParser::LLTextParser() +:	mLoaded(false) +{} -// static -LLTextParser* LLTextParser::getInstance() -{ -	if (!sInstance) -	{ -		sInstance = new LLTextParser(); -		sInstance->loadFromDisk(); -	} -	return sInstance; -}  // Moved triggerAlerts() to llfloaterchat.cpp to break llui/llaudio library dependency. @@ -105,6 +90,8 @@ S32 LLTextParser::findPattern(const std::string &text, LLSD highlight)  LLSD LLTextParser::parsePartialLineHighlights(const std::string &text, const LLColor4 &color, EHighlightPosition part, S32 index)  { +	loadKeywords(); +  	//evil recursive string atomizer.  	LLSD ret_llsd, start_llsd, middle_llsd, end_llsd; @@ -195,6 +182,8 @@ LLSD LLTextParser::parsePartialLineHighlights(const std::string &text, const LLC  bool LLTextParser::parseFullLineHighlights(const std::string &text, LLColor4 *color)  { +	loadKeywords(); +  	for (S32 i=0;i<mHighlights.size();i++)  	{  		if ((S32)mHighlights[i]["highlight"]==ALL || (S32)mHighlights[i]["condition"]==MATCHES) @@ -221,14 +210,14 @@ std::string LLTextParser::getFileName()  	return path;    } -LLSD LLTextParser::loadFromDisk() +void LLTextParser::loadKeywords()  { -	std::string filename=getFileName(); -	if (filename.empty()) -	{ -		llwarns << "LLTextParser::loadFromDisk() no valid user directory." << llendl;  +	if (mLoaded) +	{// keywords already loaded +		return;  	} -	else +	std::string filename=getFileName(); +	if (!filename.empty())  	{  		llifstream file;  		file.open(filename.c_str()); @@ -237,9 +226,8 @@ LLSD LLTextParser::loadFromDisk()  			LLSDSerialize::fromXML(mHighlights, file);  		}  		file.close(); +		mLoaded = true;  	} - -	return mHighlights;  }  bool LLTextParser::saveToDisk(LLSD highlights) diff --git a/indra/llui/lltextparser.h b/indra/llui/lltextparser.h index 072ac0f300..3005822f43 100644 --- a/indra/llui/lltextparser.h +++ b/indra/llui/lltextparser.h @@ -35,12 +35,13 @@  #define LL_LLTEXTPARSER_H  #include "llsd.h" +#include "llsingleton.h"  class LLUUID;  class LLVector3d;  class LLColor4; -class LLTextParser +class LLTextParser : public LLSingleton<LLTextParser>  {  public:  	typedef enum e_condition_type { CONTAINS, MATCHES, STARTS_WITH, ENDS_WITH } EConditionType; @@ -48,22 +49,20 @@ public:  	typedef enum e_highlight_position { WHOLE, START, MIDDLE, END } EHighlightPosition;  	typedef enum e_dialog_action { ACTION_NONE, ACTION_CLOSE, ACTION_ADD, ACTION_COPY, ACTION_UPDATE } EDialogAction; -	static LLTextParser* getInstance(); -	LLTextParser(){}; -	~LLTextParser(); +	LLTextParser(); -	S32  findPattern(const std::string &text, LLSD highlight);  	LLSD parsePartialLineHighlights(const std::string &text,const LLColor4 &color, EHighlightPosition part=WHOLE, S32 index=0);  	bool parseFullLineHighlights(const std::string &text, LLColor4 *color); +private: +	S32  findPattern(const std::string &text, LLSD highlight);  	std::string getFileName(); -	LLSD loadFromDisk(); +	void loadKeywords();  	bool saveToDisk(LLSD highlights);  public:  	LLSD	mHighlights; -private: -	static LLTextParser* sInstance; +	bool	mLoaded;  };  #endif diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e86f50ce20..6204c8047a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -632,7 +632,18 @@      <key>BlockAvatarAppearanceMessages</key>          <map>          <key>Comment</key> -            <string>Ignore's appearance messages (for simulating Ruth)</string> +            <string>Ignores appearance messages (for simulating Ruth)</string> +        <key>Persist</key> +            <integer>1</integer> +        <key>Type</key> +            <string>Boolean</string> +        <key>Value</key> +            <integer>0</integer> +        </map> +    <key>BlockSomeAvatarAppearanceVisualParams</key> +        <map> +        <key>Comment</key> +            <string>Drop around 50% of VisualParam occurances in appearance messages (for simulating Ruth)</string>          <key>Persist</key>              <integer>1</integer>          <key>Type</key> diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 5efd997ab7..9564236ad2 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -4782,7 +4782,7 @@       group="1"       name="Saddlebags"       wearable="shape" -     edit_grouo="driven" +     edit_group="driven"       value_min="-.5"       value_max="3">        <param_morph> diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index b4add267fe..de4d787d65 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -26,6 +26,7 @@ list all  RenderAnisotropic			1	0  RenderAvatarCloth			1	1  RenderAvatarLODFactor		1	1.0 +RenderAvatarMaxVisible      1   35  RenderAvatarVP				1	1  RenderCubeMap				1	1  RenderDelayVBUpdate			1	0 diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 4fb529ab39..adda7cec4d 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -26,6 +26,7 @@ list all  RenderAnisotropic			1	0  RenderAvatarCloth			1	1  RenderAvatarLODFactor		1	1.0 +RenderAvatarMaxVisible      1   35  RenderAvatarVP				1	1  RenderCubeMap				1	1  RenderDelayVBUpdate			1	0 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index fbc589d3e7..82886d7e2c 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -26,6 +26,7 @@ list all  RenderAnisotropic				1	0  RenderAvatarCloth				0	0  RenderAvatarLODFactor			1	1.0 +RenderAvatarMaxVisible          1   35  RenderAvatarVP					1	0  RenderCubeMap					1	1  RenderDelayVBUpdate				1	0 diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 75ffb9f329..e6f363028a 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -276,12 +276,14 @@ void LLWearableHoldingPattern::checkMissingWearables()  		if (found_by_type[type] > 0)  			continue;  		if ( -			// Need to recover if at least one wearable of that type -			// was requested but none was found (prevent missing -			// pants) -			(requested_by_type[type] > 0) ||   -			// or if type is a body part and no wearables were found. -			((type == LLWearableType::WT_SHAPE) || (type == LLWearableType::WT_SKIN) || (type == LLWearableType::WT_HAIR) || (type == LLWearableType::WT_EYES))) +			// If at least one wearable of certain types (pants/shirt/skirt) +			// was requested but none was found, create a default asset as a replacement. +			// In all other cases, don't do anything. +			// For critical types (shape/hair/skin/eyes), this will keep the avatar as a cloud  +			// due to logic in LLVOAvatarSelf::getIsCloud(). +			// For non-critical types (tatoo, socks, etc.) the wearable will just be missing. +			(requested_by_type[type] > 0) &&   +			((type == LLWearableType::WT_PANTS) || (type == LLWearableType::WT_SHIRT) || (type == LLWearableType::WT_SKIRT)))  		{  			mTypesToRecover.insert(type);  			mTypesToLink.insert(type); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index deafb20af7..f0b3740086 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1817,7 +1817,7 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,  			}  			else  			{ -				llwarns << "Cannot load " << full_settings_path << " - No settings found." << llendl; +				llinfos << "Cannot load " << full_settings_path << " - No settings found." << llendl;  			}  		}  		else diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index bd14732b4a..0bd03571da 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -846,12 +846,3 @@ void LLChatHistory::draw()  	LLUICtrl::draw();  } - -void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent) -{ -	bool is_scrolled_to_end = mEditor->scrolledToEnd(); -	LLUICtrl::reshape( width, height, called_from_parent ); -	// update scroll -	if (is_scrolled_to_end) -		mEditor->setCursorAndScrollToEnd(); -} diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 950b32861b..fa1f2e04a4 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -122,7 +122,6 @@ class LLChatHistory : public LLUICtrl  		 */  		void appendMessage(const LLChat& chat, const LLSD &args = LLSD(), const LLStyle::Params& input_append_params = LLStyle::Params());  		/*virtual*/ void clear(); -		/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);  	private:  		std::string mLastFromName; diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index dc6847f236..d079da3b36 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -68,7 +68,7 @@ LLColorSwatchCtrl::Params::Params()  LLColorSwatchCtrl::LLColorSwatchCtrl(const Params& p)  :	LLUICtrl(p),  	mValid( TRUE ), -	mColor(p.color), +	mColor(p.color()),  	mCanApplyImmediately(p.can_apply_immediately),  	mAlphaGradientImage(p.alpha_background_image),  	mOnCancelCallback(p.cancel_callback()), diff --git a/indra/newview/llcolorswatch.h b/indra/newview/llcolorswatch.h index 4bb7d837cb..09bb49cfbe 100644 --- a/indra/newview/llcolorswatch.h +++ b/indra/newview/llcolorswatch.h @@ -60,7 +60,7 @@ public:  	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>  	{ -		Optional<LLColor4>				color; +		Optional<LLUIColor>				color;  		Optional<bool>					can_apply_immediately;  		Optional<LLUIImage*>			alpha_background_image;  		Optional<commit_callback_t> 	cancel_callback; diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 546b60f286..2d0859650a 100644 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -634,7 +634,7 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)  	if (!single_avatar && !avatarp->isFullyLoaded() )  	{ -		if (pass==1 && (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) || LLViewerPartSim::getMaxPartCount() <= 0)) +		if (pass==0 && (!gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_PARTICLES) || LLViewerPartSim::getMaxPartCount() <= 0))  		{  			// debug code to draw a sphere in place of avatar  			gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep); @@ -646,8 +646,10 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)  			gGL.translatef((F32)(pos.mV[VX]),	   						   (F32)(pos.mV[VY]),	   							(F32)(pos.mV[VZ]));	  -			 gGL.scalef(0.15f, 0.15f, 0.3f);	  -			 gSphere.render();	  +			 gGL.scalef(0.15f, 0.15f, 0.3f); + +			 gSphere.renderGGL(); +				   			 gGL.popMatrix();  			 gGL.setColorMask(true, false);  		} diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 0eeef0039c..593d5c267e 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -966,7 +966,7 @@ void LLFloaterPreference::cleanupBadSetting()  {  	if (gSavedPerAccountSettings.getString("BusyModeResponse2") == "|TOKEN COPY BusyModeResponse|")  	{ -		llwarns << "cleaning old BusyModeResponse" << llendl; +		llinfos << "cleaning old BusyModeResponse" << llendl;  		//LLTrans::getString("BusyModeResponseDefault") is used here for localization (EXT-5885)  		gSavedPerAccountSettings.setString("BusyModeResponse2", LLTrans::getString("BusyModeResponseDefault"));  	} diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index c8dae024cf..1cb0f4601b 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -215,7 +215,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);  	// change z sort of clickable text to be behind buttons -	sendChildToBack(getChildView("channel_text")); +	//sendChildToBack(getChildView("channel_text"));  	sendChildToBack(getChildView("forgot_password_text"));  	LLLineEditor* edit = getChild<LLLineEditor>("password_edit"); @@ -241,10 +241,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,  	std::string version = llformat("%s (%d)",  								   LLVersionInfo::getShortVersion().c_str(),  								   LLVersionInfo::getBuild()); -	LLTextBox* channel_text = getChild<LLTextBox>("channel_text"); -	channel_text->setTextArg("[CHANNEL]", channel); // though not displayed -	channel_text->setTextArg("[VERSION]", version); -	channel_text->setClickedCallback(onClickVersion, this); +	//LLTextBox* channel_text = getChild<LLTextBox>("channel_text"); +	//channel_text->setTextArg("[CHANNEL]", channel); // though not displayed +	//channel_text->setTextArg("[VERSION]", version); +	//channel_text->setClickedCallback(onClickVersion, this);  	LLTextBox* forgot_password_text = getChild<LLTextBox>("forgot_password_text");  	forgot_password_text->setClickedCallback(onClickForgotPassword, NULL); diff --git a/indra/newview/llsecapi.cpp b/indra/newview/llsecapi.cpp index 9e636f38c0..6389fd292c 100644 --- a/indra/newview/llsecapi.cpp +++ b/indra/newview/llsecapi.cpp @@ -59,7 +59,7 @@ void initializeSecHandler()  	gSecAPIHandler = gHandlerMap[BASIC_SECHANDLER];  	// initialize all SecAPIHandlers -	LLProtectedDataException ex = LLProtectedDataException(""); +	std::string exception_msg;  	std::map<std::string, LLPointer<LLSecAPIHandler> >::const_iterator itr;  	for(itr = gHandlerMap.begin(); itr != gHandlerMap.end(); ++itr)  	{ @@ -70,12 +70,12 @@ void initializeSecHandler()  		}  		catch (LLProtectedDataException e)  		{ -			ex = e; +			exception_msg = e.getMessage();  		}  	} -	if (ex.getMessage().length() > 0 )  // an exception was thrown. +	if (!exception_msg.empty())  // an exception was thrown.  	{ -		throw ex; +		throw LLProtectedDataException(exception_msg.c_str());  	}  } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 6418551517..e51e6363dd 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -736,6 +736,8 @@ bool idle_startup()  			// Make sure the process dialog doesn't hide things  			gViewerWindow->setShowProgress(FALSE); +			initialize_edit_menu(); +  			// Show the login dialog  			login_show();  			// connect dialog is already shown, so fill in the names diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 7290849fca..b13f9e3898 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -87,7 +87,7 @@ LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLTexLayerSet* const owner,  	mNeedsUpdate(TRUE),  	mNeedsUpload(FALSE),  	mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates -	mNeedsLowResUpload(TRUE), +	mDebugNumLowresUploads(0),  	mTexLayerSet(owner)  {  	LLTexLayerSetBuffer::sGLByteCount += getSize(); @@ -141,12 +141,12 @@ void LLTexLayerSetBuffer::requestUpload()  	// If we requested a new upload but haven't even uploaded  	// a low res version of our last upload request, then  	// keep the timer ticking instead of resetting it. -	if (mNeedsUpload && mNeedsLowResUpload) +	if (mNeedsUpload && (mDebugNumLowresUploads == 0))  	{  		mNeedsUploadTimer.reset();  	}  	mNeedsUpload = TRUE; -	mNeedsLowResUpload = TRUE; +	mDebugNumLowresUploads = 0;  	mUploadPending = TRUE;  	mNeedsUploadTimer.unpause();  } @@ -292,7 +292,7 @@ BOOL LLTexLayerSetBuffer::isReadyToUpload() const  		// If we hit our timeout and have textures available at even lower resolution, then upload.  		const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout;  		const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable(); -		if (has_lower_lod && is_upload_textures_timeout && mNeedsLowResUpload) return TRUE;  +		if (has_lower_lod && is_upload_textures_timeout) return TRUE;   	}  	return FALSE;  } @@ -434,12 +434,18 @@ void LLTexLayerSetBuffer::readBackAndUpload()  				if (highest_lod)  				{ +					// Got the final LOD for the baked texture. +					// All done, pause the upload timer so we know how long it took.  					mNeedsUpload = FALSE;  					mNeedsUploadTimer.pause();  				}  				else  				{ -					mNeedsLowResUpload = FALSE; +					// Got a lower level LOD for the baked texture. +					// Restart the upload timer. +					mDebugNumLowresUploads++; +					mNeedsUploadTimer.unpause(); +					mNeedsUploadTimer.reset();  				}  			}  			else @@ -2235,11 +2241,11 @@ const std::string LLTexLayerSetBuffer::dumpTextureInfo() const  	if (!isAgentAvatarValid()) return "";  	const BOOL is_high_res = !mNeedsUpload; -	const BOOL is_low_res = !mNeedsLowResUpload; +	const U32 num_low_res = mDebugNumLowresUploads;  	const U32 upload_time = (U32)mNeedsUploadTimer.getElapsedTimeF32();  	const std::string local_texture_info = gAgentAvatarp->debugDumpLocalTextureDataInfo(mTexLayerSet);  	std::string text = llformat("[ HiRes:%d LoRes:%d Timer:%d ] %s", -								is_high_res, is_low_res, upload_time,  +								is_high_res, num_low_res, upload_time,   								local_texture_info.c_str());  	return text;  } diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h index 8f386b5a19..313c5f24e1 100644 --- a/indra/newview/lltexlayer.h +++ b/indra/newview/lltexlayer.h @@ -360,7 +360,7 @@ private:  	BOOL					mNeedsUpdate; // Whether we need to update our baked textures  	BOOL					mNeedsUpload; // Whether we need to send our baked textures to the server -	BOOL					mNeedsLowResUpload; // Whether we have sent a lowres version of our baked textures to the server +	U32						mDebugNumLowresUploads; // Number of times we've sent a lowres version of our baked textures to the server  	BOOL					mUploadPending; // Whether we have received back the new baked textures  	LLUUID					mUploadID; // Identifies the current upload process (null if none).  Used to avoid overlaps (eg, when the user rapidly makes two changes outside of Face Edit) diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 568cd4cb19..9abfab300c 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -271,7 +271,10 @@ void LLToast::setVisible(BOOL show)  		{  			mTimer->start();  		} -		LLModalDialog::setFrontmost(FALSE); +		if (!getVisible()) +		{ +			LLModalDialog::setFrontmost(FALSE); +		}  	}  	else  	{ diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 69352e6685..a1b909c609 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2403,18 +2403,14 @@ void handle_object_touch()  		msg->sendMessage(object->getRegion()->getHost());  } -bool enable_object_touch() -{ -	LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); -	return obj && obj->flagHandleTouch(); -} -  // One object must have touch sensor  class LLObjectEnableTouch : public view_listener_t  {  	bool handleEvent(const LLSD& userdata)  	{ -		bool new_value = enable_object_touch(); +		LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); +		 +		bool new_value = obj && obj->flagHandleTouch();  		// Update label based on the node touch name if available.  		std::string touch_text; @@ -7705,6 +7701,30 @@ void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y)  	LLMenuGL::showPopup(ctrl, show_navbar_context_menu, x, y);  } +void initialize_edit_menu() +{ +	view_listener_t::addMenu(new LLEditUndo(), "Edit.Undo"); +	view_listener_t::addMenu(new LLEditRedo(), "Edit.Redo"); +	view_listener_t::addMenu(new LLEditCut(), "Edit.Cut"); +	view_listener_t::addMenu(new LLEditCopy(), "Edit.Copy"); +	view_listener_t::addMenu(new LLEditPaste(), "Edit.Paste"); +	view_listener_t::addMenu(new LLEditDelete(), "Edit.Delete"); +	view_listener_t::addMenu(new LLEditSelectAll(), "Edit.SelectAll"); +	view_listener_t::addMenu(new LLEditDeselect(), "Edit.Deselect"); +	view_listener_t::addMenu(new LLEditDuplicate(), "Edit.Duplicate"); +	view_listener_t::addMenu(new LLEditTakeOff(), "Edit.TakeOff"); +	view_listener_t::addMenu(new LLEditEnableUndo(), "Edit.EnableUndo"); +	view_listener_t::addMenu(new LLEditEnableRedo(), "Edit.EnableRedo"); +	view_listener_t::addMenu(new LLEditEnableCut(), "Edit.EnableCut"); +	view_listener_t::addMenu(new LLEditEnableCopy(), "Edit.EnableCopy"); +	view_listener_t::addMenu(new LLEditEnablePaste(), "Edit.EnablePaste"); +	view_listener_t::addMenu(new LLEditEnableDelete(), "Edit.EnableDelete"); +	view_listener_t::addMenu(new LLEditEnableSelectAll(), "Edit.EnableSelectAll"); +	view_listener_t::addMenu(new LLEditEnableDeselect(), "Edit.EnableDeselect"); +	view_listener_t::addMenu(new LLEditEnableDuplicate(), "Edit.EnableDuplicate"); + +} +  void initialize_menus()  {  	// A parameterized event handler used as ctrl-8/9/0 zoom controls below. @@ -7731,7 +7751,6 @@ void initialize_menus()  	// Generic enable and visible  	// Don't prepend MenuName.Foo because these can be used in any menu.  	enable.add("IsGodCustomerService", boost::bind(&is_god_customer_service)); -	enable.add("IsGodCustomerService", boost::bind(&is_god_customer_service));  	view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts"); @@ -7742,27 +7761,6 @@ void initialize_menus()  	// File menu  	init_menu_file(); -	// Edit menu -	view_listener_t::addMenu(new LLEditUndo(), "Edit.Undo"); -	view_listener_t::addMenu(new LLEditRedo(), "Edit.Redo"); -	view_listener_t::addMenu(new LLEditCut(), "Edit.Cut"); -	view_listener_t::addMenu(new LLEditCopy(), "Edit.Copy"); -	view_listener_t::addMenu(new LLEditPaste(), "Edit.Paste"); -	view_listener_t::addMenu(new LLEditDelete(), "Edit.Delete"); -	view_listener_t::addMenu(new LLEditSelectAll(), "Edit.SelectAll"); -	view_listener_t::addMenu(new LLEditDeselect(), "Edit.Deselect"); -	view_listener_t::addMenu(new LLEditDuplicate(), "Edit.Duplicate"); -	view_listener_t::addMenu(new LLEditTakeOff(), "Edit.TakeOff"); - -	view_listener_t::addMenu(new LLEditEnableUndo(), "Edit.EnableUndo"); -	view_listener_t::addMenu(new LLEditEnableRedo(), "Edit.EnableRedo"); -	view_listener_t::addMenu(new LLEditEnableCut(), "Edit.EnableCut"); -	view_listener_t::addMenu(new LLEditEnableCopy(), "Edit.EnableCopy"); -	view_listener_t::addMenu(new LLEditEnablePaste(), "Edit.EnablePaste"); -	view_listener_t::addMenu(new LLEditEnableDelete(), "Edit.EnableDelete"); -	view_listener_t::addMenu(new LLEditEnableSelectAll(), "Edit.EnableSelectAll"); -	view_listener_t::addMenu(new LLEditEnableDeselect(), "Edit.EnableDeselect"); -	view_listener_t::addMenu(new LLEditEnableDuplicate(), "Edit.EnableDuplicate");  	view_listener_t::addMenu(new LLEditEnableTakeOff(), "Edit.EnableTakeOff");  	view_listener_t::addMenu(new LLEditEnableCustomizeAvatar(), "Edit.EnableCustomizeAvatar");  	view_listener_t::addMenu(new LLEnableEditShape(), "Edit.EnableEditShape"); @@ -8048,7 +8046,6 @@ void initialize_menus()  	view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend");  	enable.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2)); -	enable.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2));  	// Object pie menu  	view_listener_t::addMenu(new LLObjectBuild(), "Object.Build"); @@ -8070,7 +8067,6 @@ void initialize_menus()  	commit.add("Object.Open", boost::bind(&handle_object_open));  	commit.add("Object.Take", boost::bind(&handle_take));  	enable.add("Object.EnableOpen", boost::bind(&enable_object_open)); -	enable.add("Object.EnableTouch", boost::bind(&enable_object_touch));  	view_listener_t::addMenu(new LLObjectEnableTouch(), "Object.EnableTouch");  	view_listener_t::addMenu(new LLObjectEnableSitOrStand(), "Object.EnableSitOrStand");  	enable.add("Object.EnableDelete", boost::bind(&enable_object_delete)); diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index d72ea00077..ad88fcea9a 100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -44,6 +44,7 @@ class LLParcelSelection;  class LLObjectSelection;  class LLSelectNode; +void initialize_edit_menu();  void init_menus();  void cleanup_menus(); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 7a232afba6..bb6afcc84d 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -68,6 +68,7 @@  #include "llmoveview.h"  #include "llnotificationsutil.h"  #include "llquantize.h" +#include "llrand.h"  #include "llregionhandle.h"  #include "llresmgr.h"  #include "llselectmgr.h" @@ -6686,6 +6687,41 @@ void LLVOAvatar::onFirstTEMessageReceived()  }  //----------------------------------------------------------------------------- +// bool visualParamWeightsAreDefault() +//----------------------------------------------------------------------------- +bool LLVOAvatar::visualParamWeightsAreDefault() +{ +	bool rtn = true; + +	bool is_wearing_skirt = isWearingWearableType(LLWearableType::WT_SKIRT); +	for (LLVisualParam *param = getFirstVisualParam();  +	     param; +	     param = getNextVisualParam()) +	{ +		if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) +		{ +			LLViewerVisualParam* vparam = dynamic_cast<LLViewerVisualParam*>(param); +			llassert(vparam); +			bool is_skirt_param = vparam && +				LLWearableType::WT_SKIRT == vparam->getWearableType(); +			if (param->getWeight() != param->getDefaultWeight() && +			    // we have to not care whether skirt weights are default, if we're not actually wearing a skirt +			    (is_wearing_skirt || !is_skirt_param)) +			{ +				//llinfos << "param '" << param->getName() << "'=" << param->getWeight() << " which differs from default=" << param->getDefaultWeight() << llendl; +				rtn = false; +				break; +			} +		} +	} + +	//llinfos << "params are default ? " << int(rtn) << llendl; + +	return rtn; +} + + +//-----------------------------------------------------------------------------  // processAvatarAppearance()  //-----------------------------------------------------------------------------  void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys ) @@ -6753,16 +6789,17 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  	{  		releaseComponentTextures();  	} -	 -	 +		  	// parse visual params  	S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_VisualParam); -	if( num_blocks > 1 ) +	bool drop_visual_params_debug = gSavedSettings.getBOOL("BlockSomeAvatarAppearanceVisualParams") && (ll_rand(2) == 0); // pretend that ~12% of AvatarAppearance messages arrived without a VisualParam block, for testing +	if( num_blocks > 1 && !drop_visual_params_debug)  	{  		BOOL params_changed = FALSE;  		BOOL interp_params = FALSE;  		LLVisualParam* param = getFirstVisualParam(); +		llassert(param); // if this ever fires, we should do the same as when num_blocks<=1  		if (!param)  		{  			llwarns << "No visual params!" << llendl; @@ -6778,8 +6815,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  				if( !param )  				{ -					llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; -					return; +					// more visual params supplied than expected - just process what we know about +					break;  				}  				U8 value; @@ -6804,14 +6841,10 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  			}  		} -		while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) ) +		const S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); +		if (num_blocks != expected_tweakable_count)  		{ -			param = getNextVisualParam(); -		} -		if( param ) -		{ -			llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl; -			return; +			llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << ").  Processing what we can.  object: " << getID() << llendl;  		}  		if (params_changed) @@ -6828,16 +6861,37 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )  				updateSexDependentLayerSets( FALSE );  			}	  		} + +		llassert( getSex() == ((getVisualParamWeight( "male" ) > 0.5f) ? SEX_MALE : SEX_FEMALE) );  	}  	else  	{ -		llwarns << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl; +		// AvatarAppearance message arrived without visual params +		if (drop_visual_params_debug) +		{ +			llinfos << "Debug-faked lack of parameters on AvatarAppearance for object: "  << getID() << llendl; +		} +		else +		{ +			llinfos << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl; +		} + +		// this isn't really a problem if we already have a non-default shape +		if (visualParamWeightsAreDefault()) +		{ +			// re-request appearance, hoping that it comes back with a shape next time +			llinfos << "Re-requesting AvatarAppearance for object: "  << getID() << llendl; +			LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID()); +		} +		else +		{ +			llinfos << "That's okay, we already have a non-default shape for object: "  << getID() << llendl; +			// we don't really care. +		}  	}  	setCompositeUpdatesEnabled( TRUE ); -	llassert( getSex() == ((getVisualParamWeight( "male" ) > 0.5f) ? SEX_MALE : SEX_FEMALE) ); -  	// If all of the avatars are completely baked, release the global image caches to conserve memory.  	LLVOAvatar::cullAvatarsByPixelArea(); diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index 3c940e03c0..b30cce09f6 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -249,6 +249,7 @@ public:  	//--------------------------------------------------------------------  public:  	BOOL			isFullyLoaded() const; +	bool visualParamWeightsAreDefault();  protected:  	virtual BOOL	getIsCloud();  	BOOL			updateIsFullyLoaded(); diff --git a/indra/newview/skins/default/textures/locked_image.j2c b/indra/newview/skins/default/textures/locked_image.j2cBinary files differ new file mode 100644 index 0000000000..9e8998d675 --- /dev/null +++ b/indra/newview/skins/default/textures/locked_image.j2c diff --git a/indra/newview/skins/default/textures/map_infohub.tga b/indra/newview/skins/default/textures/map_infohub.tgaBinary files differ new file mode 100644 index 0000000000..545b8e532c --- /dev/null +++ b/indra/newview/skins/default/textures/map_infohub.tga diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 4b781dee8c..cee5f5cbca 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -67,7 +67,7 @@ with the same filename but different name    <texture name="Avaline_Icon" file_name="icons/avaline_default_icon.jpg" preload="true" />    <texture name="BackArrow_Off" file_name="icons/BackArrow_Off.png" preload="false" /> -   +    <texture name="BackButton_Off" file_name="icons/back_arrow_off.png" preload="false" />    <texture name="BackButton_Over" file_name="icons/back_arrow_over.png" preload="false" />    <texture name="BackButton_Press" file_name="icons/back_arrow_press.png" preload="false" /> @@ -148,8 +148,6 @@ with the same filename but different name    <texture name="Generic_Person" file_name="icons/Generic_Person.png" preload="false" />    <texture name="Generic_Person_Large" file_name="icons/Generic_Person_Large.png" preload="false" /> -  <texture name="Health" file_name="icons/Health.png" preload="false" /> -    <texture name="Help_Press" file_name="navbar/Help_Press.png" preload="false" />    <texture name="Hierarchy_View_Disabled" file_name="icons/Hierarchy_View_Disabled.png" preload="false" /> @@ -242,7 +240,6 @@ with the same filename but different name    <texture name="Inv_Gesture_Link" file_name="icons/Inv_Gesture_Link.png" preload="false" />    <texture name="Inv_Gloves_Link" file_name="icons/Inv_Gloves_Link.png" preload="false" />    <texture name="Inv_Hair_Link" file_name="icons/Inv_Hair_Link.png" preload="false" /> -  <texture name="Inv_LinkItem_Link" file_name="icons/Inv_LinkItem_Link.png" preload="false" />    <texture name="Inv_LinkFolder_Link" file_name="icons/Inv_LinkFolder_Link.png" preload="false" />    <texture name="Inv_Jacket_Link" file_name="icons/Inv_Jacket_Link.png" preload="false" />    <texture name="Inv_LookFolderOpen_Link" file_name="icons/Inv_LookFolderOpen_Link.png" preload="false" /> @@ -635,7 +632,7 @@ with the same filename but different name    <texture name="icon_avatar_online.tga" />    <texture name="icon_day_cycle.tga" />    <texture name="icon_diurnal.tga" /> -  <texture name="icon_for_sale.tga" /> +  <texture name="icon_for_sale.tga" file_name="icons/Icon_For_Sale.png" />    <texture name="icon_top_pick.tga" />    <texture name="lag_status_critical.tga" /> diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml index 898d291f1c..4dec9a9ba7 100644 --- a/indra/newview/skins/default/xui/da/floater_world_map.xml +++ b/indra/newview/skins/default/xui/da/floater_world_map.xml @@ -35,7 +35,7 @@  		<text name="pg_label">  			Generelt  		</text> -		<check_box initial_value="sandt" name="event_mature_chk"/> +		<check_box name="event_mature_chk"/>  		<text name="mature_label">  			Moderat  		</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index 8202c78947..38bc9c0a2a 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml @@ -37,10 +37,10 @@  		<radio_item label="Benyt min browser(IE, Firefox, Safari)" name="external" tool_tip="Brug systemets standard web browser til hjælp, web links, m.v. Ikke anbefalet hvis du kører i fuld-skærm." value="1"/>  		<radio_item label="Benyt den indbyggede browser" name="internal" tool_tip="Brug den indbyggede web browser til hjælp, web links m.v. Denne browser åbner et nyt vindue i [APP_NAME]." value=""/>  	</radio_group> -	<check_box initial_value="sand" label="Aktivér plugins" name="browser_plugins_enabled"/> -	<check_box initial_value="sand" label="Acceptér cookies" name="cookies_enabled"/> -	<check_box initial_value="sand" label="Aktivér Javascript" name="browser_javascript_enabled"/> -	<check_box initial_value="false" label="Aktivér web proxy" name="web_proxy_enabled"/> +	<check_box label="Aktivér plugins" name="browser_plugins_enabled"/> +	<check_box label="Acceptér cookies" name="cookies_enabled"/> +	<check_box label="Aktivér Javascript" name="browser_javascript_enabled"/> +	<check_box label="Aktivér web proxy" name="web_proxy_enabled"/>  	<text name="Proxy location">  		Proxy placering:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index 856f978ebd..a1b47c3c1f 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml @@ -11,8 +11,8 @@  	<check_box label="Aktiveret" name="enable_media"/>  	<slider label="Stemme chat" name="Voice Volume"/>  	<check_box label="Aktiveret" name="enable_voice_check"/> -	<check_box label="Tillad media at afspilles automatisk" name="media_auto_play_btn" tool_tip="Vælg dette for at media afspille automatisk hvis det ønsker det" value="sandt"/> -	<check_box label="Afspil media vedhæftet andre avatarer" name="media_show_on_others_btn" tool_tip="Deaktiver dette for at skjule vedhæftet media for avatarer i nærheden" value="sandt"/> +	<check_box label="Tillad media at afspilles automatisk" name="media_auto_play_btn" tool_tip="Vælg dette for at media afspille automatisk hvis det ønsker det" /> +	<check_box label="Afspil media vedhæftet andre avatarer" name="media_show_on_others_btn" tool_tip="Deaktiver dette for at skjule vedhæftet media for avatarer i nærheden" />  	<text name="voice_chat_settings">  		Stemme chat opsætning  	</text> diff --git a/indra/newview/skins/default/xui/de/floater_world_map.xml b/indra/newview/skins/default/xui/de/floater_world_map.xml index a1f41f53ad..fb3a4ba9b5 100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml @@ -39,7 +39,7 @@  		<text name="pg_label">  			Generell  		</text> -		<check_box initial_value="wahr" label="Mature" name="event_mature_chk"/> +		<check_box label="Mature" name="event_mature_chk"/>  		<text name="mature_label">  			Moderat  		</text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 96a86ed85d..44b2bd1f60 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -11,8 +11,8 @@  	<check_box label="Aktiviert" name="enable_media"/>  	<slider label="Voice-Chat" name="Voice Volume"/>  	<check_box label="Aktiviert" name="enable_voice_check"/> -	<check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben." value="wahr"/> -	<check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden." value="wahr"/> +	<check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben."/> +	<check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden."/>  	<text name="voice_chat_settings">  		Voice-Chat-Einstellungen  	</text> diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index b2e4a7ad95..d8410a26dd 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -64,8 +64,7 @@                          left="0"                          mouse_opaque="false"                          name="world_stack" -                        orientation="vertical" -                        tab_stop="false"> +                        orientation="vertical">              <panel auto_resize="true"                     follows="all"                     height="500" @@ -156,13 +155,6 @@          top="0"          width="1024"          height="768"/> -  <notify_box_view top="0" -                   follows="all" -                   height="768" -                   mouse_opaque="false" -                   name="notify_container" -                   tab_group="-2" -                   width="1024"/>    <panel top="0"          follows="all"          mouse_opaque="false" diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index a86762f53d..185e458a85 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -85,7 +85,6 @@ top="20"  </text>  <line_editor  follows="left|bottom" -handle_edit_keys_directly="true"    height="22"    max_length="16"  name="password_edit" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 40a644657a..31d8ea27d9 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -98,7 +98,7 @@ Automatic position for:       control_name="SidebarCameraMovement"       follows="left|top"       height="16" -     initial_value="1" +     initial_value="true"       label="Sidebar"       layout="topleft"       name="appearance_sidebar_positioning" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 9eaabbe77b..1c68d59993 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -352,7 +352,6 @@        text_readonly_color="LabelDisabledColor"        bg_writeable_color="LtGray"        use_ellipses="false" -      hover="false"       commit_on_focus_lost = "true"       follows="left|top|right"       height="60" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 9d7079a495..ed6484302f 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -121,7 +121,7 @@  	<!-- ButtonToolTips, llfloater.cpp -->  	<string name="BUTTON_CLOSE_DARWIN">Close (⌘W)</string>  	<string name="BUTTON_CLOSE_WIN">Close (Ctrl+W)</string> -	<string name="BUTTON_CLOSE_CHROME">Close</string>> +	<string name="BUTTON_CLOSE_CHROME">Close</string>  	<string name="BUTTON_RESTORE">Restore</string>  	<string name="BUTTON_MINIMIZE">Minimize</string>  	<string name="BUTTON_TEAR_OFF">Tear Off</string> @@ -3085,10 +3085,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].    </string>    <string name="unread_chat_single">      [SOURCES] has said something new -  </string>" +  </string>    <string name="unread_chat_multiple">      [SOURCES] have said something new -  </string>" +  </string>  	<string name="session_initialization_timed_out_error">  		The session initialization is timed out  	</string> diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml index 998ec5b170..3006df22b8 100644 --- a/indra/newview/skins/default/xui/en/widgets/text.xml +++ b/indra/newview/skins/default/xui/en/widgets/text.xml @@ -6,7 +6,6 @@        font_shadow="none"         tab_stop="false"         halign="left"  -      hover_color="LabelSelectedColor"         h_pad="0"         allow_scroll="false"        text_readonly_color="LabelDisabledColor" @@ -14,7 +13,6 @@        use_ellipses="false"        bg_visible="false"         border_visible="false"  -      hover="false"         sound_flags="0"        text_color="LabelTextColor"        v_pad="0" diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml index c3a13980de..deda5b86c8 100644 --- a/indra/newview/skins/default/xui/es/floater_world_map.xml +++ b/indra/newview/skins/default/xui/es/floater_world_map.xml @@ -35,7 +35,7 @@  		<text name="pg_label">  			General  		</text> -		<check_box initial_value="verdadero" name="event_mature_chk"/> +		<check_box name="event_mature_chk"/>  		<text name="mature_label">  			Moderado  		</text> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml index c3a23c74c4..6e6d0be81f 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml @@ -13,7 +13,7 @@  	</text>  	<check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara al entrar en o salir del modo de edición"/>  	<check_box label="Apariencia" name="appearance_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara mientras se está editando"/> -	<check_box initial_value="1" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/> +	<check_box label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/>  	<check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/>  	<check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/>  	<check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml index fe9736f758..88f5ba42b5 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml @@ -37,10 +37,10 @@  		<radio_item label="Usar mi navegador (IE, Firefox, Safari)" name="external" tool_tip="Usa tu navegador por defecto para ayuda, enlaces web, etc. No es aconsejable si estás a pantalla completa." value="1"/>  		<radio_item label="Usar el navegador incorporado" name="internal" tool_tip="Usa el navegador incorporado para ayuda, enlaces web, etc. Este navegador se abre en una nueva ventana dentro de [APP_NAME]." value=""/>  	</radio_group> -	<check_box initial_value="verdadero" label="Activar plugins" name="browser_plugins_enabled"/> -	<check_box initial_value="verdadero" label="Aceptar las 'cookies'" name="cookies_enabled"/> -	<check_box initial_value="verdadero" label="Activar Javascript" name="browser_javascript_enabled"/> -	<check_box initial_value="false" label="Activar web proxy" name="web_proxy_enabled"/> +	<check_box label="Activar plugins" name="browser_plugins_enabled"/> +	<check_box label="Aceptar las 'cookies'" name="cookies_enabled"/> +	<check_box label="Activar Javascript" name="browser_javascript_enabled"/> +	<check_box label="Activar web proxy" name="web_proxy_enabled"/>  	<text name="Proxy location">  		Localización del proxy:  	</text> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index 1e8b0c736c..2d3c76d215 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="Sonidos" name="Preference Media panel">  	<slider label="Volumen general" name="System Volume"/> -	<check_box initial_value="true" label="Silenciar cuando minimice" name="mute_when_minimized"/> +	<check_box label="Silenciar cuando minimice" name="mute_when_minimized"/>  	<slider label="Botones" name="UI Volume"/>  	<slider label="Ambiental" name="Wind Volume"/>  	<slider label="Efectos de sonido" name="SFX Volume"/> @@ -11,8 +11,8 @@  	<check_box label="Activada" name="enable_media"/>  	<slider label="Chat de voz" name="Voice Volume"/>  	<check_box label="Activado" name="enable_voice_check"/> -	<check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="Sí"/> -	<check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos" value="Sí"/> +	<check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media"/> +	<check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos"/>  	<text name="voice_chat_settings">  		Configuración del chat de voz  	</text> diff --git a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml index afd9001df0..5e7442b877 100644 --- a/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_bodyparts_list_button_bar.xml @@ -1,5 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="clothing_list_button_bar_panel"> -	<button label="Permuter" name="switch_btn"/> +	<button label="Changer" name="switch_btn"/>  	<button label="Acheter >" name="bodyparts_shop_btn"/>  </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml index 24cb92dde7..0b58a4e40b 100644 --- a/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_clothing_list_button_bar.xml @@ -1,5 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="clothing_list_button_bar_panel"> -	<button label="Ajouter +" name="add_btn"/> +	<button label="Ajout +" name="add_btn"/>  	<button label="Acheter >" name="clothing_shop_btn"/>  </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml index 9bae9878e2..6b8e68bd98 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml @@ -13,7 +13,7 @@  	</text>  	<check_box label="Construire/Modifier" name="edit_camera_movement" tool_tip="Utilisez le positionnement automatique de la caméra quand vous accédez au mode de modification et quand vous le quittez"/>  	<check_box label="Apparence" name="appearance_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra quand je suis en mode Édition"/> -	<check_box initial_value="1" label="Panneau latéral" name="appearance_sidebar_positioning" tool_tip="Positionnement auto de la caméra pour le panneau latéral"/> +	<check_box label="Panneau latéral" name="appearance_sidebar_positioning" tool_tip="Positionnement auto de la caméra pour le panneau latéral"/>  	<check_box label="Afficher en vue subjective" name="first_person_avatar_visible"/>  	<check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>  	<check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index 4c055a2b8d..c9676c898b 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -11,8 +11,8 @@  	<check_box label="Activé" name="enable_media"/>  	<slider label="Chat vocal" name="Voice Volume"/>  	<check_box label="Activé" name="enable_voice_check"/> -	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="vrai"/> -	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="vrai"/> +	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média"/> +	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous"/>  	<text name="voice_chat_settings">  		Paramètres du chat vocal  	</text> diff --git a/indra/newview/skins/default/xui/fr/panel_region_estate.xml b/indra/newview/skins/default/xui/fr/panel_region_estate.xml index 2c12547d61..fb650ff646 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml @@ -73,6 +73,6 @@ domaine.  	<button label="?" name="ban_resident_help"/>  	<button label="Ajouter..." name="add_banned_avatar_btn"/>  	<button label="Supprimer..." name="remove_banned_avatar_btn"/> -	<button label="Envoyer un message au domaine..." name="message_estate_btn"/> -	<button label="Éjecter un résident du domaine..." name="kick_user_from_estate_btn"/> +	<button label="Message au domaine..." name="message_estate_btn"/> +	<button label="Éjecter du domaine..." name="kick_user_from_estate_btn"/>  </panel> diff --git a/indra/newview/skins/default/xui/it/floater_world_map.xml b/indra/newview/skins/default/xui/it/floater_world_map.xml index 31d7a8df9e..b07daac6fb 100644 --- a/indra/newview/skins/default/xui/it/floater_world_map.xml +++ b/indra/newview/skins/default/xui/it/floater_world_map.xml @@ -35,7 +35,7 @@  		<text name="pg_label">  			Generale  		</text> -		<check_box initial_value="vero" name="event_mature_chk"/> +		<check_box name="event_mature_chk"/>  		<text name="mature_label">  			Moderato  		</text> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml index cedf93beed..29618485c2 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml @@ -37,10 +37,10 @@  		<radio_item label="Usa il mio browser (IE, Firefox, Safari)" name="external" tool_tip="Utilizza il browser Web predefinito di sistema per l'aiuto, per i link Web e così via. Sconsigliato durante l'esecuzione a tutto schermo." value="1"/>  		<radio_item label="Utilizza il browser Web integrato" name="internal" tool_tip="Utilizza il browser Web integrato per l'aiuto, per i link Web e così via. Questo browser si apre in una nuova finestra in [APP_NAME]." value=""/>  	</radio_group> -	<check_box initial_value="vero" label="Abilita plugin" name="browser_plugins_enabled"/> -	<check_box initial_value="vero" label="Accetta cookie" name="cookies_enabled"/> -	<check_box initial_value="vero" label="Abilita Javascript" name="browser_javascript_enabled"/> -	<check_box initial_value="false" label="Abilita proxy Web" name="web_proxy_enabled"/> +	<check_box label="Abilita plugin" name="browser_plugins_enabled"/> +	<check_box label="Accetta cookie" name="cookies_enabled"/> +	<check_box label="Abilita Javascript" name="browser_javascript_enabled"/> +	<check_box label="Abilita proxy Web" name="web_proxy_enabled"/>  	<text name="Proxy location">  		Ubicazione proxy:  	</text> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml index 6936f24a8a..9f8a13fedc 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml @@ -11,8 +11,8 @@  	<check_box label="Abilitato" name="enable_media"/>  	<slider label="Chat vocale" name="Voice Volume"/>  	<check_box label="Abilitato" name="enable_voice_check"/> -	<check_box label="Consenti riproduzione multimediale automatica" name="media_auto_play_btn" tool_tip="Seleziona qui per consentire la riproduzione multimediale automatica" value="vero"/> -	<check_box label="Riproduci media in uso da altri avatar" name="media_show_on_others_btn" tool_tip="Deseleziona qui per nascondere i media in uso dagli altri avatar nei dintorni" value="vero"/> +	<check_box label="Consenti riproduzione multimediale automatica" name="media_auto_play_btn" tool_tip="Seleziona qui per consentire la riproduzione multimediale automatica"/> +	<check_box label="Riproduci media in uso da altri avatar" name="media_show_on_others_btn" tool_tip="Deseleziona qui per nascondere i media in uso dagli altri avatar nei dintorni"/>  	<text name="voice_chat_settings">  		Impostazioni Chat vocale  	</text> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index 5d162eb80f..1ac7677b07 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -639,7 +639,7 @@ L$ が不足しているのでこのグループに参加することができ  		次のファイルのエンコードができません: [FILE]  	</notification>  	<notification name="CorruptedProtectedDataStore"> -		あなたの保護されたデータを読みとることが出来ないためリセットされます。 +		保護されているデータを読みとることが出来ないためリセットされます。     ネットワーク設定を変更すると起こることがあります。  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml index 94ee5c6ff4..732a5df75f 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml @@ -13,7 +13,7 @@  	</text>  	<check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/>  	<check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/> -	<check_box initial_value="1" label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーの切り替え時に自動カメラポジションを使います"/> +	<check_box label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーの切り替え時に自動カメラポジションを使います"/>  	<check_box label="一人称視点で表示する" name="first_person_avatar_visible"/>  	<check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>  	<check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/> diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml index 95010e0b91..05287ad42a 100644 --- a/indra/newview/skins/default/xui/pl/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml @@ -35,7 +35,7 @@  		<text name="pg_label">  			Ogólne  		</text> -		<check_box initial_value="prawda" name="event_mature_chk"/> +		<check_box name="event_mature_chk"/>  		<text name="mature_label">  			Moderuj  		</text> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml index f74f4f2333..98fdffeb50 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml @@ -38,10 +38,10 @@  		<radio_item label="Użyj zewnętrznej przeglądarki (IE, Firefox, Safari)" name="external" tool_tip="Używaj zewnętrznej przeglądarki. Nie jest to rekomendowane w trybie pełnoekranowym." value="1"/>  		<radio_item label="Używaj wbudowanej przeglądarki." name="internal" tool_tip="Używaj wbudowanej przeglądarki. Ta przeglądarka otworzy nowe okno w [APP_NAME]." value=""/>  	</radio_group> -	<check_box initial_value="prawda" label="Zezwalaj na wtyczki" name="browser_plugins_enabled"/> -	<check_box initial_value="prawda" label="Akceptuj ciasteczka z Internetu" name="cookies_enabled"/> -	<check_box initial_value="prawda" label="Zezwalaj na Javascript" name="browser_javascript_enabled"/> -	<check_box initial_value="false" label="Używaj Serwera Proxy" name="web_proxy_enabled"/> +	<check_box label="Zezwalaj na wtyczki" name="browser_plugins_enabled"/> +	<check_box label="Akceptuj ciasteczka z Internetu" name="cookies_enabled"/> +	<check_box label="Zezwalaj na Javascript" name="browser_javascript_enabled"/> +	<check_box label="Używaj Serwera Proxy" name="web_proxy_enabled"/>  	<text name="Proxy location">  		Lokalizacja Proxy:  	</text> diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml index 04372208d6..6ab5be77d8 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel label="Dźwięki" name="Preference Media panel">  	<slider label="Główny" name="System Volume"/> -	<check_box initial_value="true" label="Wycisz podczas minimalizacji" name="mute_when_minimized"/> +	<check_box label="Wycisz podczas minimalizacji" name="mute_when_minimized"/>  	<slider label="Interfejs" name="UI Volume"/>  	<slider label="Otoczenie" name="Wind Volume"/>  	<slider label="Efekty dźwiękowe" name="SFX Volume"/> @@ -11,8 +11,8 @@  	<check_box label="Odtwarzaj media" name="enable_media"/>  	<slider label="Komunikacja Głosowa" name="Voice Volume"/>  	<check_box label="Pozwól na rozmowy głosowe" name="enable_voice_check"/> -	<check_box label="Automatycznie odtwarzaj media" name="media_auto_play_btn" tool_tip="Zaznacz tę funkcję by uruchomić automatyczne uruchamianie mediów" value="prawda"/> -	<check_box label="Uruchom media załączone do innych awatarów" name="media_show_on_others_btn" tool_tip="Odznacz tę funkcję by ukryć media załączone to awatarów w publiżu" value="prawda"/> +	<check_box label="Automatycznie odtwarzaj media" name="media_auto_play_btn" tool_tip="Zaznacz tę funkcję by uruchomić automatyczne uruchamianie mediów"/> +	<check_box label="Uruchom media załączone do innych awatarów" name="media_show_on_others_btn" tool_tip="Odznacz tę funkcję by ukryć media załączone to awatarów w publiżu"/>  	<text name="voice_chat_settings">  		Ustawienia Komunikacji Głosowej  	</text> diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml index efd90dfaa4..65e48b4bfd 100644 --- a/indra/newview/skins/default/xui/pt/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml @@ -39,7 +39,7 @@  		<text name="pg_label">  			Público geral  		</text> -		<check_box initial_value="verdadeiro" label="Mature" name="event_mature_chk"/> +		<check_box label="Mature" name="event_mature_chk"/>  		<text name="mature_label">  			Moderado  		</text> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml index f03063d05b..5266f646b7 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml @@ -37,9 +37,9 @@  		<radio_item label="Usar meu navegador (IE, Firefox, Safari)" name="external" tool_tip="Use o navegador incluso para consultar a ajuda, abrir links da web, etc. Uso em tela inteira não recomendado." value="1"/>  		<radio_item label="Usar navegador incluso" name="internal" tool_tip="Use este navegador para consultar a ajuda, abrir links da web, etc. As janelas abrem dentro do [APP_NAME]." value=""/>  	</radio_group> -	<check_box initial_value="verdadeiro" label="Habilitar plugins" name="browser_plugins_enabled"/> -	<check_box initial_value="verdadeiro" label="Aceitar cookies" name="cookies_enabled"/> -	<check_box initial_value="verdadeiro" label="Habilitar Javascript" name="browser_javascript_enabled"/> +	<check_box initial_value="true" label="Habilitar plugins" name="browser_plugins_enabled"/> +	<check_box initial_value="true" label="Aceitar cookies" name="cookies_enabled"/> +	<check_box initial_value="true" label="Habilitar Javascript" name="browser_javascript_enabled"/>  	<check_box initial_value="false" label="Ativar web proxy" name="web_proxy_enabled"/>  	<text name="Proxy location">  		Localização do proxy: diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml index 5dbd3d4904..43c970841a 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml @@ -11,8 +11,8 @@  	<check_box label="Ativado" name="enable_media"/>  	<slider label="Bate-papo de voz" name="Voice Volume"/>  	<check_box label="Ativado" name="enable_voice_check"/> -	<check_box label="Autorizar auto-play de mídias" name="media_auto_play_btn" tool_tip="Marque esta opção para auto-executar mídias, se elas quiserem" value="verdadeiro"/> -	<check_box label="Tocar mídia anexada em outros avatares" name="media_show_on_others_btn" tool_tip="Desmarque esta opção para ocultar mídias anexadas em avatares por perto" value="verdadeiro"/> +	<check_box label="Autorizar auto-play de mídias" name="media_auto_play_btn" tool_tip="Marque esta opção para auto-executar mídias, se elas quiserem"/> +	<check_box label="Tocar mídia anexada em outros avatares" name="media_show_on_others_btn" tool_tip="Desmarque esta opção para ocultar mídias anexadas em avatares por perto"/>  	<text name="voice_chat_settings">  		Configuração de bate-papo de voz  	</text> | 
