diff options
| author | Callum Prentice <callum@gmail.com> | 2020-10-14 13:47:26 -0700 | 
|---|---|---|
| committer | Callum Prentice <callum@gmail.com> | 2020-10-14 13:47:26 -0700 | 
| commit | 1cdcc00319c87b9be6ed677e4b36b0b53a1acb3e (patch) | |
| tree | e056d5af138131e577ba91428db3069007847a7d /indra/llui | |
| parent | a350009614c0840e5535d5c7d2281ecb3104642d (diff) | |
| parent | a2c8c8238cfb109e0da81363995e08e99173426f (diff) | |
Mostly automatic merge with canonical viewer after release
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llbutton.cpp | 27 | ||||
| -rw-r--r-- | indra/llui/llbutton.h | 1 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.cpp | 3 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.h | 1 | ||||
| -rw-r--r-- | indra/llui/lltabcontainer.cpp | 13 | ||||
| -rw-r--r-- | indra/llui/lltabcontainer.h | 8 | ||||
| -rw-r--r-- | indra/llui/lltextbase.cpp | 12 | ||||
| -rw-r--r-- | indra/llui/lltextbase.h | 2 | 
8 files changed, 56 insertions, 11 deletions
| diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 27444b7f5b..9682c3bc10 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -643,7 +643,8 @@ void LLButton::draw()  	LLColor4 highlighting_color = LLColor4::white;  	LLColor4 glow_color = LLColor4::white;  	LLRender::eBlendType glow_type = LLRender::BT_ADD_WITH_ALPHA; -	LLUIImage* imagep = NULL; +    LLUIImage* imagep = NULL; +    LLUIImage* image_glow = NULL;      //  Cancel sticking of color, if the button is pressed,  	//  or when a flashing of the previously selected button is ended @@ -710,17 +711,18 @@ void LLButton::draw()  		imagep = mImageDisabled;  	} +	image_glow = imagep; +  	if (mFlashing)  	{ -		// if button should flash and we have icon for flashing, use it as image for button -		if(flash && mImageFlash) +		if (flash && mImageFlash)  		{ -			// setting flash to false to avoid its further influence on glow -			flash = false; -			imagep = mImageFlash; +			// if button should flash and we have icon for flashing, use it as image for button +			image_glow = mImageFlash;  		} -		// else use usual flashing via flash_color -		else if (mFlashingTimer) + +		// provide fade-in and fade-out via flash_color +		if (mFlashingTimer)  		{  			LLColor4 flash_color = mFlashBgColor.get();  			use_glow_effect = TRUE; @@ -734,6 +736,11 @@ void LLButton::draw()  			{                  glow_color = highlighting_color;  			} +            else +            { +                // will fade from highlight color +                glow_color = flash_color; +            }  		}  	} @@ -806,7 +813,7 @@ void LLButton::draw()  			if (mCurGlowStrength > 0.01f)  			{  				gGL.setSceneBlendType(glow_type); -				imagep->drawSolid(0, 0, getRect().getWidth(), getRect().getHeight(), glow_color % (mCurGlowStrength * alpha)); +				image_glow->drawSolid(0, 0, getRect().getWidth(), getRect().getHeight(), glow_color % (mCurGlowStrength * alpha));  				gGL.setSceneBlendType(LLRender::BT_ALPHA);  			}  		} @@ -817,7 +824,7 @@ void LLButton::draw()  			if (mCurGlowStrength > 0.01f)  			{  				gGL.setSceneBlendType(glow_type); -				imagep->drawSolid(0, y, glow_color % (mCurGlowStrength * alpha)); +				image_glow->drawSolid(0, y, glow_color % (mCurGlowStrength * alpha));  				gGL.setSceneBlendType(LLRender::BT_ALPHA);  			}  		} diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 7629ed1fea..572d36996c 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -205,6 +205,7 @@ public:  	void			setFlashing( bool b, bool force_flashing = false );  	BOOL			getFlashing() const		{ return mFlashing; }      LLFlashTimer*   getFlashTimer() {return mFlashingTimer;} +	void			setFlashColor(const LLUIColor &color) { mFlashBgColor = color; };  	void			setHAlign( LLFontGL::HAlign align )		{ mHAlign = align; }  	LLFontGL::HAlign getHAlign() const						{ return mHAlign; } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 763c3aeb81..367c6c3c5b 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -132,6 +132,7 @@ LLScrollListCtrl::Params::Params()  	sort_ascending("sort_ascending", true),  	mouse_wheel_opaque("mouse_wheel_opaque", false),  	commit_on_keyboard_movement("commit_on_keyboard_movement", true), +	commit_on_selection_change("commit_on_selection_change", false),  	heading_height("heading_height"),  	page_lines("page_lines", 0),  	background_visible("background_visible"), @@ -162,7 +163,7 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)  	mMaxSelectable(0),  	mAllowKeyboardMovement(true),  	mCommitOnKeyboardMovement(p.commit_on_keyboard_movement), -	mCommitOnSelectionChange(false), +	mCommitOnSelectionChange(p.commit_on_selection_change),  	mSelectionChanged(false),  	mNeedsScroll(false),  	mCanSelect(true), diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h index 43e1c0d707..8d00296183 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -97,6 +97,7 @@ public:  		// behavioral flags  		Optional<bool>	multi_select,  						commit_on_keyboard_movement, +						commit_on_selection_change,  						mouse_wheel_opaque;  		// display flags diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 6521b883f8..e6b43da8e5 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -220,6 +220,8 @@ LLTabContainer::Params::Params()  	last_tab("last_tab"),  	use_custom_icon_ctrl("use_custom_icon_ctrl", false),  	open_tabs_on_drag_and_drop("open_tabs_on_drag_and_drop", false), +	enable_tabs_flashing("enable_tabs_flashing", false), +	tabs_flashing_color("tabs_flashing_color"),  	tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),  	use_ellipses("use_ellipses"),  	font_halign("halign") @@ -259,6 +261,8 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)  	mCustomIconCtrlUsed(p.use_custom_icon_ctrl),  	mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),  	mTabIconCtrlPad(p.tab_icon_ctrl_pad), +	mEnableTabsFlashing(p.enable_tabs_flashing), +	mTabsFlashingColor(p.tabs_flashing_color),  	mUseTabEllipses(p.use_ellipses)  {  	static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0); @@ -280,6 +284,11 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)  		mMinTabWidth = tabcntr_vert_tab_min_width;  	} +    if (p.tabs_flashing_color.isProvided()) +    { +        mEnableTabsFlashing = true; +    } +  	initButtons( );  } @@ -1102,6 +1111,10 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)  		    p.pad_left( mLabelPadLeft );  		    p.pad_right(2);  		} + +		// inits flash timer +		p.button_flash_enable = mEnableTabsFlashing; +		p.flash_color = mTabsFlashingColor;  		// *TODO : It seems wrong not to use p in both cases considering the way p is initialized  		if (mCustomIconCtrlUsed) diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 6bf963313c..8f8cedb1b9 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -109,6 +109,12 @@ public:  		 * Open tabs on hover in drag and drop situations  		 */  		Optional<bool>						open_tabs_on_drag_and_drop; + +		/** +		 * Enable tab flashing +		 */ +		Optional<bool>						enable_tabs_flashing; +		Optional<LLUIColor>					tabs_flashing_color;  		/**  		 *  Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true) @@ -310,6 +316,8 @@ private:  	bool							mCustomIconCtrlUsed;  	bool							mOpenTabsOnDragAndDrop; +	bool							mEnableTabsFlashing; +	LLUIColor						mTabsFlashingColor;  	S32								mTabIconCtrlPad;  	bool							mUseTabEllipses;  }; diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 30bf938591..ff72417867 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2259,6 +2259,18 @@ void LLTextBase::needsReflow(S32 index)  	mReflowIndex = llmin(mReflowIndex, index);  } +S32	LLTextBase::removeFirstLine() +{ +    if (!mLineInfoList.empty()) +    { +        S32 length = getLineEnd(0); +        deselect(); +        removeStringNoUndo(0, length); +        return length; +    } +    return 0; +} +  void LLTextBase::appendLineBreakSegment(const LLStyle::Params& style_params)  {  	segment_vec_t segments; diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 8687e7aa2a..4e966b7cef 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -404,6 +404,7 @@ public:  	virtual void			setText(const LLStringExplicit &utf8str , const LLStyle::Params& input_params = LLStyle::Params()); // uses default style  	virtual std::string		getText() const;  	void					setMaxTextLength(S32 length) { mMaxTextByteLength = length; } +	S32						getMaxTextLength() { return mMaxTextByteLength; }  	// wide-char versions  	void					setWText(const LLWString& text); @@ -432,6 +433,7 @@ public:  	S32						getLength() const { return getWText().length(); }  	S32						getLineCount() const { return mLineInfoList.size(); } +	S32						removeFirstLine(); // returns removed length  	void					addDocumentChild(LLView* view);  	void					removeDocumentChild(LLView* view); | 
