diff options
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llflatlistview.cpp | 47 | ||||
| -rw-r--r-- | indra/llui/llflatlistview.h | 5 | ||||
| -rw-r--r-- | indra/llui/lllineeditor.cpp | 6 | ||||
| -rw-r--r-- | indra/llui/llnotifications.h | 2 | ||||
| -rw-r--r-- | indra/llui/lltextbase.cpp | 2 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/llurlentry.cpp | 2 | 
7 files changed, 46 insertions, 25 deletions
| diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 92993650a7..2481249f91 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -42,8 +42,6 @@ static const LLDefaultChildRegistry::Register<LLFlatListView> flat_list_view("fl  const LLSD SELECTED_EVENT	= LLSD().with("selected", true);  const LLSD UNSELECTED_EVENT	= LLSD().with("selected", false); -static const std::string COMMENT_TEXTBOX = "comment_text"; -  //forward declaration  bool llsds_are_equal(const LLSD& llsd_1, const LLSD& llsd_2); @@ -51,7 +49,8 @@ LLFlatListView::Params::Params()  :	item_pad("item_pad"),  	allow_select("allow_select"),  	multi_select("multi_select"), -	keep_one_selected("keep_one_selected") +	keep_one_selected("keep_one_selected"), +	no_items_text("no_items_text")  {};  void LLFlatListView::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */) @@ -295,19 +294,6 @@ void LLFlatListView::resetSelection(bool no_commit_on_deselection /*= false*/)  void LLFlatListView::setNoItemsCommentText(const std::string& comment_text)  { -	if (NULL == mNoItemsCommentTextbox) -	{ -		LLRect comment_rect = getRect(); -		comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight()); -		comment_rect.stretch(-getBorderWidth()); -		LLTextBox::Params text_p; -		text_p.name(COMMENT_TEXTBOX); -		text_p.border_visible(false); -		text_p.rect(comment_rect); -		text_p.follows.flags(FOLLOWS_ALL); -		mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this); -	} -  	mNoItemsCommentTextbox->setValue(comment_text);  } @@ -361,7 +347,6 @@ bool LLFlatListView::updateValue(const LLSD& old_value, const LLSD& new_value)  // PROTECTED STUFF  ////////////////////////////////////////////////////////////////////////// -  LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)  :	LLScrollContainer(p)    , mItemComparator(NULL) @@ -398,6 +383,25 @@ LLFlatListView::LLFlatListView(const LLFlatListView::Params& p)  	params.bevel_style(LLViewBorder::BEVEL_IN);  	mSelectedItemsBorder = LLUICtrlFactory::create<LLViewBorder> (params);  	mItemsPanel->addChild( mSelectedItemsBorder ); + +	{ +		// create textbox for "No Items" comment text +		LLTextBox::Params text_p = p.no_items_text; +		if (!text_p.rect.isProvided()) +		{ +			LLRect comment_rect = getRect(); +			comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight()); +			comment_rect.stretch(-getBorderWidth()); +			text_p.rect(comment_rect); +		} +		text_p.border_visible(false); + +		if (!text_p.follows.isProvided()) +		{ +			text_p.follows.flags(FOLLOWS_ALL); +		} +		mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this); +	}  };  // virtual @@ -861,7 +865,11 @@ void LLFlatListView::notifyParentItemsRectChanged()  	// take into account comment text height if exists  	if (mNoItemsCommentTextbox && mNoItemsCommentTextbox->getVisible())  	{ +		// top text padding inside the textbox is included into the height  		comment_height = mNoItemsCommentTextbox->getTextPixelHeight(); + +		// take into account a distance from parent's top border to textbox's top +		comment_height += getRect().getHeight() - mNoItemsCommentTextbox->getRect().mTop;  	}  	LLRect req_rect =  getItemsRect(); @@ -892,6 +900,10 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const  	{  		if (visible)  		{ +/* +// *NOTE: MA 2010-02-04 +// Deprecated after params of the comment text box were moved into widget (flat_list_view.xml) +// can be removed later if nothing happened.  			// We have to update child rect here because of issues with rect after reshaping while creating LLTextbox  			// It is possible to have invalid LLRect if Flat List is in LLAccordionTab  			LLRect comment_rect = getLocalRect(); @@ -903,6 +915,7 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const  			LLViewBorder* scroll_border = getChild<LLViewBorder>("scroll border");  			comment_rect.stretch(-scroll_border->getBorderWidth());  			mNoItemsCommentTextbox->setRect(comment_rect); +*/  		}  		mNoItemsCommentTextbox->setVisible(visible);  	} diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 949a731507..92cb40332e 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -35,8 +35,8 @@  #include "llpanel.h"  #include "llscrollcontainer.h" +#include "lltextbox.h" -class LLTextBox;  /**   * LLFlatListView represents a flat list ui control that operates on items in a form of LLPanel's. @@ -108,6 +108,9 @@ public:  		/** padding between items */  		Optional<U32> item_pad;  +		/** textbox with info message when list is empty*/ +		Optional<LLTextBox::Params> no_items_text; +  		Params();  	}; diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index eb2b4f7705..3e277f47b5 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -422,12 +422,16 @@ void LLLineEditor::setCursor( S32 pos )  	S32 old_cursor_pos = getCursor();  	mCursorPos = llclamp( pos, 0, mText.length()); +	// position of end of next character after cursor  	S32 pixels_after_scroll = findPixelNearestPos();  	if( pixels_after_scroll > mTextRightEdge )  	{  		S32 width_chars_to_left = mGLFont->getWidth(mText.getWString().c_str(), 0, mScrollHPos);  		S32 last_visible_char = mGLFont->maxDrawableChars(mText.getWString().c_str(), llmax(0.f, (F32)(mTextRightEdge - mTextLeftEdge + width_chars_to_left)));  -		S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), getCursor()); +		// character immediately to left of cursor should be last one visible (SCROLL_INCREMENT_ADD will scroll in more characters) +		// or first character if cursor is at beginning +		S32 new_last_visible_char = llmax(0, getCursor() - 1); +		S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), new_last_visible_char);  		if (old_cursor_pos == last_visible_char)  		{  			mScrollHPos = llmin(mText.length(), llmax(min_scroll, mScrollHPos + SCROLL_INCREMENT_ADD)); diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index d55e0f4043..8d993b71d7 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -371,7 +371,7 @@ private:  	// this is just for making it easy to look things up in a set organized by UUID -- DON'T USE IT  	// for anything real! - LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mTemporaryResponder(false) {} + LLNotification(LLUUID uuid) : mId(uuid), mCancelled(false), mRespondedTo(false), mIgnored(false), mPriority(NOTIFICATION_PRIORITY_UNSPECIFIED), mTemporaryResponder(false) {}  	void cancel(); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 75ca6d8895..2b1e2b8226 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2333,8 +2333,6 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele  	LLColor4 color = (mEditor.getReadOnly() ? mStyle->getReadOnlyColor() : mStyle->getColor())  % alpha; -	font = mStyle->getFont(); -    	if( selection_start > seg_start )  	{  		// Draw normally diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 7a19b7427c..3fdb48b3ca 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -720,7 +720,10 @@ BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)  	}  	if (!LLTextBase::handleRightMouseDown(x, y, mask))  	{ -		showContextMenu(x, y); +		if(getMouseOpaque()) +		{ +			showContextMenu(x, y); +		}  	}  	return TRUE;  } @@ -2507,7 +2510,7 @@ void LLTextEditor::updateLinkSegments()  			// then update the link's HREF to be the same as the label text.  			// This lets users edit Urls in-place.  			LLStyleConstSP style = segment->getStyle(); -			LLStyle* new_style = new LLStyle(*style); +			LLStyleSP new_style(new LLStyle(*style));  			LLWString url_label = wtext.substr(segment->getStart(), segment->getEnd()-segment->getStart());  			if (LLUrlRegistry::instance().hasUrl(url_label))  			{ diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index b20de914a0..92b7816bdd 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -232,7 +232,7 @@ std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) const  LLUrlEntrySLURL::LLUrlEntrySLURL()  {  	// see http://slurl.com/about.php for details on the SLURL format -	mPattern = boost::regex("http://slurl.com/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*", +	mPattern = boost::regex("http://(maps.secondlife.com|slurl.com)/secondlife/\\S+/?(\\d+)?/?(\\d+)?/?(\\d+)?/?\\S*",  							boost::regex::perl|boost::regex::icase);  	mMenuName = "menu_url_slurl.xml";  	mTooltip = LLTrans::getString("TooltipSLURL"); | 
