diff options
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llaccordionctrltab.cpp | 8 | ||||
| -rw-r--r-- | indra/llui/lldraghandle.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/lldraghandle.h | 3 | ||||
| -rw-r--r-- | indra/llui/llflatlistview.h | 5 | ||||
| -rw-r--r-- | indra/llui/llfloater.cpp | 52 | ||||
| -rw-r--r-- | indra/llui/llfloater.h | 11 | ||||
| -rw-r--r-- | indra/llui/lltextbase.cpp | 11 | 
7 files changed, 71 insertions, 26 deletions
| diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index e12776f83a..0959722aa6 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -465,10 +465,11 @@ void LLAccordionCtrlTab::setHeaderVisible(bool value)  	reshape(getRect().getWidth(), getRect().getHeight(), FALSE);  }; -//vurtual +//virtual  BOOL LLAccordionCtrlTab::postBuild()  { -	mHeader->setVisible(mHeaderVisible); +	if(mHeader) +		mHeader->setVisible(mHeaderVisible);  	static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); @@ -504,7 +505,8 @@ BOOL LLAccordionCtrlTab::postBuild()  		mScrollbar->setVisible(false);  	} -	mContainerPanel->setVisible(mDisplayChildren); +	if(mContainerPanel) +		mContainerPanel->setVisible(mDisplayChildren);  	return LLUICtrl::postBuild();  } diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index 832f148902..9d4e2fa495 100644 --- a/indra/llui/lldraghandle.cpp +++ b/indra/llui/lldraghandle.cpp @@ -248,15 +248,14 @@ void LLDragHandleTop::reshapeTitleBox()  		return;  	}  	const LLFontGL* font = LLFontGL::getFontSansSerif(); -	S32 title_width = font->getWidth( mTitleBox->getText() ) + TITLE_HPAD; -	if (getMaxTitleWidth() > 0) -		title_width = llmin(title_width, getMaxTitleWidth()); +	S32 title_width = getRect().getWidth(); +	title_width -= 2 * LEFT_PAD + 2 * BORDER_PAD + getButtonsRect().getWidth();  	S32 title_height = llround(font->getLineHeight());  	LLRect title_rect;  	title_rect.setLeftTopAndSize(   		LEFT_PAD,   		getRect().getHeight() - title_vpad, -		getRect().getWidth() - LEFT_PAD - RIGHT_PAD, +		title_width,  		title_height);  	// calls reshape on mTitleBox diff --git a/indra/llui/lldraghandle.h b/indra/llui/lldraghandle.h index dc5410787b..825bc9303e 100644 --- a/indra/llui/lldraghandle.h +++ b/indra/llui/lldraghandle.h @@ -71,6 +71,8 @@ public:  	BOOL			getForeground() const		{ return mForeground; }  	void			setMaxTitleWidth(S32 max_width) {mMaxTitleWidth = llmin(max_width, mMaxTitleWidth); }  	S32				getMaxTitleWidth() const { return mMaxTitleWidth; } +	void			setButtonsRect(const LLRect& rect){ mButtonsRect = rect; } +	LLRect			getButtonsRect() { return mButtonsRect; }  	void			setTitleVisible(BOOL visible);  	virtual void	setTitle( const std::string& title ) = 0; @@ -88,6 +90,7 @@ protected:  	LLTextBox*		mTitleBox;  private: +	LLRect			mButtonsRect;  	S32				mDragLastScreenX;  	S32				mDragLastScreenY;  	S32				mLastMouseScreenX; diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 837fbb36b7..dc6400c926 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -379,11 +379,14 @@ private:  	void setNoItemsCommentVisible(bool visible) const; -private: +protected:  	/** Comparator to use when sorting the list. */  	const ItemComparator* mItemComparator; + +private: +  	LLPanel* mItemsPanel;  	S32 mItemsNoScrollWidth; diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index a9accc0ba6..e672252a50 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -346,7 +346,7 @@ void LLFloater::layoutDragHandle()  		rect = getLocalRect();  	}  	mDragHandle->setRect(rect); -	updateButtons(); +	updateTitleButtons();  	applyTitle();  } @@ -1061,11 +1061,10 @@ void LLFloater::setMinimized(BOOL minimize)  		// Reshape *after* setting mMinimized  		reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE );  	} -	 -	applyTitle ();  	make_ui_sound("UISndWindowClose"); -	updateButtons(); +	updateTitleButtons(); +	applyTitle ();  }  void LLFloater::setFocus( BOOL b ) @@ -1121,6 +1120,7 @@ void LLFloater::setIsChrome(BOOL is_chrome)  		setFocus(FALSE);  		// can't Ctrl-Tab to "chrome" floaters  		setFocusRoot(FALSE); +		mButtons[BUTTON_CLOSE]->setToolTip(LLStringExplicit(getButtonTooltip(Params(), BUTTON_CLOSE, is_chrome)));  	}  	// no titles displayed on "chrome" floaters @@ -1190,7 +1190,7 @@ void LLFloater::setHost(LLMultiFloater* host)  		mButtonScale = 1.f;  		//mButtonsEnabled[BUTTON_TEAR_OFF] = FALSE;  	} -	updateButtons(); +	updateTitleButtons();  	if (host)  	{  		mHostHandle = host->getHandle(); @@ -1389,7 +1389,7 @@ void LLFloater::setCanDock(bool b)  			mButtonsEnabled[BUTTON_DOCK] = FALSE;  		}  	} -	updateButtons(); +	updateTitleButtons();  }  void LLFloater::setDocked(bool docked, bool pop_on_undock) @@ -1398,7 +1398,7 @@ void LLFloater::setDocked(bool docked, bool pop_on_undock)  	{  		mDocked = docked;  		mButtonsEnabled[BUTTON_DOCK] = !mDocked; -		updateButtons(); +		updateTitleButtons();  		storeDockStateControl();  	} @@ -1451,7 +1451,7 @@ void LLFloater::onClickTearOff(LLFloater* self)  		}  		self->setTornOff(false);  	} -	self->updateButtons(); +	self->updateTitleButtons();  }  // static @@ -1691,7 +1691,7 @@ void	LLFloater::setCanMinimize(BOOL can_minimize)  	mButtonsEnabled[BUTTON_MINIMIZE] = can_minimize && !isMinimized();  	mButtonsEnabled[BUTTON_RESTORE]  = can_minimize &&  isMinimized(); -	updateButtons(); +	updateTitleButtons();  }  void	LLFloater::setCanClose(BOOL can_close) @@ -1699,7 +1699,7 @@ void	LLFloater::setCanClose(BOOL can_close)  	mCanClose = can_close;  	mButtonsEnabled[BUTTON_CLOSE] = can_close; -	updateButtons(); +	updateTitleButtons();  }  void	LLFloater::setCanTearOff(BOOL can_tear_off) @@ -1707,7 +1707,7 @@ void	LLFloater::setCanTearOff(BOOL can_tear_off)  	mCanTearOff = can_tear_off;  	mButtonsEnabled[BUTTON_TEAR_OFF] = mCanTearOff && !mHostHandle.isDead(); -	updateButtons(); +	updateTitleButtons();  } @@ -1731,10 +1731,11 @@ void LLFloater::setCanDrag(BOOL can_drag)  	}  } -void LLFloater::updateButtons() +void LLFloater::updateTitleButtons()  {  	static LLUICachedControl<S32> floater_close_box_size ("UIFloaterCloseBoxSize", 0);  	static LLUICachedControl<S32> close_box_from_top ("UICloseBoxFromTop", 0); +	LLRect buttons_rect;  	S32 button_count = 0;  	for (S32 i = 0; i < BUTTON_COUNT; i++)  	{ @@ -1785,6 +1786,15 @@ void LLFloater::updateButtons()  					llround((F32)floater_close_box_size * mButtonScale));  			} +			if(!buttons_rect.isValid()) +			{ +				buttons_rect = btn_rect; +			} +			else +			{ +				mDragOnLeft ? buttons_rect.mRight + btn_rect.mRight :  +					buttons_rect.mLeft = btn_rect.mLeft; +			}  			mButtons[i]->setRect(btn_rect);  			mButtons[i]->setVisible(TRUE);  			// the restore button should have a tab stop so that it takes action when you Ctrl-Tab to a minimized floater @@ -1796,7 +1806,10 @@ void LLFloater::updateButtons()  		}  	}  	if (mDragHandle) -		mDragHandle->setMaxTitleWidth(getRect().getWidth() - (button_count * (floater_close_box_size + 1))); +	{ +		localRectToOtherView(buttons_rect, &buttons_rect, mDragHandle); +		mDragHandle->setButtonsRect(buttons_rect); +	}  }  void LLFloater::buildButtons(const Params& floater_params) @@ -1844,7 +1857,7 @@ void LLFloater::buildButtons(const Params& floater_params)  		p.click_callback.function(boost::bind(sButtonCallbacks[i], this));  		p.tab_stop(false);  		p.follows.flags(FOLLOWS_TOP|FOLLOWS_RIGHT); -		p.tool_tip = getButtonTooltip(floater_params, (EFloaterButton)i); +		p.tool_tip = getButtonTooltip(floater_params, (EFloaterButton)i, getIsChrome());  		p.scale_image(true);  		p.chrome(true); @@ -1853,7 +1866,7 @@ void LLFloater::buildButtons(const Params& floater_params)  		mButtons[i] = buttonp;  	} -	updateButtons(); +	updateTitleButtons();  }  // static @@ -1899,8 +1912,15 @@ LLUIImage* LLFloater::getButtonPressedImage(const Params& p, EFloaterButton e)  }  // static -std::string LLFloater::getButtonTooltip(const Params& p, EFloaterButton e) +std::string LLFloater::getButtonTooltip(const Params& p, EFloaterButton e, bool is_chrome)  { +	// EXT-4081 (Lag Meter: Ctrl+W does not close floater) +	// If floater is chrome set 'Close' text for close button's tooltip +	if(is_chrome && BUTTON_CLOSE == e) +	{ +		static std::string close_tooltip_chrome = LLTrans::getString("BUTTON_CLOSE_CHROME"); +		return close_tooltip_chrome; +	}  	// TODO: per-floater localizable tooltips set in XML  	return sButtonToolTips[e];  } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 97d2bda594..403723d9d8 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -311,19 +311,26 @@ protected:  	virtual	void	onClickCloseBtn(); +	virtual void	updateTitleButtons(); +  private:  	void			setForeground(BOOL b);	// called only by floaterview  	void			cleanupHandles(); // remove handles to dead floaters  	void			createMinimizeButton(); -	void			updateButtons();  	void			buildButtons(const Params& p);  	// Images and tooltips are named in the XML, but we want to look them  	// up by index.  	static LLUIImage*	getButtonImage(const Params& p, EFloaterButton e);  	static LLUIImage*	getButtonPressedImage(const Params& p, EFloaterButton e); -	static std::string	getButtonTooltip(const Params& p, EFloaterButton e); +	/** +	 * @params is_chrome - if floater is Chrome it means that floater will never get focus. +	 * Therefore it can't be closed with 'Ctrl+W'. So the tooltip text of close button( X ) +	 * should be 'Close' not 'Close(Ctrl+W)' as for usual floaters. +	 */ +	static std::string	getButtonTooltip(const Params& p, EFloaterButton e, bool is_chrome); +  	BOOL			offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index);  	void			addResizeCtrls();  	void			layoutResizeCtrls(); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 5f4b16ec9e..56d7a63832 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -962,7 +962,18 @@ void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent)  {  	if (width != getRect().getWidth() || height != getRect().getHeight())  	{ +		//EXT-4288 +		//to keep consistance scrolling behaviour  +		//when scrolling from top and from bottom... +		bool is_scrolled_to_end = (mScroller!=NULL) && scrolledToEnd(); +		  		LLUICtrl::reshape( width, height, called_from_parent ); +	 +		if (is_scrolled_to_end) +		{ +			deselect(); +			endOfDoc(); +		}		  		// do this first after reshape, because other things depend on  		// up-to-date mVisibleTextRect | 
