diff options
44 files changed, 1589 insertions, 322 deletions
| diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 4cf8d76827..1d36a16ea7 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -340,11 +340,14 @@ void LLTextBase::drawSelectionBackground()  					S32 segment_line_start = segmentp->getStart() + segment_offset;  					S32 segment_line_end = llmin(segmentp->getEnd(), line_iter->mDocIndexEnd); +					S32 segment_width, segment_height; +  					// if selection after beginning of segment  					if(selection_left >= segment_line_start)  					{  						S32 num_chars = llmin(selection_left, segment_line_end) - segment_line_start; -						selection_rect.mLeft += segmentp->getWidth(segment_offset, num_chars); +						segmentp->getDimensions(segment_offset, num_chars, segment_width, segment_height); +						selection_rect.mLeft += segment_width;  					}  					// if selection spans end of current segment... @@ -352,13 +355,16 @@ void LLTextBase::drawSelectionBackground()  					{  						// extend selection slightly beyond end of line  						// to indicate selection of newline character (use "n" character to determine width) -						selection_rect.mRight += segmentp->getWidth(segment_offset, segment_line_end - segment_line_start); +						S32 num_chars = segment_line_end - segment_line_start; +						segmentp->getDimensions(segment_offset, num_chars, segment_width, segment_height); +						selection_rect.mRight += segment_width;  					}  					// else if selection ends on current segment...  					else  					{  						S32 num_chars = selection_right - segment_line_start; -						selection_rect.mRight += segmentp->getWidth(segment_offset, num_chars); +						segmentp->getDimensions(segment_offset, num_chars, segment_width, segment_height); +						selection_rect.mRight += segment_width;  						break;  					} @@ -424,7 +430,9 @@ void LLTextBase::drawCursor()  			if (LL_KIM_OVERWRITE == gKeyboard->getInsertMode() && !hasSelection())  			{ -				S32 width = llmax(CURSOR_THICKNESS, segmentp->getWidth(mCursorPos - segmentp->getStart(), 1)); +				S32 segment_width, segment_height; +				segmentp->getDimensions(mCursorPos - segmentp->getStart(), 1, segment_width, segment_height); +				S32 width = llmax(CURSOR_THICKNESS, segment_width);  				cursor_rect.mRight = cursor_rect.mLeft + width;  			}  			else @@ -1087,24 +1095,18 @@ void LLTextBase::reflow(S32 start_index)  			LLTextSegmentPtr segment = *seg_iter;  			// track maximum height of any segment on this line -			line_height = llmax(line_height, segment->getMaxHeight());  			S32 cur_index = segment->getStart() + seg_offset; -			// find run of text from this segment that we can display on one line -			S32 end_index = cur_index; -			while(end_index < segment->getEnd() && text[end_index] != '\n') -			{ -				++end_index; -			}  			// ask segment how many character fit in remaining space -			S32 max_characters = end_index - cur_index;  			S32 character_count = segment->getNumChars(getWordWrap() ? llmax(0, remaining_pixels) : S32_MAX,  														seg_offset,   														cur_index - line_start_index,  -														max_characters); -			 +														S32_MAX); -			S32 segment_width = segment->getWidth(seg_offset, character_count); +			S32 segment_width, segment_height; +			segment->getDimensions(seg_offset, character_count, segment_width, segment_height); +			// grow line height as necessary based on reported height of this segment +			line_height = llmax(line_height, segment_height);  			remaining_pixels -= segment_width;  			seg_offset += character_count; @@ -1120,16 +1122,6 @@ void LLTextBase::reflow(S32 start_index)  			// if we didn't finish the current segment...  			if (last_segment_char_on_line < segment->getEnd())  			{ -				// set up index for next line -				// ...skip newline, we don't want to draw -				S32 next_line_count = line_count; -				if (text[last_segment_char_on_line] == '\n') -				{ -					seg_offset++; -					last_segment_char_on_line++; -					next_line_count++; -				} -  				// add line info and keep going  				mLineInfoList.push_back(line_info(  											line_start_index,  @@ -1141,7 +1133,6 @@ void LLTextBase::reflow(S32 start_index)  				cur_top -= llround((F32)line_height * mLineSpacingMult) + mLineSpacingPixels;  				remaining_pixels = text_width;  				line_height = 0; -				line_count = next_line_count;  			}  			// ...just consumed last segment..  			else if (++segment_set_t::iterator(seg_iter) == mSegments.end()) @@ -1801,7 +1792,8 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round  		S32 segment_line_start = segmentp->getStart() + line_seg_offset;  		S32 segment_line_length = llmin(segmentp->getEnd(), line_iter->mDocIndexEnd - 1) - segment_line_start; -		S32 text_width = segmentp->getWidth(line_seg_offset, segment_line_length); +		S32 text_width, text_height; +		segmentp->getDimensions(line_seg_offset, segment_line_length, text_width, text_height);  		if (local_x < start_x + text_width						// cursor to left of right edge of text  			|| segmentp->getEnd() >= line_iter->mDocIndexEnd - 1)	// or this segment wraps to next line  		{ @@ -1809,7 +1801,8 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round  			S32 offset;  			if (!segmentp->canEdit())  			{ -				S32 segment_width = segmentp->getWidth(0, segmentp->getEnd() - segmentp->getStart()); +				S32 segment_width, segment_height; +				segmentp->getDimensions(0, segmentp->getEnd() - segmentp->getStart(), segment_width, segment_height);  				if (round && local_x - start_x > segment_width / 2)  				{  					offset = segment_line_length; @@ -1868,14 +1861,18 @@ LLRect LLTextBase::getLocalRectFromDocIndex(S32 pos) const  		if (line_seg_iter == cursor_seg_iter)  		{  			// cursor advanced to right based on difference in offset of cursor to start of line -			local_rect.mLeft += segmentp->getWidth(line_seg_offset, cursor_seg_offset - line_seg_offset); +			S32 segment_width, segment_height; +			segmentp->getDimensions(line_seg_offset, cursor_seg_offset - line_seg_offset, segment_width, segment_height); +			local_rect.mLeft += segment_width;  			break;  		}  		else  		{  			// add remainder of current text segment to cursor position -			local_rect.mLeft += segmentp->getWidth(line_seg_offset, (segmentp->getEnd() - segmentp->getStart()) - line_seg_offset); +			S32 segment_width, segment_height; +			segmentp->getDimensions(line_seg_offset, (segmentp->getEnd() - segmentp->getStart()) - line_seg_offset, segment_width, segment_height); +			local_rect.mLeft += segment_width;  			// offset will be 0 for all segments after the first  			line_seg_offset = 0;  			// go to next text segment on this line @@ -2115,12 +2112,11 @@ LLRect LLTextBase::getVisibleDocumentRect() const  LLTextSegment::~LLTextSegment()  {} -S32	LLTextSegment::getWidth(S32 first_char, S32 num_chars) const { return 0; } +void LLTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const { width = 0; height = 0; }  S32	LLTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const { return 0; }  S32	LLTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const { return 0; }  void LLTextSegment::updateLayout(const LLTextBase& editor) {}  F32	LLTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect) { return draw_rect.mLeft; } -S32	LLTextSegment::getMaxHeight() const { return 0; }  bool LLTextSegment::canEdit() const { return false; }  void LLTextSegment::unlinkFromDocument(LLTextBase*) {}  void LLTextSegment::linkToDocument(LLTextBase*) {} @@ -2158,7 +2154,7 @@ LLNormalTextSegment::LLNormalTextSegment( const LLStyleSP& style, S32 start, S32  	mToken(NULL),  	mEditor(editor)  { -	mMaxHeight = llceil(mStyle->getFont()->getLineHeight()); +	mFontHeight = llceil(mStyle->getFont()->getLineHeight());  }  LLNormalTextSegment::LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible)  @@ -2168,7 +2164,7 @@ LLNormalTextSegment::LLNormalTextSegment( const LLColor4& color, S32 start, S32  {  	mStyle = new LLStyle(LLStyle::Params().visible(is_visible).color(color)); -	mMaxHeight = llceil(mStyle->getFont()->getLineHeight()); +	mFontHeight = llceil(mStyle->getFont()->getLineHeight());  }  F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect) @@ -2266,11 +2262,6 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele  	return right_x;  } -S32	LLNormalTextSegment::getMaxHeight() const	 -{  -	return mMaxHeight;  -} -  BOOL LLNormalTextSegment::handleHover(S32 x, S32 y, MASK mask)  {  	if (getStyle() && getStyle()->isLink()) @@ -2344,10 +2335,21 @@ void LLNormalTextSegment::setToolTip(const std::string& tooltip)  	mTooltip = tooltip;  } -S32	LLNormalTextSegment::getWidth(S32 first_char, S32 num_chars) const +void LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const  {  	LLWString text = mEditor.getWText(); -	return mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars); + +	// look for any printable character, then return the font height +	height = 0; +	for (S32 index = mStart + first_char; index < mStart + first_char + num_chars; ++index) +	{ +		if (text[index] != '\n') +		{ +			height = mFontHeight; +			break; +		} +	} +	width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars);  }  S32	LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const @@ -2363,6 +2365,17 @@ S32	LLNormalTextSegment::getOffset(S32 segment_local_x_coord, S32 start_offset,  S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const  {  	LLWString text = mEditor.getWText(); + +	// search for newline and if found, truncate there +	S32 last_char = mStart + segment_offset; +	for (; last_char != mEnd; ++last_char) +	{ +		if (text[last_char] == '\n') break; +	} + +	// set max characters to length of segment, or to first newline +	max_chars = llmin(max_chars, last_char - (mStart + segment_offset)); +  	S32 num_chars = mStyle->getFont()->maxDrawableChars(text.c_str() + segment_offset + mStart,   												(F32)num_pixels,  												max_chars,  @@ -2380,6 +2393,10 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin  		// include terminating NULL  		num_chars++;  	} +	else if (text[mStart + segment_offset + num_chars] == '\n') +	{ +		num_chars++; +	}  	return num_chars;  } @@ -2399,9 +2416,10 @@ void LLNormalTextSegment::dump() const  // LLInlineViewSegment  // -LLInlineViewSegment::LLInlineViewSegment(LLView* view, S32 start, S32 end) +LLInlineViewSegment::LLInlineViewSegment(LLView* view, S32 start, S32 end, bool force_new_line)  :	LLTextSegment(start, end), -	mView(view) +	mView(view), +	mForceNewLine(force_new_line)  {  }  @@ -2410,21 +2428,29 @@ LLInlineViewSegment::~LLInlineViewSegment()  	mView->die();  } -S32	LLInlineViewSegment::getWidth(S32 first_char, S32 num_chars) const +void	LLInlineViewSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const  {  	if (first_char == 0 && num_chars == 0)   	{ -		return 0; +		// we didn't fit on a line, the widget will fall on the next line +		// so dimensions here are 0 +		width = 0; +		height = 0;  	}  	else  	{ -		return mView->getRect().getWidth(); +		width = mView->getRect().getWidth(); +		height = mView->getRect().getHeight();  	}  }  S32	LLInlineViewSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const  { -	if (line_offset != 0 && num_pixels < mView->getRect().getWidth())  +	// if putting a widget anywhere but at the beginning of a line +	// and the widget doesn't fit or mForceNewLine is true +	// then return 0 chars for that line, and all characters for the next +	if (line_offset != 0  +		&& (mForceNewLine || num_pixels < mView->getRect().getWidth()))   	{  		return 0;  	} @@ -2446,11 +2472,6 @@ F32	LLInlineViewSegment::draw(S32 start, S32 end, S32 selection_start, S32 selec  	return (F32)(draw_rect.mLeft + mView->getRect().getWidth());  } -S32	LLInlineViewSegment::getMaxHeight() const -{ -	return mView->getRect().getHeight(); -} -  void LLInlineViewSegment::unlinkFromDocument(LLTextBase* editor)  {  	editor->removeDocumentChild(mView); diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index ca9b1cc123..c05a31baec 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -366,12 +366,11 @@ public:  	LLTextSegment(S32 start, S32 end) : mStart(start), mEnd(end){};  	virtual ~LLTextSegment(); -	virtual S32					getWidth(S32 first_char, S32 num_chars) const; +	virtual void				getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;  	virtual S32					getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;  	virtual S32					getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;  	virtual void				updateLayout(const class LLTextBase& editor);  	virtual F32					draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect); -	virtual S32					getMaxHeight() const;  	virtual bool				canEdit() const;  	virtual void				unlinkFromDocument(class LLTextBase* editor);  	virtual void				linkToDocument(class LLTextBase* editor); @@ -418,11 +417,10 @@ public:  	LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 end, LLTextBase& editor );  	LLNormalTextSegment( const LLColor4& color, S32 start, S32 end, LLTextBase& editor, BOOL is_visible = TRUE); -	/*virtual*/ S32					getWidth(S32 first_char, S32 num_chars) const; +	/*virtual*/ void				getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;  	/*virtual*/ S32					getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const;  	/*virtual*/ S32					getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;  	/*virtual*/ F32					draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect); -	/*virtual*/ S32					getMaxHeight() const;  	/*virtual*/ bool				canEdit() const { return true; }  	/*virtual*/ const LLColor4&		getColor() const					{ return mStyle->getColor(); }  	/*virtual*/ void 				setColor(const LLColor4 &color)		{ mStyle->setColor(color); } @@ -446,7 +444,7 @@ protected:  protected:  	class LLTextBase&	mEditor;  	LLStyleSP			mStyle; -	S32					mMaxHeight; +	S32					mFontHeight;  	LLKeywordToken* 	mToken;  	std::string     	mTooltip;  }; @@ -460,19 +458,19 @@ public:  class LLInlineViewSegment : public LLTextSegment  {  public: -	LLInlineViewSegment(LLView* widget, S32 start, S32 end); +	LLInlineViewSegment(LLView* widget, S32 start, S32 end, bool force_new_line);  	~LLInlineViewSegment(); -	/*virtual*/ S32			getWidth(S32 first_char, S32 num_chars) const; +	/*virtual*/ void		getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const;  	/*virtual*/ S32			getNumChars(S32 num_pixels, S32 segment_offset, S32 line_offset, S32 max_chars) const;  	/*virtual*/ void		updateLayout(const class LLTextBase& editor);  	/*virtual*/ F32			draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect); -	/*virtuaL*/ S32			getMaxHeight() const;  	/*virtual*/ bool		canEdit() const { return false; }  	/*virtual*/ void		unlinkFromDocument(class LLTextBase* editor);  	/*virtual*/ void		linkToDocument(class LLTextBase* editor);  private:  	LLView* mView; +	bool	mForceNewLine;  }; diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 7c925b8899..953c5b292f 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2276,7 +2276,7 @@ void LLTextEditor::insertText(const std::string &new_text)  	setEnabled( enabled );  } -void LLTextEditor::appendWidget(LLView* widget, const std::string &widget_text, bool allow_undo, bool prepend_newline) +void LLTextEditor::appendWidget(LLView* widget, const std::string &widget_text, bool allow_undo, bool force_new_line)  {  	// Save old state  	S32 selection_start = mSelectionStart; @@ -2293,17 +2293,9 @@ void LLTextEditor::appendWidget(LLView* widget, const std::string &widget_text,  	LLWString widget_wide_text;  	// Add carriage return if not first line -	if (getLength() != 0 -		&& prepend_newline) -	{ -		widget_wide_text = utf8str_to_wstring(std::string("\n") + widget_text); -	} -	else -	{ -		widget_wide_text = utf8str_to_wstring(widget_text); -	} +	widget_wide_text = utf8str_to_wstring(widget_text); -	LLTextSegmentPtr segment = new LLInlineViewSegment(widget, old_length, old_length + widget_text.size()); +	LLTextSegmentPtr segment = new LLInlineViewSegment(widget, old_length, old_length + widget_text.size(), force_new_line);  	insert(getLength(), widget_wide_text, FALSE, segment);  	needsReflow(); diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h index e232efbfb3..82f3956855 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -165,7 +165,7 @@ public:  	// inserts text at cursor  	void			insertText(const std::string &text); -	void			appendWidget(LLView* widget, const std::string &widget_text, bool allow_undo, bool prepend_newline); +	void			appendWidget(LLView* widget, const std::string &widget_text, bool allow_undo, bool force_newline);  	// Non-undoable  	void			setText(const LLStringExplicit &utf8str); diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index f30e56b907..c8094f9c7c 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -183,6 +183,7 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)  	params.font = p.font;  	params.use_ellipses = true;  	params.wrap = p.wrap; +	params.allow_html = false; // disallow hyperlinks in tooltips, as they want to spawn their own explanatory tooltips  	mTextBox = LLUICtrlFactory::create<LLTextBox> (params);  	addChild(mTextBox); @@ -319,9 +320,16 @@ void LLToolTipMgr::createToolTip(const LLToolTip::Params& params)  	LLToolTip::Params tooltip_params(params);  	// block mouse events if there is a click handler registered (specifically, hover) -	tooltip_params.mouse_opaque = params.click_callback.isProvided(); +	if (params.click_callback.isProvided()) +	{ +		// set mouse_opaque to true if it wasn't already set to something else +		// this prevents mouse down from going "through" the tooltip and ultimately +		// causing the tooltip to disappear +		tooltip_params.mouse_opaque.setIfNotProvided(true); +	}  	tooltip_params.rect = LLRect (0, 1, 1, 0); +  	mToolTip = LLUICtrlFactory::create<LLToolTip> (tooltip_params);  	mToolTip->setValue(params.message());  	gToolTipView->addChild(mToolTip); diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index e04ccfbc2f..52e4229fb4 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -280,23 +280,37 @@ void LLUrlEntryAgent::onAgentNameReceived(const LLUUID& id,  std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)  { -	std::string id = getIDStringFromUrl(url); -	if (gCacheName && ! id.empty()) +	if (!gCacheName)  	{ -		LLUUID uuid(id); -		std::string full_name; -		if (gCacheName->getFullName(uuid, full_name)) -		{ -			return full_name; -		} -		else -		{ -			gCacheName->get(uuid, FALSE, boost::bind(&LLUrlEntryAgent::onAgentNameReceived, this, _1, _2, _3, _4)); -			addObserver(id, url, cb); -		} +		// probably at the login screen, use short string for layout +		return LLTrans::getString("LoadingData"); +	} + +	std::string agent_id_string = getIDStringFromUrl(url); +	if (agent_id_string.empty()) +	{ +		// something went wrong, just give raw url +		return unescapeUrl(url);  	} -	return LLTrans::getString("LoadingData");//unescapeUrl(url); +	LLUUID agent_id(agent_id_string); +	std::string full_name; +	if (agent_id.isNull()) +	{ +		return LLTrans::getString("AvatarNameNobody"); +	} +	else if (gCacheName->getFullName(agent_id, full_name)) +	{ +		return full_name; +	} +	else +	{ +		gCacheName->get(agent_id, FALSE, +			boost::bind(&LLUrlEntryAgent::onAgentNameReceived, +				this, _1, _2, _3, _4)); +		addObserver(agent_id_string, url, cb); +		return LLTrans::getString("LoadingData"); +	}  }  // @@ -311,6 +325,7 @@ LLUrlEntryGroup::LLUrlEntryGroup()  	mMenuName = "menu_url_group.xml";  	mIcon = "Generic_Group";  	mTooltip = LLTrans::getString("TooltipGroupUrl"); +	mColor = LLUIColorTable::instance().getColor("GroupLinkColor");  }  void LLUrlEntryGroup::onGroupNameReceived(const LLUUID& id, @@ -324,23 +339,37 @@ void LLUrlEntryGroup::onGroupNameReceived(const LLUUID& id,  std::string LLUrlEntryGroup::getLabel(const std::string &url, const LLUrlLabelCallback &cb)  { -	std::string id = getIDStringFromUrl(url); -	if (gCacheName && ! id.empty()) +	if (!gCacheName)  	{ -		LLUUID uuid(id); -		std::string group_name; -		if (gCacheName->getGroupName(uuid, group_name)) -		{ -			return group_name; -		} -		else -		{ -			gCacheName->get(uuid, TRUE, boost::bind(&LLUrlEntryGroup::onGroupNameReceived, this, _1, _2, _3, _4)); -			addObserver(id, url, cb); -		} +		// probably at login screen, give something short for layout +		return LLTrans::getString("LoadingData");  	} -	return unescapeUrl(url); +	std::string group_id_string = getIDStringFromUrl(url); +	if (group_id_string.empty()) +	{ +		// something went wrong, give raw url +		return unescapeUrl(url); +	} + +	LLUUID group_id(group_id_string); +	std::string group_name; +	if (group_id.isNull()) +	{ +		return LLTrans::getString("GroupNameNone"); +	} +	else if (gCacheName->getGroupName(group_id, group_name)) +	{ +		return group_name; +	} +	else +	{ +		gCacheName->get(group_id, TRUE, +			boost::bind(&LLUrlEntryGroup::onGroupNameReceived, +				this, _1, _2, _3, _4)); +		addObserver(group_id_string, url, cb); +		return LLTrans::getString("LoadingData"); +	}  }  /// diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 80f3867a80..cc21b636f1 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -109,7 +109,7 @@ void LLChatHistory::appendWidgetMessage(const LLUUID& avatar_id, std::string& fr  		view_text = from + MESSAGE_USERNAME_DATE_SEPARATOR + time;  	}  	//Prepare the rect for the view -	LLRect target_rect = mScroller->getContentWindowRect(); +	LLRect target_rect = getDocumentView()->getRect();  	target_rect.mLeft += mLeftWidgetPad;  	target_rect.mRight -= mRightWidgetPad;  	view->reshape(target_rect.getWidth(), view->getRect().getHeight()); diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp index f6f23055ac..da20766e7e 100644 --- a/indra/newview/lleventnotifier.cpp +++ b/indra/newview/lleventnotifier.cpp @@ -196,7 +196,7 @@ bool LLEventNotification::handleResponse(const LLSD& notification, const LLSD& r  			break;  		}  	case 1: -		LLFloaterReg::showInstance("search", LLSD().insert("panel", "event").insert("id", S32(getEventID()))); +		LLFloaterReg::showInstance("search", LLSD().insert("category", "events").insert("id", S32(getEventID())));  		break;  	case 2:  		break; diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index e2d6bcee8f..48b5fc11b7 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -48,10 +48,11 @@ public:  		mExpanderLabel(more_text)  	{} -	/*virtual*/ S32		getWidth(S32 first_char, S32 num_chars) const  +	/*virtual*/ void	getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const   	{  		// more label always spans width of text box -		return mEditor.getTextRect().getWidth();  +		width = mEditor.getTextRect().getWidth();  +		height = llceil(mStyle->getFont()->getLineHeight());  	}  	/*virtual*/ S32		getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const   	{  @@ -85,8 +86,9 @@ public:  									mEditor.getUseEllipses());  		return right_x;  	} -	/*virtual*/ S32		getMaxHeight() const { return llceil(mStyle->getFont()->getLineHeight()); }  	/*virtual*/ bool	canEdit() const { return false; } +	// eat handleMouseDown event so we get the mouseup event +	/*virtual*/ BOOL	handleMouseDown(S32 x, S32 y, MASK mask) { return TRUE; }  	/*virtual*/ BOOL	handleMouseUp(S32 x, S32 y, MASK mask) { mEditor.onCommit(); return TRUE; }  	/*virtual*/ BOOL	handleHover(S32 x, S32 y, MASK mask)   	{ @@ -126,9 +128,12 @@ void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL calle  	}  } -void LLExpandableTextBox::LLTextBoxEx::setValue(const LLSD& value) +void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text)  { -	LLTextBox::setValue(value); +	// LLTextBox::setText will obliterate the expander segment, so make sure +	// we generate it again by clearing mExpanderVisible +	mExpanderVisible = false; +	LLTextBox::setText(text);  	// text contents have changed, segments are cleared out  	// so hide the expander and determine if we need it @@ -395,7 +400,6 @@ void LLExpandableTextBox::onTopLost()  void LLExpandableTextBox::setValue(const LLSD& value)  {  	collapseTextBox(); -  	mText = value.asString();  	mTextBox->setValue(value);  } @@ -403,7 +407,6 @@ void LLExpandableTextBox::setValue(const LLSD& value)  void LLExpandableTextBox::setText(const std::string& str)  {  	collapseTextBox(); -  	mText = str;  	mTextBox->setText(str);  } diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index d6401e224f..d45527aabb 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -60,7 +60,7 @@ protected:  		// adds or removes "More" link as needed  		/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); -		/*virtual*/ void setValue(const LLSD& value); +		/*virtual*/ void setText(const LLStringExplicit& text);  		/**  		 * Returns difference between text box height and text height. diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 007c6b2c4c..76ece9d165 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -66,29 +66,46 @@ const S32 DROP_DOWN_MENU_WIDTH = 250;   * Helper for LLFavoriteLandmarkButton and LLFavoriteLandmarkMenuItem.   * Performing requests for SLURL for given Landmark ID   */ -class LLSLURLGetter +class LLLandmarkInfoGetter  {  public: -	LLSLURLGetter() -		: mLandmarkID(LLUUID::null) -		, mSLURL("(Loading...)") -		, mLoaded(false) {} +	LLLandmarkInfoGetter() +	:	mLandmarkID(LLUUID::null), +		mName("(Loading...)"), +		mPosX(0), +		mPosY(0), +		mLoaded(false)  +	{}  	void setLandmarkID(const LLUUID& id) { mLandmarkID = id; }  	const LLUUID& getLandmarkId() const { return mLandmarkID; } -	const std::string& getSLURL() +	const std::string& getName()  	{  		if(!mLoaded) -			requestSLURL(); +			requestNameAndPos(); -		return mSLURL; +		return mName; +	} + +	S32 getPosX() +	{ +		if (!mLoaded) +			requestNameAndPos(); +		return mPosX; +	} + +	S32 getPosY() +	{ +		if (!mLoaded) +			requestNameAndPos(); +		return mPosY;  	}  private:  	/**  	 * Requests landmark data from server.  	 */ -	void requestSLURL() +	void requestNameAndPos()  	{  		if (mLandmarkID.isNull())  			return; @@ -96,19 +113,23 @@ private:  		LLVector3d g_pos;  		if(LLLandmarkActions::getLandmarkGlobalPos(mLandmarkID, g_pos))  		{ -			LLLandmarkActions::getSLURLfromPosGlobal(g_pos, -				boost::bind(&LLSLURLGetter::landmarkNameCallback, this, _1), false); +			LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(g_pos, +				boost::bind(&LLLandmarkInfoGetter::landmarkNameCallback, this, _1, _2, _3));  		}  	} -	void landmarkNameCallback(const std::string& name) +	void landmarkNameCallback(const std::string& name, S32 x, S32 y)  	{ -		mSLURL = name; +		mPosX = x; +		mPosY = y; +		mName = name;  		mLoaded = true;  	}  	LLUUID mLandmarkID; -	std::string mSLURL; +	std::string mName; +	S32 mPosX; +	S32 mPosY;  	bool mLoaded;  }; @@ -125,7 +146,15 @@ public:  	BOOL handleToolTip(S32 x, S32 y, MASK mask)  	{ -		LLToolTipMgr::instance().show(mUrlGetter.getSLURL()); +		std::string region_name = mLandmarkInfoGetter.getName(); +		 +		if (!region_name.empty()) +		{ +			LLToolTip::Params params; +			params.message = llformat("%s\n%s (%d, %d)", getLabelSelected().c_str(), region_name.c_str(), mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY()); +			params.sticky_rect = calcScreenRect(); +			LLToolTipMgr::instance().show(params); +		}  		return TRUE;  	} @@ -141,8 +170,8 @@ public:  		return LLButton::handleHover(x, y, mask);  	} -	void setLandmarkID(const LLUUID& id){ mUrlGetter.setLandmarkID(id); } -	const LLUUID& getLandmarkId() const { return mUrlGetter.getLandmarkId(); } +	void setLandmarkID(const LLUUID& id){ mLandmarkInfoGetter.setLandmarkID(id); } +	const LLUUID& getLandmarkId() const { return mLandmarkInfoGetter.getLandmarkId(); }  	void onMouseEnter(S32 x, S32 y, MASK mask)  	{ @@ -161,7 +190,7 @@ protected:  	friend class LLUICtrlFactory;  private: -	LLSLURLGetter mUrlGetter; +	LLLandmarkInfoGetter mLandmarkInfoGetter;  };  /** @@ -176,11 +205,18 @@ class LLFavoriteLandmarkMenuItem : public LLMenuItemCallGL  public:  	BOOL handleToolTip(S32 x, S32 y, MASK mask)  	{ -		LLToolTipMgr::instance().show(mUrlGetter.getSLURL()); +		std::string region_name = mLandmarkInfoGetter.getName(); +		if (!region_name.empty()) +		{ +			LLToolTip::Params params; +			params.message = llformat("%s\n%s (%d, %d)", getLabel().c_str(), region_name.c_str(), mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY()); +			params.sticky_rect = calcScreenRect(); +			LLToolTipMgr::instance().show(params); +		}  		return TRUE;  	} -	void setLandmarkID(const LLUUID& id){ mUrlGetter.setLandmarkID(id); } +	void setLandmarkID(const LLUUID& id){ mLandmarkInfoGetter.setLandmarkID(id); }  	virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask)  	{ @@ -212,7 +248,7 @@ protected:  	friend class LLUICtrlFactory;  private: -	LLSLURLGetter mUrlGetter; +	LLLandmarkInfoGetter mLandmarkInfoGetter;  	LLFavoritesBarCtrl* fb;  }; diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 904263e2c2..4c83530f43 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -40,6 +40,17 @@ LLFloaterSearch::LLFloaterSearch(const LLSD& key) :  	LLFloater(key),  	mBrowser(NULL)  { +	// declare a map that transforms a category name into +	// the URL suffix that is used to search that category +	mCategoryPaths = LLSD::emptyMap(); +	mCategoryPaths["all"]          = "search"; +	mCategoryPaths["people"]       = "search/people"; +	mCategoryPaths["places"]       = "search/places"; +	mCategoryPaths["events"]       = "search/events"; +	mCategoryPaths["groups"]       = "search/groups"; +	mCategoryPaths["wiki"]         = "search/wiki"; +	mCategoryPaths["destinations"] = "destinations"; +	mCategoryPaths["classifieds"]  = "classifieds";  }  BOOL LLFloaterSearch::postBuild() @@ -79,13 +90,33 @@ void LLFloaterSearch::handleMediaEvent(LLPluginClassMedia *self, EMediaEvent eve  void LLFloaterSearch::search(const LLSD &key)  { -	if (mBrowser) +	if (! mBrowser) +	{ +		return; +	} + +	// get the URL for the search page +	std::string url = getString("search_url"); +	if (! LLStringUtil::endsWith(url, "/"))  	{ -		std::string query = getString("search_url"); -		if (key.has("id")) -		{ -			query += std::string("?q=") + key["id"].asString(); -		} -		mBrowser->navigateTo(query); +		url += "/";  	} + +	// work out the subdir to use based on the requested category +	std::string category = key.has("category") ? key["category"].asString() : ""; +	if (mCategoryPaths.has(category)) +	{ +		url += mCategoryPaths[category].asString(); +	} +	else +	{ +		url += mCategoryPaths["all"].asString(); +	} + +	// append the search query string +	std::string search_text = key.has("id") ? key["id"].asString() : ""; +	url += std::string("?q=") + search_text; + +	// and load the URL in the web view +	mBrowser->navigateTo(url);  } diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h index 46af53b154..743107484f 100644 --- a/indra/newview/llfloatersearch.h +++ b/indra/newview/llfloatersearch.h @@ -56,9 +56,14 @@ public:  	LLFloaterSearch(const LLSD& key);  	/// show the search floater with a new search +	/// see search() for details on the key parameter.  	/*virtual*/ void onOpen(const LLSD& key); -	/// perform a search with the specific search term +	/// perform a search with the specific search term. +	/// The key should be a map that can contain the following keys: +	///  - "id": specifies the text phrase to search for +	///  - "category": one of "all" (default), "people", "places", +	///    "events", "groups", "wiki", "destinations", "classifieds"  	void search(const LLSD &key);  private: @@ -68,6 +73,7 @@ private:  	/*virtual*/ void handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event);  	LLMediaCtrl *mBrowser; +	LLSD        mCategoryPaths;  };  #endif  // LL_LLFLOATERSEARCH_H diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 220fb3c8a0..c46eedbef2 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -112,7 +112,7 @@ LLGroupHandler gGroupHandler;  // static  void LLGroupActions::search()  { -	LLFloaterReg::showInstance("search", LLSD().insert("panel", "group")); +	LLFloaterReg::showInstance("search", LLSD().insert("category", "groups"));  }  // static diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 081e55971d..4eb6061bea 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -44,6 +44,7 @@  #include "llinspect.h"  #include "llmutelist.h"  #include "llpanelblockedlist.h" +#include "llstartup.h"  #include "llviewermenu.h"  #include "llvoiceclient.h" @@ -277,12 +278,12 @@ void LLInspectAvatar::requestUpdate()  	// login screen (which is useful to work on the layout).  	if (mAvatarID.isNull())  	{ -		getChild<LLUICtrl>("user_subtitle")-> -			setValue("Test subtitle"); -		getChild<LLUICtrl>("user_details")-> -			setValue("Test details"); -		getChild<LLUICtrl>("user_partner")-> -			setValue("Test partner"); +		if (LLStartUp::getStartupState() >= STATE_STARTED) +		{ +			// once we're running we don't want to show the test floater +			// for bogus LLUUID::null links +			closeFloater(); +		}  		return;  	} diff --git a/indra/newview/llinspectgroup.cpp b/indra/newview/llinspectgroup.cpp index e079e27e56..c78bcd6afe 100644 --- a/indra/newview/llinspectgroup.cpp +++ b/indra/newview/llinspectgroup.cpp @@ -37,6 +37,7 @@  #include "llgroupactions.h"  #include "llgroupmgr.h"  #include "llinspect.h" +#include "llstartup.h"  // Linden libraries  #include "llcontrol.h"	// LLCachedControl @@ -200,6 +201,12 @@ void LLInspectGroup::requestUpdate()  	// login screen (which is useful to work on the layout).  	if (mGroupID.isNull())  	{ +		if (LLStartUp::getStartupState() >= STATE_STARTED) +		{ +			// once we're running we don't want to show the test floater +			// for bogus LLUUID::null links +			closeFloater(); +		}  		return;  	} diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index 2e6615dd91..b36b7cf50e 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -270,23 +270,42 @@ void LLLandmarkActions::getSLURLfromPosGlobal(const LLVector3d& global_pos, slur  	{  		U64 new_region_handle = to_region_handle(global_pos); -		LLWorldMap::url_callback_t url_cb = boost::bind(&LLLandmarkActions::onRegionResponse, +		LLWorldMap::url_callback_t url_cb = boost::bind(&LLLandmarkActions::onRegionResponseSLURL,  														cb,  														global_pos,  														escaped, -														_1, _2, _3, _4); +														_2);  		LLWorldMap::getInstance()->sendHandleRegionRequest(new_region_handle, url_cb, std::string("unused"), false);  	}  } -void LLLandmarkActions::onRegionResponse(slurl_callback_t cb, +void LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(const LLVector3d& global_pos, region_name_and_coords_callback_t cb) +{ +	std::string sim_name; +	LLSimInfo* sim_infop = LLWorldMap::getInstance()->simInfoFromPosGlobal(global_pos); +	if (sim_infop) +	{ +		LLVector3 pos = sim_infop->getLocalPos(global_pos); +		cb(sim_infop->mName, llround(pos.mV[VX]), llround(pos.mV[VY])); +	} +	else +	{ +		U64 new_region_handle = to_region_handle(global_pos); + +		LLWorldMap::url_callback_t url_cb = boost::bind(&LLLandmarkActions::onRegionResponseNameAndCoords, +														cb, +														global_pos, +														_1); + +		LLWorldMap::getInstance()->sendHandleRegionRequest(new_region_handle, url_cb, std::string("unused"), false); +	} +} + +void LLLandmarkActions::onRegionResponseSLURL(slurl_callback_t cb,  										 const LLVector3d& global_pos,  										 bool escaped, -										 U64 region_handle, -										 const std::string& url, -										 const LLUUID& snapshot_id, -										 bool teleport) +										 const std::string& url)  {  	std::string sim_name;  	std::string slurl; @@ -303,6 +322,18 @@ void LLLandmarkActions::onRegionResponse(slurl_callback_t cb,  	cb(slurl);  } +void LLLandmarkActions::onRegionResponseNameAndCoords(region_name_and_coords_callback_t cb, +										 const LLVector3d& global_pos, +										 U64 region_handle) +{ +	LLSimInfo* sim_infop = LLWorldMap::getInstance()->simInfoFromHandle(region_handle); +	if (sim_infop) +	{ +		LLVector3 local_pos = sim_infop->getLocalPos(global_pos); +		cb(sim_infop->mName, llround(local_pos.mV[VX]), llround(local_pos.mV[VY])); +	} +} +  bool LLLandmarkActions::getLandmarkGlobalPos(const LLUUID& landmarkInventoryItemID, LLVector3d& posGlobal)  {  	LLLandmark* landmark = LLLandmarkActions::getLandmark(landmarkInventoryItemID); diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index e882db0a92..d651259790 100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h @@ -43,6 +43,7 @@ class LLLandmarkActions  {  public:  	typedef boost::function<void(std::string& slurl)> slurl_callback_t; +	typedef boost::function<void(std::string& slurl, S32 x, S32 y)> region_name_and_coords_callback_t;  	/**  	 * @brief Fetches landmark LLViewerInventoryItems for the given landmark name.  @@ -92,6 +93,8 @@ public:  	 */  	static void getSLURLfromPosGlobal(const LLVector3d& global_pos, slurl_callback_t cb, bool escaped = true); +	static void getRegionNameAndCoordsFromPosGlobal(const LLVector3d& global_pos, region_name_and_coords_callback_t cb); +      /**       * @brief Gets landmark global position specified by inventory LLUUID.       * Found position is placed into "posGlobal" variable. @@ -120,13 +123,13 @@ private:      LLLandmarkActions();      LLLandmarkActions(const LLLandmarkActions&); -	static void onRegionResponse(slurl_callback_t cb, +	static void onRegionResponseSLURL(slurl_callback_t cb,  								 const LLVector3d& global_pos,  								 bool escaped, -								 U64 region_handle, -								 const std::string& url, -								 const LLUUID& snapshot_id, -								 bool teleport); +								 const std::string& url); +	static void onRegionResponseNameAndCoords(region_name_and_coords_callback_t cb, +								 const LLVector3d& global_pos, +								 U64 region_handle);  };  #endif //LL_LLLANDMARKACTIONS_H diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 19fee20740..b77415dfee 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -535,7 +535,7 @@ void LLNavigationBar::handleLoginComplete()  void LLNavigationBar::invokeSearch(std::string search_text)  { -	LLFloaterReg::showInstance("search", LLSD().insert("panel", "all").insert("id", LLSD(search_text))); +	LLFloaterReg::showInstance("search", LLSD().insert("category", "all").insert("id", LLSD(search_text)));  }  void LLNavigationBar::clearHistoryCache() diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 0ce1ecc6ee..65994dfb30 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -130,15 +130,17 @@ public:  		mToolTip = inv_item->getName() + '\n' + inv_item->getDescription();  	} -	/*virtual*/ S32				getWidth(S32 first_char, S32 num_chars) const +	/*virtual*/ void getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const  	{  		if (num_chars == 0)  		{ -			return 0; +			width = 0; +			height = 0;  		}  		else  		{ -			return EMBEDDED_ITEM_LABEL_PADDING + mImage->getWidth() + mStyle->getFont()->getWidth(mLabel.c_str()); +			width = EMBEDDED_ITEM_LABEL_PADDING + mImage->getWidth() + mStyle->getFont()->getWidth(mLabel.c_str()); +			height = llmax(mImage->getHeight(), llceil(mStyle->getFont()->getLineHeight()));  		}  	} @@ -169,10 +171,6 @@ public:  		return right_x;  	} -	/*virtual*/ S32				getMaxHeight() const -	{ -		return llmax(mImage->getHeight(), llceil(mStyle->getFont()->getLineHeight())); -	}  	/*virtual*/ bool			canEdit() const { return false; } diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp index b8ecd9556f..829d631473 100644 --- a/indra/newview/llworldmap.cpp +++ b/indra/newview/llworldmap.cpp @@ -94,6 +94,13 @@ LLVector3d LLSimInfo::getGlobalPos(LLVector3 local_pos) const  	return pos;  } +LLVector3 LLSimInfo::getLocalPos(LLVector3d global_pos) const +{ +	LLVector3d sim_origin = from_region_handle(mHandle); +	return LLVector3(global_pos - sim_origin); +} + +  //---------------------------------------------------------------------------  // World Map diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index 9daee38752..366de8f071 100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h @@ -78,6 +78,7 @@ public:  	LLSimInfo();  	LLVector3d getGlobalPos(LLVector3 local_pos) const; +	LLVector3 getLocalPos(LLVector3d global_pos) const;  public:  	U64 mHandle; diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 5446a08ebf..3aad5c7378 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -1897,20 +1897,20 @@ BOOL LLWorldMapView::handleDoubleClick( S32 x, S32 y, MASK mask )  				id.toString(uuid_str);  				uuid_str = uuid_str.substr(28);  				sscanf(uuid_str.c_str(), "%X", &event_id); -				LLFloaterReg::showInstance("search", LLSD().insert("panel", "event").insert("id", event_id)); +				LLFloaterReg::showInstance("search", LLSD().insert("category", "events").insert("id", event_id));  				break;  			}  		case MAP_ITEM_LAND_FOR_SALE:  		case MAP_ITEM_LAND_FOR_SALE_ADULT:  			{  				LLFloaterReg::hideInstance("world_map"); -				LLFloaterReg::showInstance("search", LLSD().insert("panel", "land").insert("id", id)); +				LLFloaterReg::showInstance("search", LLSD().insert("category", "destinations").insert("id", id));  				break;  			}  		case MAP_ITEM_CLASSIFIED:  			{  				LLFloaterReg::hideInstance("world_map"); -				LLFloaterReg::showInstance("search", LLSD().insert("panel", "classified").insert("id", id)); +				LLFloaterReg::showInstance("search", LLSD().insert("category", "classifieds").insert("id", id));  				break;  			}  		default: diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index e2cc1481c4..287c997c65 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -305,6 +305,9 @@       name="GridlineShadowColor"       value="0 0 0 0.31" />      <color +     name="GroupLinkColor" +     reference="White" /> +    <color       name="GroupNotifyBoxColor"       value="0.3344 0.5456 0.5159 1" />      <color diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml index a6a6e0ec22..11773c34dc 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml @@ -405,7 +405,7 @@ Maximum animation length is [MAX_LENGTH] seconds.       layout="topleft"       left_pad="0"       name="preview_base_anim" -     tool_tip="Use this to test your animation behavior while your avatar performs common actions"> +     tool_tip="Use this to test your animation behavior while your avatar performs common actions.">          <combo_box.item           label="Standing"           name="Standing" /> diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index cf9e3a82fc..285045f2c8 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -63,14 +63,14 @@           name="display" />          <panel  		 class="panel_preference" -         filename="panel_preferences_im.xml" +         filename="panel_preferences_privacy.xml"           label="Privacy"           layout="topleft"           help_topic="preferences_im_tab"           name="im" />          <panel  		 class="panel_preference" -         filename="panel_preferences_audio.xml" +         filename="panel_preferences_sound.xml"           label="Sound"           layout="topleft"           help_topic="preferences_audio_tab" @@ -84,14 +84,14 @@           name="chat" />          <panel  		 class="panel_preference" -         filename="panel_preferences_popups.xml" +         filename="panel_preferences_alerts.xml"           label="Alerts"           layout="topleft"           help_topic="preferences_msgs_tab"           name="msgs" />          <panel  		 class="panel_preference" -         filename="panel_preferences_input.xml" +         filename="panel_preferences_setup.xml"           label="Setup"           layout="topleft"           help_topic="preferences_input_tab" diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 4ac0edca5a..296cde92e3 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -13,7 +13,7 @@   width="620">      <floater.string       name="search_url"> -        http://eniac21.lindenlab.com:10001/viewer/search/ +        http://eniac21.lindenlab.com:10001/viewer      </floater.string>      <floater.string       name="loading_text"> diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml index 126bca2074..ce20b03919 100644 --- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml +++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml @@ -133,16 +133,4 @@      secondlife:///app/group/00000000-0000-0000-0000-000000000000/inspect    </text> -  <text -  follows="left|top" -  font="SansSerif" -  height="20" -  left="0" -  max_length="65536" -  name="slurl_group_about" -  top_pad="4" -  width="150"> -    secondlife:///app/group/00000000-0000-0000-0000-000000000000/about -  </text> -  </floater> diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index 5bf481e9cb..181c80ebc7 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -47,7 +47,6 @@       value="Grumpity ProductEngine"       width="240"       word_wrap="false" /> -    <!-- Leave text fields blank so it doesn't flash when data arrives off the network -->      <text       follows="all"       height="16" diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml index d3f599cbbf..5b166e83b8 100644 --- a/indra/newview/skins/default/xui/en/inspect_group.xml +++ b/indra/newview/skins/default/xui/en/inspect_group.xml @@ -84,7 +84,8 @@ L$123 to join       top="35"       left_delta="110"       tab_stop="false" -     width="18" /> +     width="18" +     commit_callback.function="InspectGroup.ViewProfile" />    <button     follows="bottom|left"     height="23" 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 69d90e4c7d..2c9109449c 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 @@ -8,7 +8,7 @@   top="0"   width="320">      <icon -     follows="top|right|left"  +     follows="top|right|left"       height="24"       image_name="ListItem_Over"       layout="topleft" @@ -40,23 +40,22 @@       follows="left|right"       font="SansSerifSmall"       font.style="BOLD" -     height="20" +     height="15"       layout="topleft"       left_pad="5"       name="avatar_name" -     text_color="grey" -     top="4" -     use_ellipses="true"  +     top="6" +     use_ellipses="true"       value="Unknown" -     width="162" /> +     width="166" />      <text -     follows="right" -     font="SansSerif" -     height="20" +     follows="left" +     font="SansSerifSmall" +     height="15"       layout="topleft"       left_pad="10"       name="avatar_status" -     text_color="0.5 0.5 0.5 1" +     text_color="LtGray_50"       value="Away"       width="50" />      <output_monitor @@ -65,40 +64,31 @@       draw_border="false"       height="16"       layout="topleft" -     left_pad="3" +     left_pad="0"       mouse_opaque="true"       name="speaking_indicator" -     top="4"       visible="true"       width="20" />      <button       follows="right" -     font="SansSerifBigBold" -     height="18" -     image_disabled="Info" -     image_disabled_selected="Info" -     image_hover_selected="Info" -     image_selected="Info" -     image_unselected="Info" +     height="16" +     image_pressed="Info_Press" +     image_hover="Info_Over" +     image_unselected="Info_Off"       layout="topleft" -     left_pad="2" +     left_pad="5"       name="info_btn"       picture_style="true" -     top="2" -     width="18" /> +     width="16" />      <button       follows="right" -     font="SansSerifBigBold" -     height="18" -     image_disabled="profile_chevron_btn.tga" -     image_disabled_selected="profile_chevron_btn.tga" -     image_hover_selected="profile_chevron_btn_active.tga" -     image_selected="profile_chevron_btn_active.tga" -     image_unselected="profile_chevron_btn.tga" +     height="16" +      image_selected="BuyArrow_Press" +     image_pressed="BuyArrow_Press" +     image_unselected="BuyArrow_Press"       layout="topleft" -     left_pad="2" +     left_pad="5"       name="profile_btn"       picture_style="true" -     top="2" -     width="18" /> +     width="16" />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index b4847368b2..100b2d7aaa 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -79,7 +79,7 @@               label="Move"               layout="topleft"               name="movement_btn" -             tool_tip="Shows/Hide Movement controls"  +             tool_tip="Shows/hides movement controls"                top="6"               width="70">                  <button.init_callback @@ -116,7 +116,7 @@               label="View"               layout="topleft"               left="0" -             tool_tip="Shows/Hide Camera controls"  +             tool_tip="Shows/hides camera controls"                top="6"               name="camera_btn"               width="70"> @@ -167,12 +167,12 @@                   image_disabled_selected="camera_presets/camera_presets_arrow_right.png"                    image_disabled="camera_presets/camera_presets_arrow_right.png"                   name="snapshot_settings" -                 tool_tip="Snapshot Settings" /> +                 tool_tip="Snapshot settings" />                  <split_button.item                   image_selected="camera_presets/camera_presets_snapshot.png"                   image_unselected="camera_presets/camera_presets_snapshot.png"                   name="snapshot" -                 tool_tip="Take Snapshot" /> +                 tool_tip="Take snapshot" />              </split_button>                            </layout_panel>          <layout_panel diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml index dd27595cdb..bacc750e86 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel   follows="left|right|top" - height="10" + height="9"   layout="topleft"   left="8"   name="chat_separator_container"> @@ -12,5 +12,5 @@       height="1"       layout="topleft"       name="chat_separator_panel" -     top_pad="5" /> +     top_pad="3" />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index 3f49bfad36..6eec0ffe7a 100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml @@ -8,7 +8,7 @@   top="0"   width="320">      <icon -     follows="top|right|left"  +     follows="top|right|left"       height="24"       image_name="ListItem_Over"       layout="topleft" @@ -29,14 +29,14 @@       width="320" />      <icon       follows="top|left" -     height="18" -     image_name="icon_group.tga" +     height="20" +     image_name="Generic_Group"       layout="topleft"       left="5"       mouse_opaque="true" -     name="group_icon"  +     name="group_icon"       top="4" -     width="18" /> +     width="20" />      <text       follows="left|right"       font="SansSerifSmall" @@ -44,23 +44,20 @@       layout="topleft"       left_pad="5"       name="group_name" -     text_color="white"       top="7" -     use_ellipses="true"  +     use_ellipses="true"       value="Unknown"       width="263" />      <button       follows="right" -     height="18" -     image_disabled="Info" -     image_disabled_selected="Info" -     image_hover_selected="Info" -     image_selected="Info" -     image_unselected="Info" +     height="16" +     image_pressed="Info_Press" +     image_hover="Info_Over" +     image_unselected="Info_Off"       layout="topleft"       name="info_btn"       picture_style="true"       right="-5" -     top="4"  -     width="18" /> +     top="4" +     width="16" />  </panel> 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 3c8bf31e13..4219d9f58f 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 @@ -18,7 +18,7 @@       left_delta="7"       left="0"       name="chat_box" -     tool_tip="Press Enter to say, Ctrl+Enter to shout." +     tool_tip="Press Enter to say, Ctrl+Enter to shout"       top="3"       width="250" />      <output_monitor @@ -41,7 +41,8 @@       layout="topleft"        left_pad="5"       label="Log"  -     height="20"> +     height="20" +     tool_tip="Shows/hides nearby chat log">      <button.commit_callback function="Floater.Toggle" parameter="nearby_chat"/>      </button>      <chiclet_talk @@ -54,7 +55,9 @@       left_pad="5"       name="talk"       top="3" -     width="100" /> +     width="100" +     speak_button.tool_tip="Turns microphone on/off" +     show_button.tool_tip="Shows/hides voice control panel" />      <gesture_combo_box        follows="right"       height="20" @@ -63,5 +66,6 @@       name="Gesture"       left_pad="5"       top="3" -     width="90" /> +     width="90" +     tool_tip="Shows/hides gestures" />  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index e53edf891d..8274beb538 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel  background_visible="true" -color="DkGray" + draw_border="false"   follows="all"   height="570"   label="People" @@ -39,24 +39,26 @@ color="DkGray"       height="23"       layout="topleft"       left="15" +     label="Filter"       max_length="300"       name="filter_input" -     text_color="black" +     text_color="Black"       top="3" -     width="300" /> +     width="303" />      <tab_container       follows="all" -     height="488" +     height="500"       layout="topleft"       left="10"       name="tabs" -     bevel_style="in" +     tab_min_width="70" +     tab_height="30"       tab_position="top" -     top_pad="15" +     top_pad="10"       width="313">          <panel -          follows="all" -         height="488" +         follows="all" +         height="500"           label="Nearby"           layout="topleft"           left="0" @@ -66,7 +68,7 @@ color="DkGray"           width="313">              <avatar_list               follows="all" -             height="430" +             height="470"               layout="topleft"               left="0"               name="avatar_list" @@ -74,9 +76,6 @@ color="DkGray"               volume_column_width="20"               width="313" />              <panel -             background_visible="true" -             bevel_style="none" -            top_pad="0"               follows="left|right|bottom"               height="30"               label="bottom_panel" @@ -86,7 +85,7 @@ color="DkGray"               width="313">               <button               follows="bottom|left" -             tool_tip="Change sort and view of residents list" +             tool_tip="Options"               height="18"               image_disabled="OptionsMenu_Disabled"               image_selected="OptionsMenu_Press" @@ -100,11 +99,8 @@ color="DkGray"              </panel>          </panel>          <panel -         background_visible="true" -         bevel_style="none"           follows="all" -             color="DkGray2" -         height="460" +         height="500"           left="0"           top="0"           label="Friends" @@ -114,7 +110,7 @@ color="DkGray"           width="313">              <accordion               follows="all" -             height="430" +             height="470"               layout="topleft"               left="0"               name="friends_accordion" @@ -153,9 +149,6 @@ color="DkGray"                  </accordion_tab>              </accordion>              <panel -             background_visible="true" -             bevel_style="none" -             top_pad="0"               follows="left|right|bottom"               height="30"               label="bottom_panel" @@ -165,7 +158,7 @@ color="DkGray"               width="313">                 <button                 follows="bottom|left" -               tool_tip="Change sort and view of friends list" +               tool_tip="Options"                 height="18"                 image_disabled="OptionsMenu_Disabled"                 image_selected="OptionsMenu_Press" @@ -196,7 +189,8 @@ color="DkGray"                   image_unselected="TrashItem_Off"                   image_disabled="TrashItem_Disabled"                   layout="topleft" -                 left_pad="230" +                 left_pad="10" +                 right="-10"                   name="del_btn"                   picture_style="true"                   tool_tip="Remove selected person from your Friends list" @@ -205,10 +199,8 @@ color="DkGray"              </panel>          </panel>          <panel -         background_visible="true" -         bevel_style="none"           follows="all" -         height="390" +         height="500"           label="Groups"           top="0"           layout="topleft" @@ -217,16 +209,13 @@ color="DkGray"           width="313">              <group_list               follows="all" -             height="357" +             height="470"               layout="topleft" -             color="DkGray2"               left="0"               name="group_list" -             top="2" +             top="0"               width="313" />              <panel -             background_visible="true" -             bevel_style="none"               top_pad="0"               follows="left|right|bottom"               height="30" @@ -237,7 +226,7 @@ color="DkGray"               width="313">                 <button                 follows="bottom|left" -               tool_tip="Change sort and view of groups list" +               tool_tip="Options"                 height="18"                 image_disabled="OptionsMenu_Disabled"                 image_selected="OptionsMenu_Press" @@ -246,7 +235,7 @@ color="DkGray"                 left="10"                 name="groups_viewsort_btn"                 picture_style="true" -               top="5" +               top="7"                 width="18" />                  <button                   follows="bottom|left" @@ -265,8 +254,8 @@ color="DkGray"                   follows="bottom|left"                   height="10"                   image_hover_selected="Activate_Checkmark" -     image_selected="Activate_Checkmark" -     image_unselected="Activate_Checkmark" +                 image_selected="Activate_Checkmark" +                 image_unselected="Activate_Checkmark"                   layout="topleft"                   left_pad="24"                   name="activate_btn" @@ -280,7 +269,8 @@ color="DkGray"                   image_selected="TrashItem_Press"                   image_unselected="TrashItem_Off"                   layout="topleft" -                 left_pad="196" +                left_pad="10" +                 right="-10"                   name="minus_btn"                   picture_style="true"                   tool_tip="Leave selected group" @@ -289,20 +279,17 @@ color="DkGray"              </panel>          </panel>          <panel -         background_visible="true" -         bevel_style="none"           top="0"           follows="all" -         height="390" +         height="500"           label="Recent"           layout="topleft"           help_topic="people_recent_tab"           name="recent_panel"           width="313">              <avatar_list -             color="DkGray2"               follows="all" -             height="357" +             height="470"               layout="topleft"               left="0"               name="avatar_list" @@ -321,8 +308,7 @@ color="DkGray"               width="313">                 <button                 follows="bottom|left" -               font="SansSerifBigBold" -               tool_tip="Change sort and view of recent residents list" +               tool_tip="Options"                 height="18"                 image_disabled="OptionsMenu_Disabled"                 image_selected="OptionsMenu_Press" @@ -331,7 +317,7 @@ color="DkGray"                 left="10"                 name="recent_viewsort_btn"                 picture_style="true" -               top="5" +               top="7"                 width="18" />              </panel>          </panel> @@ -340,7 +326,7 @@ color="DkGray"       animate="false"       border_size="0"       follows="left|right|bottom" -     height="27" +     height="25"       layout="topleft"       left="10"       name="button_bar" @@ -357,8 +343,8 @@ color="DkGray"           width="65">              <button               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="Profile"               layout="topleft"               name="view_profile_btn" @@ -374,29 +360,29 @@ color="DkGray"           min_width="85"           name="add_friend_btn_panel"           top_delta="0" -         width="85"> +         width="50">              <button               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" -             label="Add Friend" +             font="SansSerifSmall" +             height="19" +             label="Add"               layout="topleft"               name="add_friend_btn"               tool_tip="Add selected resident to your friends List" -             width="85" /> +             width="50" />          </layout_panel>          <layout_panel           default_tab_group="1"           follows="left|top|right" -         height="25" +         height="19"           layout="topleft"           min_width="80"           name="group_info_btn_panel"           width="80">              <button               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="Group Profile"               layout="topleft"               name="group_info_btn" @@ -414,8 +400,8 @@ color="DkGray"           width="45">              <button               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="Chat"               layout="topleft"               name="chat_btn" @@ -433,8 +419,8 @@ color="DkGray"           width="35">              <button               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="IM"               layout="topleft"               name="im_btn" @@ -454,8 +440,8 @@ color="DkGray"              <button               enabled="false"               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="Call"               layout="topleft"               name="call_btn" @@ -472,15 +458,15 @@ color="DkGray"           width="65">              <button               follows="left|top|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="Teleport"               layout="topleft"               name="teleport_btn"               tool_tip="Offer teleport"               width="65" />          </layout_panel> -        <layout_panel +      <layout_panel           default_tab_group="1"           enabled="false"           follows="left|top|right" @@ -494,8 +480,8 @@ color="DkGray"              <button               enabled="false"               follows="top|left|right" -             font="SansSerifSmallBold" -             height="25" +             font="SansSerifSmall" +             height="19"               label="Share"               layout="topleft"               name="share_btn" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml new file mode 100644 index 0000000000..159323538c --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + height="500" + label="Popups" + layout="topleft" + left="0" + name="popups" + top="500" + width="517"> +    <text +     type="string" +     length="1" +     follows="top|left" +     height="12" +     layout="topleft" +     left="30" +     name="tell_me_label" +     top="10" +     width="300"> +        Tell me: +    </text> +    <check_box +     control_name="NotifyMoneyChange" +     height="16" +     label="When I spend or get L$" +     layout="topleft" +     left_delta="50" +     name="notify_money_change_checkbox" +     top_pad="4" +     width="300" /> +    <check_box +     control_name="ChatOnlineNotification" +	 enabled="false" +     height="16" +     label="When my friends log out or in" +     layout="topleft" +     left_delta="0" +     name="friends_online_notify_checkbox" +     top_pad="4" +     width="300" /> +    <text +     type="string" +     length="1" +     follows="top|left" +     font="SansSerifBold" +     height="12" +     layout="topleft" +     left="30" +     name="show_label" +     top_pad="14" +     width="450"> +        Always show these alerts: +    </text> +    <scroll_list +     follows="top|left" +     height="92" +     layout="topleft" +     left="10" +     multi_select="true"  +     name="enabled_popups" +     width="475" /> +	 <button +	 enabled_control="FirstSelectedDisabledPopups" +     follows="top|left" +     height="20" +     image_disabled="PushButton_Disabled" +     image_disabled_selected="PushButton_Disabled" +     image_overlay="Arrow_Up" +     image_selected="PushButton_Selected" +     image_unselected="PushButton_Off" +     hover_glow_amount="0.15" +     layout="topleft" +     left_delta="137" +     name="enable_this_popup" +     picture_style="true" +     top_pad="10" +     width="43"> +        <button.commit_callback +         function="Pref.ClickEnablePopup" /> +    </button> +    <button +	 enabled_control="FirstSelectedEnabledPopups" +	 follows="top|left" +     height="20" +     image_disabled="PushButton_Disabled" +     image_disabled_selected="PushButton_Disabled" +     image_overlay="Arrow_Down" +     image_selected="PushButton_Selected" +     image_unselected="PushButton_Off" +     hover_glow_amount="0.15" +     layout="topleft" +     left_pad="50" +     name="disable_this_popup" +     picture_style="true" +     top_delta="0" +     width="43"> +        <button.commit_callback +         function="Pref.ClickDisablePopup" /> +    </button> +    <text +     type="string" +     length="1" +     follows="top|left" +     font="SansSerifBold" +     height="12" +     layout="topleft" +     left="30" +     name="dont_show_label" +     top_pad="10" +     width="450"> +        Never show these alerts: +    </text> +    <scroll_list +     follows="top|left" +     height="92" +     layout="topleft" +     left="10" +     multi_select="true"  +     name="disabled_popups" +     width="475" /> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index f4696152f9..051cb51d25 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -29,7 +29,7 @@           height="16"           label="Medium"           layout="topleft" -         left_pad="12" +         left_delta="145"           name="radio2"           top_delta="0"           width="125" /> @@ -37,7 +37,7 @@           height="16"           label="Large"           layout="topleft" -         left_pad="12" +         left_delta="170"           name="radio3"           top_delta="0"           width="125" /> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 84fcf21623..519b469868 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -26,7 +26,7 @@       height="16"       label="Use fullscreen"       layout="topleft" -     left_delta="30" +     left_delta="50"       name="windowed mode"       top_pad="4"       width="175"> @@ -103,7 +103,7 @@       increment="0.025"       initial_value="1"       layout="topleft" -     left_delta="32" +     left_delta="52"       max_val="1.4"       min_val="0.75"       name="ui_scale_slider" @@ -304,7 +304,7 @@  		layout="topleft"  		left_delta="0"  		name="BasicShaders" -		tool_tip="Disabling this option may prevent some graphics card drivers from crashing." +		tool_tip="Disabling this option may prevent some graphics card drivers from crashing"  		top_pad="1"  		width="315">  			<check_box.commit_callback diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml new file mode 100644 index 0000000000..c4dc8834db --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="left|top|right|bottom" + height="408" + label="Communication" + layout="topleft" + left="102" + name="im" + top="1" + width="517"> +    <panel.string +     name="log_in_to_change"> +        log in to change +    </panel.string> +    <button +     follows="left|bottom" +     height="20" +     label="Clear History" +     layout="topleft" +     left="30" +     name="clear_cache" +     top="10" +     width="145"> +        <button.commit_callback +         function="Pref.WebClearCache" /> +    </button> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_pad="10" +     mouse_opaque="false" +     name="cache_size_label_l" +     top_delta="3" +     text_color="LtGray_50" +     width="300"> +       (Locations, images, web, search history) +    </text> +    <check_box +	 height="16" +	 enabled="false" +     label="Only friends and groups know I'm online" +     layout="topleft" +     left="30" +     name="online_visibility" +     top_pad="20" +     width="350" /> +    <check_box +     enabled_control="EnableVoiceChat" +     control_name="VoiceCallsFriendsOnly" +     height="16" +     label="Only friends and groups can call or IM me" +     layout="topleft" +     left="30" +     name="voice_call_friends_only_check" +     top_pad="10" +     width="350" /> +    <check_box +     enabled_control="EnableVoiceChat" +     control_name="AutoDisengageMic" +     height="16" +     label="Switch off microphone when ending calls" +     layout="topleft" +     left="30" +     name="auto_disengage_mic_check" +     top_pad="10" +     width="350" /> +    <check_box +     control_name="CookiesEnabled" +     height="16" +     label="Accept cookies" +     layout="topleft" +     left="30" +     name="cookies_enabled" +     top_pad="10" +     width="350" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="30" +     mouse_opaque="false" +     top_pad="10" +     width="350"> +        Logs: +    </text>     +    <check_box +	 enabled="false" +     control_name="LogInstantMessages" +     height="16" +     label="Save logs on my computer" +     layout="topleft" +     left="30" +     name="log_instant_messages" +     top_pad="10" +     width="350"> +        <check_box.commit_callback +         function="Pref.Logging" /> +    </check_box> +   <radio_group +     control_name="IMLogOptions" +     enabled="false" +     height="80" +     layout="topleft" +     left_delta="50" +     name="ChatIMLogs" +     width="350" +     top_pad="0"> +        <radio_item +         height="16" +         label="Chat" +         layout="topleft" +         left="0" +         name="radio1" +         top="3" +         width="200" /> +        <radio_item +         height="16" +         label="IM" +         layout="topleft" +         left_delta="0" +         name="radio2" +         top_pad="3" +         width="200" /> +        <radio_item +         height="16" +         label="Both, together" +         layout="topleft" +         left_delta="0" +         name="radio3" +         top_pad="3" +         width="200" /> +        <radio_item +         height="16" +         label="Both, separate" +         layout="topleft" +         left_delta="0" +         name="radio4" +         top_pad="3" +         width="200" /> +    </radio_group> +    <check_box +     control_name="LogTimestamp" +	 enabled="false" +     height="16" +     label="Add timestamp" +     layout="topleft" +     left_delta="0" +     name="show_timestamps_check_im" +     top_pad="10" +     width="237" /> +    <line_editor +     bottom="366" +     control_name="InstantMessageLogFolder" +     enabled="false" +     follows="top|left|right" +     halign="right" +     height="19" +     layout="topleft" +     left_delta="0" +     mouse_opaque="false" +     name="log_path_string" +     top_pad="5" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_delta="0" +     mouse_opaque="false" +     top_pad="1" +     width="128" +     text_color="LtGray_50"> +        Location of logs +    </text>     +    <button +	 enabled="false" +     follows="right|bottom" +     height="20" +     label="Browse" +     label_selected="Browse" +     layout="topleft" +     left_pad="115" +     name="log_path_button" +     top_delta="-21" +     width="145"> +        <button.commit_callback +         function="Pref.LogPath" /> +    </button> +    <button +     follows="left|bottom" +     height="20" +     label="Block List" +     layout="topleft" +     left="30" +     name="block_list" +     top_pad="20" +     width="145"> +        <button.commit_callback +         function="SideTray.ShowPanel" +		 parameter="panel_block_list_sidetray" /> +    </button> +    </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml new file mode 100644 index 0000000000..df347cfb5f --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -0,0 +1,341 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="left|top|right|bottom" + height="408" + label="Input & Camera" + layout="topleft" + left="102" + name="Input panel" + top="1" + width="517"> +    <button +     height="20" +     label="Other Devices" +     layout="topleft" +     left="30" +     name="joystick_setup_button" +     top="10" +     width="155"> +        <button.commit_callback +         function="Floater.Show" +         parameter="pref_joystick" /> +    </button> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="30" +     name="Mouselook:" +     top_pad="10" +     width="300"> +        Mouselook: +    </text> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_delta="50" +     name=" Mouse Sensitivity" +     top_pad="10" +     width="150"> +        Mouse sensitivity +    </text> +    <slider +     control_name="MouseSensitivity" +     follows="left|top" +     height="15" +     initial_value="2" +     layout="topleft" +     show_text="false" +     left_delta="150" +     max_val="15" +     name="mouse_sensitivity" +     top_delta="0" +     width="145" /> +    <check_box +     control_name="InvertMouse" +     height="16" +     label="Invert" +     layout="topleft" +     left_pad="2" +     name="invert_mouse" +     top_delta="0" +     width="128" /> +        <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="30" +     name="Network:" +     mouse_opaque="false" +     top_pad="4" +     width="300"> +        Network: +    </text> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_delta="50" +     name="Maximum bandwidth" +     mouse_opaque="false" +     top_pad="10" +     width="200"> +        Maximum bandwidth +    </text> +    <slider +     can_edit_text="true" +     control_name="ThrottleBandwidthKBPS" +     decimal_digits="0" +     follows="left|top" +     height="15" +     increment="10" +     initial_value="50" +     layout="topleft" +     left_delta="150" +     max_val="1500" +     min_val="50" +     name="max_bandwidth" +     top_delta="0" +     width="180" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_pad="6" +     mouse_opaque="false" +     name="text_box2" +     top_delta="1" +     width="200"> +        kbps +    </text> +    <check_box +     control_name="ConnectionPortEnabled" +	 height="16" +     label="Custom port" +     layout="topleft" +     left="77" +     name="connection_port_enabled" +     top_pad="20" +     width="256"> +        <check_box.commit_callback +         function="Notification.Show"  +		 parameter="ChangeConnectionPort" /> +    </check_box> +    <spinner +     control_name="BrowserProxyPort" +     enabled_control="BrowserProxyEnabled" +	 decimal_digits="0" +     follows="left|top" +     height="16" +     increment="1" +     initial_value="80" +     label="Port Number:" +     label_width="75" +     layout="topleft" +     left_delta="160" +     max_val="12000" +     min_val="10" +     name="web_proxy_port" +     top_delta="-2" +     width="140" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="80" +     mouse_opaque="false" +     name="cache_size_label_l" +     top_pad="20" +     width="200"> +        Cache size +    </text> +    <slider +     can_edit_text="true" +     control_name="CacheSize" +     decimal_digits="0" +     follows="left|top" +     height="15" +     increment="10" +     initial_value="50" +     layout="topleft" +     left_delta="150" +     max_val="1000" +     min_val="10" +     name="cache_size" +     top_delta="-1" +     width="180" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_pad="6" +     mouse_opaque="false" +     name="text_box5" +     top_delta="1" +     width="40"> +        MB +    </text> +    <line_editor +     control_name="CacheLocationTopFolder" +     border_style="line" +     border_thickness="1" +     enabled="false" +     follows="left|top" +     font="SansSerif" +     handle_edit_keys_directly="true" +     height="20" +     layout="topleft" +     left="80" +     max_length="4096" +     name="cache_location" +     top_pad="20" +     width="205" /> +    <button +     follows="left|top" +     height="22" +     label="Browse" +     label_selected="Browse" +     layout="topleft" +     left_pad="5" +     name="set_cache" +     top_delta="-1" +     width="100"> +        <button.commit_callback +         function="Pref.SetCache" /> +    </button> +   <button +     follows="left|top" +     height="22" +     label="Reset" +     label_selected="Set" +     layout="topleft" +     left_pad="3" +     name="reset_cache" +     top_delta="0" +     width="100"> +        <button.commit_callback +         function="Pref.ResetCache" /> +    </button> + +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="80" +     name="Cache location" +     top_delta="20" +     width="300" +     text_color="LtGray_50"> +        Cache location +    </text> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="30" +     name="Web:" +     top_pad="5" +     width="300"> +        Web: +    </text> +    <radio_group +     control_name="UseExternalBrowser" +     draw_border="false" +     follows="top|left" +     height="40" +     layout="topleft" +     left_delta="50" +     name="use_external_browser" +     top_pad="4" +     width="480"> +        <radio_item +         height="20" +         label="Use built-in browser" +         layout="topleft" +		 left="0" +		 name="internal" +         tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]." +		 top="0" +         width="480" /> +		<radio_item +         height="20" +         label="Use my browser (IE, Firefox)" +         layout="topleft" +         left_delta="0" +         name="external" +         tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen." +         top_delta="20" +         width="480" /> +    </radio_group> +     +   <check_box +     top_delta="4" +     enabled="true" +     follows="left|top" +     height="16" +     initial_value="false" +     label="Web Proxy" +     left_delta="0" +     mouse_opaque="true" +     name="web_proxy_enabled" +     radio_style="false" +     width="400" /> +    <line_editor +     control_name="BrowserProxyAddress" +     enabled_control="BrowserProxyEnabled" +	 follows="left|top" +     font="SansSerif" +     height="20" +     layout="topleft" +     left_delta="1" +     name="web_proxy_editor" +     tool_tip="The name or IP address of the proxy you would like to use" +     top_pad="4" +     width="200" /> +    <button +     follows="left|top" +     height="22" +     enabled="false" +     label="Browse" +     label_selected="Browse" +     layout="topleft" +     left_pad="5" +     name="set_proxy" +     top_pad="-21" +     width="100"> +        <button.commit_callback +         function="Pref.SetCache" /> +    </button> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_delta="-203" +     name="Proxy location" +     top_delta="20" +     width="300" +     text_color="LtGray_50"> +        Proxy location +    </text></panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml new file mode 100644 index 0000000000..f5f9850a4e --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -0,0 +1,457 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + border="true" + follows="left|top|right|bottom" + height="408" + label="Audio & Video" + layout="topleft" + left="102" + name="Preference Media panel" + top="1" + width="517"> +    <slider +     control_name="AudioLevelMaster" +     follows="left|top" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="Master Volume" +     label_width="125" +     layout="topleft" +     left="30" +     name="System Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="425"> +        <slider.commit_callback +         function="Pref.setControlFalse" +         parameter="MuteAudio" /> +    </slider> +    <button +     control_name="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_audio" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <check_box +     control_name="MuteWhenMinimized" +     height="16" +     initial_value="true" +     label="Mute if minimized" +     layout="topleft" +     left="165" +     name="mute_when_minimized" +     top_pad="5" +     width="215" /> +    <slider +     control_name="AudioLevelAmbient" +     disabled_control="MuteAudio" +     follows="left|topt" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="Ambient" +     label_width="125" +     layout="topleft" +     left="30" +     name="Wind Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="300"> +        <slider.commit_callback +         function="Pref.setControlFalse" +         parameter="MuteAmbient" /> +    </slider> +    <button +     control_name="MuteAmbient" +     disabled_control="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_wind" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <slider +     control_name="AudioLevelSFX" +     disabled_control="MuteAudio" +     follows="left|top" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="Sounds" +     label_width="125" +     layout="topleft" +     left="30" +     name="SFX Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="300"> +        <slider.commit_callback +         function="Pref.setControlFalse" +         parameter="MuteSounds" /> +    </slider> +    <button +     control_name="MuteSounds" +     disabled_control="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_sfx" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <slider +     control_name="AudioLevelMedia" +     disabled_control="MuteAudio" +     follows="left|top" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="Media" +     label_width="125" +     layout="topleft" +     left="30" +     name="Media Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="300"> +    <slider.commit_callback +     function="Pref.setControlFalse" +     parameter="MuteMedia" /> +    </slider> +    <button +     control_name="MuteMedia" +     disabled_control="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_media" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <slider +     control_name="AudioLevelUI" +     disabled_control="MuteAudio" +     follows="left|top" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="UI" +     label_width="125" +     layout="topleft" +     left="30" +     name="UI Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="300"> +        <slider.commit_callback +         function="Pref.setControlFalse" +         parameter="MuteUI" /> +    </slider> +    <button +     control_name="MuteUI" +     disabled_control="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_ui" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <slider +     control_name="AudioLevelMusic" +     disabled_control="MuteAudio" +     follows="left|top" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="Music" +     label_width="125" +     layout="topleft" +     left="30" +     name="Music Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="300"> +        <slider.commit_callback +         function="Pref.setControlFalse" +         parameter="MuteMusic" /> +    </slider> +    <button +     control_name="MuteMusic" +     disabled_control="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_music" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <slider +     control_name="AudioLevelVoice" +     disabled_control="MuteAudio" +     follows="left|top" +     height="15" +     increment="0.05" +     initial_value="0.5" +     label="Voice" +     label_width="125" +     layout="topleft" +     left="30" +     name="Voice Volume" +     show_text="false" +     top_pad="5" +     volume="true" +     width="300"> +        <slider.commit_callback +         function="Pref.setControlFalse" +         parameter="MuteVoice" /> +    </slider> +    <button +     control_name="MuteVoice" +     disabled_control="MuteAudio" +     follows="top|right" +     height="16" +     image_selected="icn_speaker-muted_dark.tga" +     image_unselected="icn_speaker_dark.tga" +     is_toggle="true" +     layout="topleft" +     left_pad="30" +     name="mute_voice" +     picture_style="true" +     tab_stop="false" +     top_delta="-1" +     width="25" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left="30" +     name="Listen from" +     top_pad="5" +     width="100"> +        Listen from: +    </text> +    <radio_group +	 enabled_control="EnableVoiceChat" +	 control_name="VoiceEarLocation" +     draw_border="false" +     height="40" +     layout="topleft" +     left_delta="50" +     name="ear_location" +     top_pad="0" +     width="364"> +        <radio_item +         height="16" +         label="Listen from camera position" +         layout="topleft" +         left="3" +         name="0" +         top="3" +         width="315" /> +        <radio_item +         height="16" +         label="Listen from avatar position" +         layout="topleft" +         left_delta="0" +         name="1" +         top_delta="16" +         width="315" /> +    </radio_group> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left="30" +     name="Sound out/in" +     top_pad="2" +     width="100"> +        Sound out/in: +    </text> +    <button +	 enabled_control="EnableVoiceChat" +     follows="left|top" +     height="20" +     label="Device Settings" +     layout="topleft" +     left_delta="55" +     name="device_settings_btn" +     top_pad="0" +     width="155"> +		<button.commit_callback +         function="Floater.Show" +         parameter="pref_voicedevicesettings" /> +    </button>     +    <panel.string +     name="default_text"> +        Default +    </panel.string> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left="30" +     name="Input device (microphone):" +     top_pad="5" +     width="200"> +        Input device (microphone): +    </text> +    <combo_box +     height="18" +     layout="topleft" +     left_delta="70" +     max_chars="128" +     name="voice_input_device" +     top_pad="2" +     width="225" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left="30" +     name="Output device (speakers):" +     top_pad="5" +     width="200"> +        Output device (speakers): +    </text> +    <combo_box +     height="18" +     layout="topleft" +     left_delta="70" +     max_chars="128" +     name="voice_output_device" +     top_pad="2" +     width="225" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left="30" +     name="Input level:" +     top_pad="10" +     width="200"> +        Input Level +    </text> +    <slider_bar +     follows="left|top" +     height="17" +     increment="0.05" +     initial_value="1.0" +     layout="topleft" +     left_delta="125" +     max_val="2" +     name="mic_volume_slider" +     tool_tip="Change the volume using this slider" +     top_delta="-1" +     width="175" /> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="20" +     layout="topleft" +     left_pad="5" +     name="wait_text" +     top_delta="1" +     width="200"> +        Please wait +    </text> +    <locate +     height="20" +     layout="topleft" +     left_delta="0" +     name="bar0" +     top_delta="5" +     width="20" /> +    <locate +     height="20" +     layout="topleft" +     left_pad="2" +     name="bar1" +     top_delta="0" +     width="20" /> +    <locate +     height="20" +     layout="topleft" +     left_pad="2" +     name="bar2" +     top_delta="0" +     width="20" /> +    <locate +     height="20" +     layout="topleft" +     left_pad="2" +     name="bar3" +     top_delta="0" +     width="20" /> +    <locate +     height="20" +     layout="topleft" +     left_pad="2" +     name="bar4" +     top_delta="0" +     width="20" /> +    <text +     type="string" +     height="40" +     left="30" +     name="voice_intro_text1" +     top_pad="-4" +     width="480" +     word_wrap="true"> +        Adjust the slider to control how loud you sound to other Residents. To test the input level, simply speak into your microphone. +    </text> + +     +</panel> diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml index 8078579806..888b4eaf7c 100644 --- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <flat_list_view   allow_select="true" - color="DkGray2" + color="PanelFocusBackgroundColor"   item_pad="0"   keep_one_selected="true"   multi_select="false" diff --git a/indra/newview/skins/default/xui/en/widgets/textbase.xml b/indra/newview/skins/default/xui/en/widgets/textbase.xml index e5dc022633..6dd92ea34b 100644 --- a/indra/newview/skins/default/xui/en/widgets/textbase.xml +++ b/indra/newview/skins/default/xui/en/widgets/textbase.xml @@ -1,4 +1,2 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<textbase allow_scroll="true" -          h_pad="5" -          v_pad="5"/> +<textbase/> | 
