diff options
Diffstat (limited to 'indra/llui/lltextbase.cpp')
| -rwxr-xr-x | indra/llui/lltextbase.cpp | 53 | 
1 files changed, 43 insertions, 10 deletions
| diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 602a703450..bf660849c4 100755 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -37,6 +37,7 @@  #include "lltextparser.h"  #include "lltextutil.h"  #include "lltooltip.h" +#include "lltrans.h"  #include "lluictrl.h"  #include "llurlaction.h"  #include "llurlregistry.h" @@ -2060,27 +2061,33 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para  			// add icon before url if need  			LLTextUtil::processUrlMatch(&match, this, isContentTrusted() || match.isTrusted()); +			if ((isContentTrusted() || match.isTrusted()) && !match.getIcon().empty() ) +			{ +				setLastSegmentToolTip(LLTrans::getString("TooltipSLIcon")); +			}  			// output the styled Url  			appendAndHighlightTextImpl(match.getLabel(), part, link_params, match.underlineOnHoverOnly()); +			bool tooltip_required =  !match.getTooltip().empty(); + +			// set the tooltip for the Url label +			if (tooltip_required) +			{ +				setLastSegmentToolTip(match.getTooltip()); +			} -			// show query part of url with gray color only for LLUrlEntryHTTP and LLUrlEntryHTTPNoProtocol url entries +			// show query part of url with gray color only for LLUrlEntryHTTP url entries  			std::string label = match.getQuery();  			if (label.size())  			{  				link_params.color = LLColor4::grey;  				link_params.readonly_color = LLColor4::grey;  				appendAndHighlightTextImpl(label, part, link_params, match.underlineOnHoverOnly()); -			} -			 -			// set the tooltip for the Url label -			if (! match.getTooltip().empty()) -			{ -				segment_set_t::iterator it = getSegIterContaining(getLength()-1); -				if (it != mSegments.end()) + +				// set the tooltip for the query part of url +				if (tooltip_required)  				{ -					LLTextSegmentPtr segment = *it; -					segment->setToolTip(match.getTooltip()); +					setLastSegmentToolTip(match.getTooltip());  				}  			} @@ -2107,6 +2114,16 @@ void LLTextBase::appendTextImpl(const std::string &new_text, const LLStyle::Para  	}  } +void LLTextBase::setLastSegmentToolTip(const std::string &tooltip) +{ +	segment_set_t::iterator it = getSegIterContaining(getLength()-1); +	if (it != mSegments.end()) +	{ +		LLTextSegmentPtr segment = *it; +		segment->setToolTip(tooltip); +	} +} +  static LLTrace::BlockTimerStatHandle FTM_APPEND_TEXT("Append Text");  void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, const LLStyle::Params& input_params) @@ -3557,6 +3574,22 @@ S32	 LLImageTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin  	return 0;  } +BOOL LLImageTextSegment::handleToolTip(S32 x, S32 y, MASK mask) +{ +	if (!mTooltip.empty()) +	{ +		LLToolTipMgr::instance().show(mTooltip); +		return TRUE; +	} + +	return FALSE; +} + +void LLImageTextSegment::setToolTip(const std::string& tooltip) +{ +	mTooltip = tooltip; +} +  F32	LLImageTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)  {  	if ( (start >= 0) && (end <= mEnd - mStart)) | 
