diff options
64 files changed, 341 insertions, 117 deletions
| @@ -37,3 +37,4 @@ db0fe9bb65187f365e58a717dd23d0f4754a9c1d 2.3.0-beta2  6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-beta3  6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-release  dbc206fc61d89ff4cfe15aade0bf0c7bc7fee1c9 2.4.0-start +dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1 diff --git a/doc/contributions.txt b/doc/contributions.txt index d4e459039d..c88d712bc8 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -356,6 +356,7 @@ Joghert LeSabre  Jonathan Yap  	VWR-17801  	STORM-616 +	STORM-726  Kage Pixel  	VWR-11  Ken March diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 9d49c1a831..9e4849c58b 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -203,7 +203,8 @@ void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw()  	S32 width = getRect().getWidth();  	S32 height = getRect().getHeight(); -	gl_rect_2d(0,0,width - 1 ,height - 1,mHeaderBGColor.get(),true); +	F32 alpha = getCurrentTransparency(); +	gl_rect_2d(0,0,width - 1 ,height - 1,mHeaderBGColor.get() % alpha,true);  	LLAccordionCtrlTab* parent = dynamic_cast<LLAccordionCtrlTab*>(getParent());  	bool collapsible = (parent && parent->getCollapsible()); diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 65ef3e5f8f..45ceaff696 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -98,7 +98,8 @@ LLButton::Params::Params()  	is_toggle("is_toggle", false),  	scale_image("scale_image", true),  	hover_glow_amount("hover_glow_amount"), -	commit_on_return("commit_on_return", true) +	commit_on_return("commit_on_return", true), +	use_draw_context_alpha("use_draw_context_alpha", true)  {  	addSynonym(is_toggle, "toggle");  	held_down_delay.seconds = 0.5f; @@ -158,7 +159,8 @@ LLButton::LLButton(const LLButton::Params& p)  	mLastDrawCharsCount(0),  	mMouseDownSignal(NULL),  	mMouseUpSignal(NULL), -	mHeldDownSignal(NULL) +	mHeldDownSignal(NULL), +	mUseDrawContextAlpha(p.use_draw_context_alpha)  {  	static LLUICachedControl<S32> llbutton_orig_h_pad ("UIButtonOrigHPad", 0); @@ -539,7 +541,7 @@ BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)  // virtual  void LLButton::draw()  { -	F32 alpha = getDrawContext().mAlpha; +	F32 alpha = mUseDrawContextAlpha ? getDrawContext().mAlpha : getCurrentTransparency();  	bool flash = FALSE;  	static LLUICachedControl<F32> button_flash_rate("ButtonFlashRate", 0);  	static LLUICachedControl<S32> button_flash_count("ButtonFlashCount", 0); diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 2d5fefa78c..16aa49b653 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -124,6 +124,8 @@ public:  		Optional<F32>				hover_glow_amount;  		Optional<TimeIntervalParam>	held_down_delay; +		Optional<bool>			use_draw_context_alpha; +  		Params();  	}; @@ -338,6 +340,8 @@ private:  	S32							mImageOverlayTopPad;  	S32							mImageOverlayBottomPad; +	bool						mUseDrawContextAlpha; +  	/*  	 * Space between image_overlay and label  	 */ diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 34d8e9c500..7727e154da 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -61,10 +61,6 @@  // use this to control "jumping" behavior when Ctrl-Tabbing  const S32 TABBED_FLOATER_OFFSET = 0; -// static -F32 LLFloater::sActiveFloaterTransparency = 0.0f; -F32 LLFloater::sInactiveFloaterTransparency = 0.0f; -  std::string	LLFloater::sButtonNames[BUTTON_COUNT] =   {  	"llfloater_close_btn",		//BUTTON_CLOSE @@ -208,14 +204,14 @@ void LLFloater::initClass()  	if (ctrl)  	{  		ctrl->getSignal()->connect(boost::bind(&LLFloater::updateActiveFloaterTransparency)); -		sActiveFloaterTransparency = LLUI::sSettingGroups["config"]->getF32("ActiveFloaterTransparency"); +		updateActiveFloaterTransparency();  	}  	ctrl = LLUI::sSettingGroups["config"]->getControl("InactiveFloaterTransparency").get();  	if (ctrl)  	{  		ctrl->getSignal()->connect(boost::bind(&LLFloater::updateInactiveFloaterTransparency)); -		sInactiveFloaterTransparency = LLUI::sSettingGroups["config"]->getF32("InactiveFloaterTransparency"); +		updateInactiveFloaterTransparency();  	}  } @@ -225,7 +221,7 @@ static LLWidgetNameRegistry::StaticRegistrar sRegisterFloaterParams(&typeid(LLFl  LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)  :	LLPanel(),	// intentionally do not pass params here, see initFromParams -	mDragHandle(NULL), + 	mDragHandle(NULL),  	mTitle(p.title),  	mShortTitle(p.short_title),  	mSingleInstance(p.single_instance), @@ -368,13 +364,13 @@ void LLFloater::layoutDragHandle()  // static  void LLFloater::updateActiveFloaterTransparency()  { -	sActiveFloaterTransparency = LLUI::sSettingGroups["config"]->getF32("ActiveFloaterTransparency"); +	sActiveControlTransparency = LLUI::sSettingGroups["config"]->getF32("ActiveFloaterTransparency");  }  // static  void LLFloater::updateInactiveFloaterTransparency()  { -	sInactiveFloaterTransparency = LLUI::sSettingGroups["config"]->getF32("InactiveFloaterTransparency"); +	sInactiveControlTransparency = LLUI::sSettingGroups["config"]->getF32("InactiveFloaterTransparency");  }  void LLFloater::addResizeCtrls() @@ -1193,6 +1189,7 @@ void LLFloater::setFocus( BOOL b )  			last_focus->setFocus(TRUE);  		}  	} +	updateTransparency(this, b ? TT_ACTIVE : TT_INACTIVE);  }  // virtual @@ -1652,7 +1649,7 @@ void	LLFloater::onClickCloseBtn()  // virtual  void LLFloater::draw()  { -	mCurrentTransparency = hasFocus() ? sActiveFloaterTransparency : sInactiveFloaterTransparency; +	const F32 alpha = getCurrentTransparency();  	// draw background  	if( isBackgroundVisible() ) @@ -1684,12 +1681,12 @@ void LLFloater::draw()  		if (image)  		{  			// We're using images for this floater's backgrounds -			image->draw(getLocalRect(), overlay_color % mCurrentTransparency); +			image->draw(getLocalRect(), overlay_color % alpha);  		}  		else  		{  			// We're not using images, use old-school flat colors -			gl_rect_2d( left, top, right, bottom, color % mCurrentTransparency ); +			gl_rect_2d( left, top, right, bottom, color % alpha );  			// draw highlight on title bar to indicate focus.  RDW  			if(hasFocus()  @@ -1701,7 +1698,7 @@ void LLFloater::draw()  				const LLFontGL* font = LLFontGL::getFontSansSerif();  				LLRect r = getRect();  				gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1,  -					titlebar_focus_color % mCurrentTransparency, 0, TRUE); +					titlebar_focus_color % alpha, 0, TRUE);  			}  		}  	} @@ -1767,10 +1764,32 @@ void	LLFloater::drawShadow(LLPanel* panel)  		shadow_color.mV[VALPHA] *= 0.5f;  	}  	gl_drop_shadow(left, top, right, bottom,  -		shadow_color % mCurrentTransparency, +		shadow_color % getCurrentTransparency(),  		llround(shadow_offset));  } +void LLFloater::updateTransparency(LLView* view, ETypeTransparency transparency_type) +{ +	child_list_t children = *view->getChildList(); +	child_list_t::iterator it = children.begin(); + +	LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(view); +	if (ctrl) +	{ +		ctrl->setTransparencyType(transparency_type); +	} + +	for(; it != children.end(); ++it) +	{ +		updateTransparency(*it, transparency_type); +	} +} + +void LLFloater::updateTransparency(ETypeTransparency transparency_type) +{ +	updateTransparency(this, transparency_type); +} +  void	LLFloater::setCanMinimize(BOOL can_minimize)  {  	// if removing minimize/restore button programmatically, diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index fa806bb632..bb96272d02 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -284,6 +284,8 @@ public:  	static void		setFloaterHost(LLMultiFloater* hostp) {sHostp = hostp; }  	static LLMultiFloater* getFloaterHost() {return sHostp; } + +	void			updateTransparency(ETypeTransparency transparency_type);  protected: @@ -343,6 +345,7 @@ private:  	static void		updateActiveFloaterTransparency();  	static void		updateInactiveFloaterTransparency(); +	void			updateTransparency(LLView* view, ETypeTransparency transparency_type);  public:  	// Called when floater is opened, passes mKey @@ -411,11 +414,6 @@ private:  	bool            mDocked;  	bool            mTornOff; -	F32				mCurrentTransparency; - -	static F32		sActiveFloaterTransparency; -	static F32		sInactiveFloaterTransparency; -  	static LLMultiFloater* sHostp;  	static BOOL		sQuitting;  	static std::string	sButtonNames[BUTTON_COUNT]; diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index 627957061d..47f2cfaf89 100644 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp @@ -41,6 +41,7 @@ static LLDefaultChildRegistry::Register<LLIconCtrl> r("icon");  LLIconCtrl::Params::Params()  :	image("image_name"),  	color("color"), +	use_draw_context_alpha("use_draw_context_alpha", true),  	scale_image("scale_image")  {  	tab_stop = false; @@ -51,6 +52,7 @@ LLIconCtrl::LLIconCtrl(const LLIconCtrl::Params& p)  :	LLUICtrl(p),  	mColor(p.color()),  	mImagep(p.image), +	mUseDrawContextAlpha(p.use_draw_context_alpha),  	mPriority(0),  	mDrawWidth(0),  	mDrawHeight(0) @@ -71,7 +73,8 @@ void LLIconCtrl::draw()  {  	if( mImagep.notNull() )  	{ -		mImagep->draw(getLocalRect(), mColor.get() % getDrawContext().mAlpha ); +		const F32 alpha = mUseDrawContextAlpha ? getDrawContext().mAlpha : getCurrentTransparency(); +		mImagep->draw(getLocalRect(), mColor.get() % alpha );  	}  	LLUICtrl::draw(); diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h index 79a8b0fb28..e9bdab2d47 100644 --- a/indra/llui/lliconctrl.h +++ b/indra/llui/lliconctrl.h @@ -48,6 +48,7 @@ public:  	{  		Optional<LLUIImage*>	image;  		Optional<LLUIColor>		color; +		Optional<bool>			use_draw_context_alpha;  		Ignored					scale_image;  		Params();  	}; @@ -79,6 +80,10 @@ protected:  	S32 mDrawWidth ;  	S32 mDrawHeight ; +	// If set to true (default), use the draw context transparency. +	// If false, will use transparency returned by getCurrentTransparency(). See STORM-698. +	bool mUseDrawContextAlpha; +  private:  	LLUIColor mColor;  	LLPointer<LLUIImage> mImagep; diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 3eb58e1aec..ba73b74052 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -1530,7 +1530,8 @@ void LLLineEditor::drawBackground()  		image = mBgImage;  	} -	F32 alpha = getDrawContext().mAlpha; +	F32 alpha = getCurrentTransparency(); +  	// optionally draw programmatic border  	if (has_focus)  	{ diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 900e2c789e..ff377ba3a1 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -194,6 +194,8 @@ void LLPanel::draw()  	// draw background  	if( mBgVisible )  	{ +		alpha = getCurrentTransparency(); +  		LLRect local_rect = getLocalRect();  		if (mBgOpaque )  		{ diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp index 3146418a7d..380c477eb2 100644 --- a/indra/llui/llscrollcontainer.cpp +++ b/indra/llui/llscrollcontainer.cpp @@ -422,9 +422,10 @@ void LLScrollContainer::draw()  	// Draw background  	if( mIsOpaque )  	{ +		F32 alpha = getCurrentTransparency(); +  		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -		gGL.color4fv( mBackgroundColor.get().mV ); -		gl_rect_2d( mInnerRect ); +		gl_rect_2d(mInnerRect, mBackgroundColor.get() % alpha);  	}  	// Draw mScrolledViews and update scroll bars. diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 7df7c13dc0..8854f0a02e 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -1482,8 +1482,9 @@ void LLScrollListCtrl::draw()  	// Draw background  	if (mBackgroundVisible)  	{ +		F32 alpha = getCurrentTransparency();  		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -		gl_rect_2d(background, getEnabled() ? mBgWriteableColor.get() : mBgReadOnlyColor.get() ); +		gl_rect_2d(background, getEnabled() ? mBgWriteableColor.get() % alpha : mBgReadOnlyColor.get() % alpha );  	}  	if (mColumnsDirty) diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 3f213ed13e..49537ef78f 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -1005,6 +1005,7 @@ void LLTextBase::draw()  	if (mBGVisible)  	{ +		F32 alpha = getCurrentTransparency();  		// clip background rect against extents, if we support scrolling  		LLRect bg_rect = mVisibleTextRect;  		if (mScroller) @@ -1016,7 +1017,7 @@ void LLTextBase::draw()  							: hasFocus()   								? mFocusBgColor.get()   								: mWriteableBgColor.get(); -		gl_rect_2d(doc_rect, bg_color, TRUE); +		gl_rect_2d(doc_rect, bg_color % alpha, TRUE);  	}  	// draw document view diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 19c42bf61a..1e2fe09cd9 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -950,7 +950,7 @@ void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor  }  // Draw gray and white checkerboard with black border -void gl_rect_2d_checkerboard(const LLRect& rect) +void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)  {  	// Initialize the first time this is called.  	const S32 PIXELS = 32; @@ -971,11 +971,11 @@ void gl_rect_2d_checkerboard(const LLRect& rect)  	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);  	// ...white squares -	gGL.color3f( 1.f, 1.f, 1.f ); +	gGL.color4f( 1.f, 1.f, 1.f, alpha );  	gl_rect_2d(rect);  	// ...gray squares -	gGL.color3f( .7f, .7f, .7f ); +	gGL.color4f( .7f, .7f, .7f, alpha );  	gGL.flush();  	glPolygonStipple( checkerboard ); diff --git a/indra/llui/llui.h b/indra/llui/llui.h index fc545c85d5..62d10df8b2 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -79,7 +79,7 @@ void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LL  void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );  void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );  void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE ); -void gl_rect_2d_checkerboard(const LLRect& rect); +void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);  void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines); diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 3ac3bf8c41..afd60cbb3e 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -36,6 +36,9 @@  static LLDefaultChildRegistry::Register<LLUICtrl> r("ui_ctrl"); +F32 LLUICtrl::sActiveControlTransparency = 1.0f; +F32 LLUICtrl::sInactiveControlTransparency = 1.0f; +  // Compiler optimization, generate extern template  template class LLUICtrl* LLView::getChild<class LLUICtrl>(  	const std::string& name, BOOL recurse) const; @@ -110,7 +113,8 @@ LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel)  	mMouseUpSignal(NULL),  	mRightMouseDownSignal(NULL),  	mRightMouseUpSignal(NULL), -	mDoubleClickSignal(NULL) +	mDoubleClickSignal(NULL), +	mTransparencyType(TT_DEFAULT)  {  	mUICtrlHandle.bind(this);  } @@ -923,6 +927,37 @@ BOOL LLUICtrl::getTentative() const  void LLUICtrl::setColor(const LLColor4& color)							  { } +F32 LLUICtrl::getCurrentTransparency() +{ +	F32 alpha = 0; + +	switch(mTransparencyType) +	{ +	case TT_DEFAULT: +		alpha = getDrawContext().mAlpha; +		break; + +	case TT_ACTIVE: +		alpha = sActiveControlTransparency; +		break; + +	case TT_INACTIVE: +		alpha = sInactiveControlTransparency; +		break; + +	case TT_FADING: +		alpha = sInactiveControlTransparency / 2; +		break; +	} + +	return alpha; +} + +void LLUICtrl::setTransparencyType(ETypeTransparency type) +{ +	mTransparencyType = type; +} +  boost::signals2::connection LLUICtrl::setCommitCallback( const commit_signal_t::slot_type& cb )   {   	if (!mCommitSignal) mCommitSignal = new commit_signal_t(); diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 76dfdf754c..b37e9f6b1b 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -120,6 +120,13 @@ public:  		Params();  	}; +	enum ETypeTransparency +	{ +		TT_DEFAULT, +		TT_ACTIVE,		// focused floater +		TT_INACTIVE,	// other floaters +		TT_FADING,		// fading toast +	};  	/*virtual*/ ~LLUICtrl();  	void initFromParams(const Params& p); @@ -202,6 +209,11 @@ public:  	virtual void	setColor(const LLColor4& color); +	F32 			getCurrentTransparency(); + +	void				setTransparencyType(ETypeTransparency type); +	ETypeTransparency	getTransparencyType() const {return mTransparencyType;} +  	BOOL	focusNextItem(BOOL text_entry_only);  	BOOL	focusPrevItem(BOOL text_entry_only);  	BOOL 	focusFirstItem(BOOL prefer_text_fields = FALSE, BOOL focus_flash = TRUE ); @@ -283,6 +295,10 @@ protected:  	boost::signals2::connection mMakeVisibleControlConnection;  	LLControlVariable* mMakeInvisibleControlVariable;  	boost::signals2::connection mMakeInvisibleControlConnection; + +	static F32 sActiveControlTransparency; +	static F32 sInactiveControlTransparency; +  private:  	BOOL			mTabStop; @@ -290,6 +306,8 @@ private:  	BOOL			mTentative;  	LLRootHandle<LLUICtrl> mUICtrlHandle; +	ETypeTransparency mTransparencyType; +  	class DefaultTabGroupFirstSorter;  }; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7dbb375a20..402a0e85c4 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4017,7 +4017,7 @@        <key>Type</key>        <string>F32</string>        <key>Value</key> -      <real>0.5</real> +      <real>0.65</real>      </map>      <key>InBandwidth</key>      <map> diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index b2e9564f7d..328c326278 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -167,6 +167,7 @@ BOOL LLCallFloater::postBuild()  	//chrome="true" hides floater caption   	if (mDragHandle)  		mDragHandle->setTitleVisible(TRUE); +	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)  	updateSession(); @@ -206,6 +207,17 @@ void LLCallFloater::draw()  }  // virtual +void LLCallFloater::setFocus( BOOL b ) +{ +	LLTransientDockableFloater::setFocus(b); + +	// Force using active floater transparency (STORM-730). +	// We have to override setFocus() for LLCallFloater because selecting an item +	// of the voice morphing combobox causes the floater to lose focus and thus become transparent. +	updateTransparency(TT_ACTIVE); +} + +// virtual  void LLCallFloater::onParticipantsChanged()  {  	if (NULL == mParticipants) return; diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 3bc7043353..00a3f76e56 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -64,6 +64,7 @@ public:  	/*virtual*/ BOOL postBuild();  	/*virtual*/ void onOpen(const LLSD& key);  	/*virtual*/ void draw(); +	/*virtual*/ void setFocus( BOOL b );  	/**  	 * Is called by LLVoiceClient::notifyParticipantObservers when voice participant list is changed. diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index e7634ff0f4..4a1ba6f1b5 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -195,7 +195,9 @@ BOOL LLColorSwatchCtrl::handleMouseUp(S32 x, S32 y, MASK mask)  // assumes GL state is set for 2D  void LLColorSwatchCtrl::draw()  { -	F32 alpha = getDrawContext().mAlpha; +	// If we're in a focused floater, don't apply the floater's alpha to the color swatch (STORM-676). +	F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency(); +  	mBorder->setKeyboardFocusHighlight(hasFocus());  	// Draw border  	LLRect border( 0, getRect().getHeight(), getRect().getWidth(), mLabelHeight ); @@ -207,19 +209,29 @@ void LLColorSwatchCtrl::draw()  	// Check state  	if ( mValid )  	{ +		if (!mColor.isOpaque()) +		{ +			// Draw checker board. +			gl_rect_2d_checkerboard(interior, alpha); +		} +  		// Draw the color swatch -		gl_rect_2d_checkerboard( interior ); -		gl_rect_2d(interior, mColor, TRUE); -		LLColor4 opaque_color = mColor; -		opaque_color.mV[VALPHA] = 1.f; -		gGL.color4fv(opaque_color.mV); -		if (mAlphaGradientImage.notNull()) +		gl_rect_2d(interior, mColor % alpha, TRUE); + +		if (!mColor.isOpaque())  		{ -			gGL.pushMatrix(); +			// Draw semi-transparent center area in filled with mColor. +			LLColor4 opaque_color = mColor; +			opaque_color.mV[VALPHA] = alpha; +			gGL.color4fv(opaque_color.mV); +			if (mAlphaGradientImage.notNull())  			{ -				mAlphaGradientImage->draw(interior, mColor); +				gGL.pushMatrix(); +				{ +					mAlphaGradientImage->draw(interior, mColor % alpha); +				} +				gGL.popMatrix();  			} -			gGL.popMatrix();  		}  	}  	else diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index ad24c6534a..90a9879949 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -343,6 +343,7 @@ BOOL LLFloaterCamera::postBuild()  {  	setIsChrome(TRUE);  	setTitleVisible(TRUE); // restore title visibility after chrome applying +	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)  	mRotate = getChild<LLJoystickCameraRotate>(ORBIT);  	mZoom = findChild<LLPanelCameraZoom>(ZOOM); diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp index 69f1774ff8..659e52271a 100644 --- a/indra/newview/llfloatercolorpicker.cpp +++ b/indra/newview/llfloatercolorpicker.cpp @@ -472,6 +472,12 @@ void LLFloaterColorPicker::onMouseCaptureLost()  	setMouseDownInLumRegion(FALSE);  } +F32 LLFloaterColorPicker::getSwatchTransparency() +{ +	// If the floater is focused, don't apply its alpha to the color swatch (STORM-676). +	return getTransparencyType() == TT_ACTIVE ? 1.f : LLFloater::getCurrentTransparency(); +} +  //////////////////////////////////////////////////////////////////////////////  //  void LLFloaterColorPicker::draw() @@ -533,8 +539,10 @@ void LLFloaterColorPicker::draw()  	// base floater stuff  	LLFloater::draw (); +	const F32 alpha = getSwatchTransparency(); +  	// draw image for RGB area (not really RGB but you'll see what I mean... -	gl_draw_image ( mRGBViewerImageLeft, mRGBViewerImageTop - mRGBViewerImageHeight, mRGBImage, LLColor4::white ); +	gl_draw_image ( mRGBViewerImageLeft, mRGBViewerImageTop - mRGBViewerImageHeight, mRGBImage, LLColor4::white % alpha);  	// update 'cursor' into RGB Section  	S32 xPos = ( S32 ) ( ( F32 )mRGBViewerImageWidth * getCurH () ) - 8; @@ -556,7 +564,7 @@ void LLFloaterColorPicker::draw()  				 mRGBViewerImageTop - mRGBViewerImageHeight,  				 mRGBViewerImageLeft + mRGBViewerImageWidth + 1,  				 mRGBViewerImageTop, -				 LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), +				 LLColor4 ( 0.0f, 0.0f, 0.0f, alpha ),  				 FALSE );  	// draw luminance slider @@ -569,7 +577,7 @@ void LLFloaterColorPicker::draw()  			mLumRegionTop - mLumRegionHeight + y,   				mLumRegionLeft + mLumRegionWidth,   					mLumRegionTop - mLumRegionHeight + y - 1,  -						LLColor4 ( rValSlider, gValSlider, bValSlider, 1.0f ) ); +						LLColor4 ( rValSlider, gValSlider, bValSlider, alpha ) );  	} @@ -594,7 +602,7 @@ void LLFloaterColorPicker::draw()  				 mSwatchRegionTop - mSwatchRegionHeight,  				 mSwatchRegionLeft + mSwatchRegionWidth,  				 mSwatchRegionTop, -				 LLColor4 ( getCurR (), getCurG (), getCurB (), 1.0f ), +				 LLColor4 ( getCurR (), getCurG (), getCurB (), alpha ),  				 TRUE );  	// draw selected color swatch outline @@ -634,6 +642,7 @@ const LLColor4& LLFloaterColorPicker::getComplimentaryColor ( const LLColor4& ba  void LLFloaterColorPicker::drawPalette ()  {  	S32 curEntry = 0; +	const F32 alpha = getSwatchTransparency();  	for ( S32 y = 0; y < numPaletteRows; ++y )  	{ @@ -648,7 +657,7 @@ void LLFloaterColorPicker::drawPalette ()  			// draw palette entry color  			if ( mPalette [ curEntry ] )  			{ -				gl_rect_2d ( x1 + 2, y1 - 2, x2 - 2, y2 + 2, *mPalette [ curEntry++ ], TRUE ); +				gl_rect_2d ( x1 + 2, y1 - 2, x2 - 2, y2 + 2, *mPalette [ curEntry++ ] % alpha, TRUE );  				gl_rect_2d ( x1 + 1, y1 - 1, x2 - 1, y2 + 1, LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), FALSE );  			}  		} diff --git a/indra/newview/llfloatercolorpicker.h b/indra/newview/llfloatercolorpicker.h index 110fa43b9c..8e387c4f7c 100644 --- a/indra/newview/llfloatercolorpicker.h +++ b/indra/newview/llfloatercolorpicker.h @@ -55,6 +55,7 @@ class LLFloaterColorPicker  		virtual BOOL handleMouseUp ( S32 x, S32 y, MASK mask );  		virtual BOOL handleHover ( S32 x, S32 y, MASK mask );  		virtual void onMouseCaptureLost(); +		virtual F32  getSwatchTransparency();  		// implicit methods  		void createUI (); diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp index 0b5ac8e798..a6dafda3e6 100644 --- a/indra/newview/llfloaterevent.cpp +++ b/indra/newview/llfloaterevent.cpp @@ -117,8 +117,3 @@ void LLFloaterEvent::setEventID(const U32 event_id)  	}  } - -void LLFloaterEvent::draw() -{ -	LLPanel::draw(); -} diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h index b1963309da..ed90055d95 100644 --- a/indra/newview/llfloaterevent.h +++ b/indra/newview/llfloaterevent.h @@ -43,7 +43,6 @@ public:  	/*virtual*/ ~LLFloaterEvent();  	/*virtual*/ BOOL postBuild(); -	/*virtual*/ void draw();  	void setEventID(const U32 event_id); diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp index 220d33016a..f0c9d52ccd 100644 --- a/indra/newview/llfloaterpostcard.cpp +++ b/indra/newview/llfloaterpostcard.cpp @@ -128,6 +128,8 @@ void LLFloaterPostcard::draw()  	if(!isMinimized() && mViewerImage.notNull() && mJPEGImage.notNull())   	{ +		// Force the texture to be 100% opaque when the floater is focused. +		F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();  		LLRect rect(getRect());  		// first set the max extents of our preview @@ -149,7 +151,7 @@ void LLFloaterPostcard::draw()  		}  		{  			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); -			gl_rect_2d(rect, LLColor4(0.f, 0.f, 0.f, 1.f)); +			gl_rect_2d(rect, LLColor4(0.f, 0.f, 0.f, 1.f) % alpha);  			rect.stretch(-1);  		}  		{ @@ -164,7 +166,7 @@ void LLFloaterPostcard::draw()  								 rect.getWidth(),  								 rect.getHeight(),  								 mViewerImage.get(),  -								 LLColor4::white); +								 LLColor4::white % alpha);  		}  		glMatrixMode(GL_TEXTURE);  		glPopMatrix(); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index d55272c558..cad54cd158 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -2184,9 +2184,11 @@ void LLFloaterSnapshot::draw()  			S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;  			glMatrixMode(GL_MODELVIEW); +			// Apply floater transparency to the texture unless the floater is focused. +			F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();  			gl_draw_scaled_image(offset_x, offset_y,   					previewp->getThumbnailWidth(), previewp->getThumbnailHeight(),  -					previewp->getThumbnailImage(), LLColor4::white);	 +					previewp->getThumbnailImage(), LLColor4::white % alpha);  			previewp->drawPreviewRect(offset_x, offset_y) ;  		} diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp index 225d0288a9..3e0849a795 100644 --- a/indra/newview/llinventorylistitem.cpp +++ b/indra/newview/llinventorylistitem.cpp @@ -97,7 +97,8 @@ void LLPanelInventoryListItemBase::draw()  		LLRect separator_rect = getLocalRect();  		separator_rect.mTop = separator_rect.mBottom;  		separator_rect.mBottom -= mSeparatorImage->getHeight(); -		mSeparatorImage->draw(separator_rect); +		F32 alpha = getCurrentTransparency(); +		mSeparatorImage->draw(separator_rect, UI_VERTEX_COLOR % alpha);  	}  	LLPanel::draw(); diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index d38bb5aa4a..89d551f129 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -94,6 +94,7 @@ BOOL LLFloaterMove::postBuild()  {  	setIsChrome(TRUE);  	setTitleVisible(TRUE); // restore title visibility after chrome applying +	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)  	LLDockableFloater::postBuild(); diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 180695e40b..572eeb8fc7 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -365,3 +365,16 @@ BOOL	LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)  		mChatHistory->setFocus(TRUE);  	return LLDockableFloater::handleMouseDown(x, y, mask);  } + +void LLNearbyChat::draw() +{ +	// *HACK: Update transparency type depending on whether our children have focus. +	// This is needed because this floater is chrome and thus cannot accept focus, so +	// the transparency type setting code from LLFloater::setFocus() isn't reached. +	if (getTransparencyType() != TT_DEFAULT) +	{ +		setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE); +	} + +	LLDockableFloater::draw(); +} diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 1e62910385..2ea79797f8 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -48,6 +48,7 @@ public:  	bool	onNearbyChatCheckContextMenuItem(const LLSD& userdata);  	virtual BOOL	handleMouseDown(S32 x, S32 y, MASK mask); +	virtual void	draw();  	// focus overrides  	/*virtual*/ void	onFocusLost(); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index d2ad78f140..dfbbaa0941 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -165,11 +165,20 @@ public:  	:	LLToast(p),  	 	mNearbyChatScreenChannelp(nc_channelp)  	{ +		updateTransparency(); +		setMouseEnterCallback(boost::bind(&LLNearbyChatToast::updateTransparency, this)); +		setMouseLeaveCallback(boost::bind(&LLNearbyChatToast::updateTransparency, this));  	}  	/*virtual*/ void onClose(bool app_quitting); +	/*virtual*/ void setBackgroundOpaque(BOOL b); + +protected: +	/*virtual*/ void setTransparentState(bool transparent);  private: +	void updateTransparency(); +  	LLNearbyChatScreenChannel*	mNearbyChatScreenChannelp;  }; @@ -597,4 +606,34 @@ void LLNearbyChatToast::onClose(bool app_quitting)  	mNearbyChatScreenChannelp->onToastDestroyed(this, app_quitting);  } +// virtual +void LLNearbyChatToast::setBackgroundOpaque(BOOL b) +{ +	// We don't want background changes: transparency is handled differently. +	LLToast::setBackgroundOpaque(TRUE); +} + +// virtual +void LLNearbyChatToast::setTransparentState(bool transparent) +{ +	LLToast::setTransparentState(transparent); +	updateTransparency(); +} + +void LLNearbyChatToast::updateTransparency() +{ +	ETypeTransparency transparency_type; + +	if (isHovered()) +	{ +		transparency_type = TT_ACTIVE; +	} +	else +	{ +		transparency_type = getTransparentState() ? TT_FADING : TT_INACTIVE; +	} + +	LLFloater::updateTransparency(transparency_type); +} +  // EOF diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 87acd83b23..c57746ec00 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -180,6 +180,9 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type)  	populateFoldersList(); +	// Prevent the floater from losing focus (if the sidepanel is undocked). +	setFocus(TRUE); +  	LLPanelPlaceInfo::setInfoType(type);  } @@ -330,6 +333,9 @@ void LLPanelLandmarkInfo::toggleLandmarkEditMode(BOOL enabled)  		// when it was enabled/disabled we set the text once again.  		mNotesEditor->setText(mNotesEditor->getText());  	} + +	// Prevent the floater from losing focus (if the sidepanel is undocked). +	setFocus(TRUE);  }  const std::string& LLPanelLandmarkInfo::getLandmarkTitle() const diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index ccef563544..15e826ac2c 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -212,7 +212,8 @@ void LLPanelPicks::updateData()  		mNoPicks = false;  		mNoClassifieds = false; -		getChild<LLUICtrl>("picks_panel_text")->setValue(LLTrans::getString("PicksClassifiedsLoadingText")); +		mNoItemsLabel->setValue(LLTrans::getString("PicksClassifiedsLoadingText")); +		mNoItemsLabel->setVisible(TRUE);  		mPicksList->clear();  		LLAvatarPropertiesProcessor::getInstance()->sendAvatarPicksRequest(getAvatarId()); @@ -314,15 +315,17 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)  		mNoClassifieds = !mClassifiedsList->size();  	} -	if (mNoPicks && mNoClassifieds) +	bool no_data = mNoPicks && mNoClassifieds; +	mNoItemsLabel->setVisible(no_data); +	if (no_data)  	{  		if(getAvatarId() == gAgentID)  		{ -			getChild<LLUICtrl>("picks_panel_text")->setValue(LLTrans::getString("NoPicksClassifiedsText")); +			mNoItemsLabel->setValue(LLTrans::getString("NoPicksClassifiedsText"));  		}  		else  		{ -			getChild<LLUICtrl>("picks_panel_text")->setValue(LLTrans::getString("NoAvatarPicksClassifiedsText")); +			mNoItemsLabel->setValue(LLTrans::getString("NoAvatarPicksClassifiedsText"));  		}  	}  } @@ -359,6 +362,8 @@ BOOL LLPanelPicks::postBuild()  	mPicksList->setNoItemsCommentText(getString("no_picks"));  	mClassifiedsList->setNoItemsCommentText(getString("no_classifieds")); +	mNoItemsLabel = getChild<LLUICtrl>("picks_panel_text"); +  	childSetAction(XML_BTN_NEW, boost::bind(&LLPanelPicks::onClickPlusBtn, this));  	childSetAction(XML_BTN_DELETE, boost::bind(&LLPanelPicks::onClickDelete, this));  	childSetAction(XML_BTN_TELEPORT, boost::bind(&LLPanelPicks::onClickTeleport, this)); @@ -781,7 +786,7 @@ void LLPanelPicks::showAccordion(const std::string& name, bool show)  void LLPanelPicks::onPanelPickClose(LLPanel* panel)  { -	panel->setVisible(FALSE); +	getProfilePanel()->closePanel(panel);  }  void LLPanelPicks::onPanelPickSave(LLPanel* panel) diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 526ba48dcb..a02ed81bb0 100644 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h @@ -149,6 +149,7 @@ private:  	LLPanelClassifiedInfo* mPanelClassifiedInfo;  	LLPanelPickEdit* mPanelPickEdit;  	LLToggleableMenu* mPlusMenu; +	LLUICtrl* mNoItemsLabel;  	// <classified_id, edit_panel>  	typedef std::map<LLUUID, LLPanelClassifiedEdit*> panel_classified_edit_map_t; diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 4e63563979..6038ab20d8 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -217,6 +217,10 @@ void LLPanelProfile::setAllChildrenVisible(BOOL visible)  void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)  { +	// Hide currently visible panel (STORM-690). +	setAllChildrenVisible(FALSE); + +	// Add the panel or bring it to front.  	if (panel->getParent() != this)  	{  		addChild(panel); @@ -243,6 +247,18 @@ void LLPanelProfile::closePanel(LLPanel* panel)  	if (panel->getParent() == this)   	{  		removeChild(panel); + +		// Make the underlying panel visible. +		const child_list_t* child_list = getChildList(); +		if (child_list->size() > 0) +		{ +			child_list->front()->setVisible(TRUE); +			child_list->front()->setFocus(TRUE); // prevent losing focus by the floater +		} +		else +		{ +			llwarns << "No underlying panel to make visible." << llendl; +		}  	}  } diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index a4f855f279..3f8aeaf400 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -118,7 +118,7 @@ public:  protected:  	LLSideTrayTab(const Params& params); -	void			dock(); +	void			dock(LLFloater* floater_tab);  	void			undock(LLFloater* floater_tab);  	LLSideTray*		getSideTray(); @@ -259,7 +259,7 @@ void LLSideTrayTab::toggleTabDocked()  	if (docking)  	{ -		dock(); +		dock(floater_tab);  	}  	else  	{ @@ -271,11 +271,14 @@ void LLSideTrayTab::toggleTabDocked()  	LLFloaterReg::toggleInstance("side_bar_tab", tab_name);  } -void LLSideTrayTab::dock() +void LLSideTrayTab::dock(LLFloater* floater_tab)  {  	LLSideTray* side_tray = getSideTray();  	if (!side_tray) return; +	// Before docking the tab, reset its (and its children's) transparency to default (STORM-688). +	floater_tab->updateTransparency(TT_DEFAULT); +  	if (!side_tray->addTab(this))  	{  		llwarns << "Failed to add tab " << getName() << " to side tray" << llendl; diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 328298bda4..56e9739350 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -564,25 +564,27 @@ void LLFloaterTexturePicker::draw()  		LLRect interior = border;  		interior.stretch( -1 );  +		// If the floater is focused, don't apply its alpha to the texture (STORM-677). +		const F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();  		if( mTexturep )  		{  			if( mTexturep->getComponents() == 4 )  			{ -				gl_rect_2d_checkerboard( interior ); +				gl_rect_2d_checkerboard( interior, alpha );  			} -			gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep ); +			gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep, UI_VERTEX_COLOR % alpha );  			// Pump the priority  			mTexturep->addTextureStats( (F32)(interior.getWidth() * interior.getHeight()) );  		}  		else if (!mFallbackImage.isNull())  		{ -			mFallbackImage->draw(interior); +			mFallbackImage->draw(interior, UI_VERTEX_COLOR % alpha);  		}  		else  		{ -			gl_rect_2d( interior, LLColor4::grey, TRUE ); +			gl_rect_2d( interior, LLColor4::grey % alpha, TRUE );  			// Draw X  			gl_draw_x(interior, LLColor4::black ); @@ -1263,23 +1265,25 @@ void LLTextureCtrl::draw()  	LLRect interior = border;  	interior.stretch( -1 );  +	// If we're in a focused floater, don't apply the floater's alpha to the texture (STORM-677). +	const F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();  	if( mTexturep )  	{  		if( mTexturep->getComponents() == 4 )  		{ -			gl_rect_2d_checkerboard( interior ); +			gl_rect_2d_checkerboard( interior, alpha );  		} -		gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep); +		gl_draw_scaled_image( interior.mLeft, interior.mBottom, interior.getWidth(), interior.getHeight(), mTexturep, UI_VERTEX_COLOR % alpha);  		mTexturep->addTextureStats( (F32)(interior.getWidth() * interior.getHeight()) );  	}  	else if (!mFallbackImage.isNull())  	{ -		mFallbackImage->draw(interior); +		mFallbackImage->draw(interior, UI_VERTEX_COLOR % alpha);  	}  	else  	{ -		gl_rect_2d( interior, LLColor4::grey, TRUE ); +		gl_rect_2d( interior, LLColor4::grey % alpha, TRUE );  		// Draw X  		gl_draw_x( interior, LLColor4::black ); diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 8176b8c1f9..8916469e67 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -141,10 +141,6 @@ LLToast::LLToast(const LLToast::Params& p)  	// init callbacks if present  	if(!p.on_delete_toast().empty())  		mOnDeleteToastSignal.connect(p.on_delete_toast()); - -	// *TODO: This signal doesn't seem to be used at all. -	if(!p.on_mouse_enter().empty()) -		mOnMouseEnterSignal.connect(p.on_mouse_enter());  }  void LLToast::reshape(S32 width, S32 height, BOOL called_from_parent) @@ -402,7 +398,6 @@ void LLToast::onToastMouseEnter()  		{  			mHideBtn->setVisible(TRUE);  		} -		mOnMouseEnterSignal(this);  		mToastMouseEnterSignal(this, getValue());  	}  } diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index fb534561c9..d23e858c5c 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -90,8 +90,7 @@ public:  										fading_time_secs; // Number of seconds while a toast is transparent -		Optional<toast_callback_t>		on_delete_toast, -										on_mouse_enter; +		Optional<toast_callback_t>		on_delete_toast;  		Optional<bool>					can_fade,  										can_be_stored,  										enable_hide_btn, @@ -142,7 +141,7 @@ public:  	//  	virtual void setVisible(BOOL show); -	/*virtual*/ void setBackgroundOpaque(BOOL b); +	virtual void setBackgroundOpaque(BOOL b);  	//  	virtual void hide(); @@ -182,7 +181,6 @@ public:  	// Registers signals/callbacks for events  	toast_signal_t mOnFadeSignal; -	toast_signal_t mOnMouseEnterSignal;  	toast_signal_t mOnDeleteToastSignal;  	toast_signal_t mOnToastDestroyedSignal;  	boost::signals2::connection setOnFadeCallback(toast_callback_t cb) { return mOnFadeSignal.connect(cb); } @@ -200,6 +198,10 @@ public:  	LLHandle<LLToast> getHandle() { mHandle.bind(this); return mHandle; } +	bool			getTransparentState() const { return mIsTransparent; } +	virtual void	setTransparentState(bool transparent); + +  private:  	void onToastMouseEnter(); @@ -208,8 +210,6 @@ private:  	void expire(); -	void setTransparentState(bool transparent); -  	LLUUID				mNotificationID;  	LLUUID				mSessionID;  	LLNotificationPtr	mNotification; diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 7ae1f672e8..f4dec9294f 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -3024,7 +3024,7 @@ void LLVOAvatar::idleUpdateNameTagText(BOOL new_name)  				std::deque<LLChat>::iterator chat_iter = mChats.begin();  				mNameText->clearString(); -		LLColor4 new_chat = LLUIColorTable::instance().getColor( "NameTagChat" ); +				LLColor4 new_chat = LLUIColorTable::instance().getColor( isSelf() ? "UserChatColor" : "AgentChatColor" );  				LLColor4 normal_chat = lerp(new_chat, LLColor4(0.8f, 0.8f, 0.8f, 1.f), 0.7f);  				LLColor4 old_chat = lerp(normal_chat, LLColor4(0.6f, 0.6f, 0.6f, 1.f), 0.7f);  				if (mTyping && mChats.size() >= MAX_BUBBLE_CHAT_UTTERANCES)  diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index be94b40065..62441fd984 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -139,9 +139,6 @@       name="AvatarListItemIconVoiceLeftColor"       reference="AvatarListItemIconOfflineColor" />      <color -     name="BackgroundChatColor" -     reference="White" /> -    <color       name="ButtonBorderColor"       reference="Unused?" />      <color diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index cd5922a9a2..49deb9b025 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -20,6 +20,7 @@       left="0"       name="normal_background"       top="17" +     use_draw_context_alpha="false"       width="350" />     <text       type="string" @@ -292,6 +293,7 @@ Re-enter amount to see the latest exchange rate.       left="0"       name="error_background"       top="15" +     use_draw_context_alpha="false"       width="350"/>      <text       type="string" diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml index 4c5113aa55..ab966dbb0e 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -2,9 +2,6 @@  <floater   border_visible="false"   border="false" - bg_opaque_image="Window_Foreground"  - bg_alpha_image="Window_Background"  - bg_alpha_image_overlay="DkGray_66"    legacy_header_height="18"   can_minimize="true"   can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml index 0fb7691ee7..6c8d994bc6 100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml @@ -49,7 +49,8 @@       left="10"       tab_stop="false"       top="2" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index f60c1e62ac..e512d63f9e 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -33,7 +33,8 @@       left="10"       tab_stop="false"       top="2" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />     <text       type="string"       length="1" diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index a284d3ccc0..a028e3ab9f 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -27,7 +27,8 @@       left="10"       tab_stop="false"       top="2" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />     <text       type="string"       length="1" diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index b3e9586ee9..ac8917d272 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -147,7 +147,8 @@       pad_left="24"       tool_tip="Return to Edit Outfit"       top="3" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 0347d2feec..ec3f3b48bc 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -45,7 +45,8 @@ background_visible="true"       left="7"       tab_stop="false"       top="2" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text_editor       allow_scroll="false"       bg_visible="false" diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml index 6ee2abc70f..d2088594dd 100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -68,7 +68,8 @@       tool_tip="Back"       tab_stop="false"       top="4" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index b181ca3bba..89feba7c3c 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -127,7 +127,7 @@ top="20"   </text>  <combo_box  allow_text_entry="true" -control_name="LoginLocation" +control_name="NextLoginLocation"    follows="left|bottom"    height="23"  max_chars="128" diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index f4dee9cd55..e1cd78bad8 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -70,7 +70,8 @@       left="5"       tab_stop="false"       top="1" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 0496c86215..7daa52b2d9 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -21,7 +21,8 @@       left="10"       tab_stop="false"       top="2" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index 8036411d2b..7e89860c60 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -165,7 +165,8 @@       tool_tip="Back"       tab_stop="false"       top="4" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 0c75399764..5797a63f4e 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml @@ -275,14 +275,14 @@     height="12"     name="bubble_chat"     top_pad="20" -   width="120" +   width="140"     > -    Bubble chat: +    Bubble chat background:    </text>    <color_swatch     can_apply_immediately="true"     color="0 0 0 1" -   control_name="BackgroundChatColor" +   control_name="NameTagBackground"     follows="left|top"     height="24"     label_height="0" @@ -294,10 +294,10 @@     width="44">     <color_swatch.init_callback      function="Pref.getUIColor" -    parameter="BackgroundChatColor" /> +    parameter="NameTagBackground" />     <color_swatch.commit_callback      function="Pref.applyUIColor" -    parameter="BackgroundChatColor" /> +    parameter="NameTagBackground" />    </color_swatch>    <slider     control_name="ChatBubbleOpacity" @@ -333,7 +333,7 @@     initial_value="0.8"     layout="topleft"     label_width="115" -   label="Active :" +   label="Active:"     left="50"     max_val="1.00"     min_val="0.00" @@ -351,7 +351,7 @@     initial_value="0.5"     layout="topleft"     label_width="115" -   label="Inctive :" +   label="Inactive:"     left="50"     max_val="1.00"     min_val="0.00" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 2ddb81559f..626122c0b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -185,7 +185,7 @@       layout="topleft"       left_pad="10"       mouse_opaque="false" -     name="cache_size_label_l" +     name="block_list_label"       top_delta="3"       text_color="LtGray_50"       width="300"> diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml index 97229c413c..c553a3aba0 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -27,7 +27,8 @@     left="10"     tab_stop="false"     top="2" -   width="30" /> +   width="30" +   use_draw_context_alpha="false" />    <text     top="10"     follows="top|left" diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml index 6940d1549b..54a312bd59 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml @@ -56,7 +56,8 @@       name="back_btn"       tab_stop="false"       top="2" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />      <text       follows="top|left|right"       font="SansSerifHugeBold" diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml index ca63d2df39..afaf41d073 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml @@ -65,7 +65,8 @@       name="back_btn"       tab_stop="false"       top="0" -     width="30" /> +     width="30" +     use_draw_context_alpha="false" />          <text       follows="top|left|right"       font="SansSerifHuge" diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml index a35e2c3663..a1e32e44de 100644 --- a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml @@ -1,4 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<avatar_icon default_icon_name="Generic_Person_Large"> +<avatar_icon +    default_icon_name="Generic_Person_Large" +    use_draw_context_alpha="false">  </avatar_icon> diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 2d0a1728d5..1746a045cf 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -24,5 +24,6 @@          halign="center"          pad_bottom="3"           height="23" -        scale_image="true"> +        scale_image="true" +        use_draw_context_alpha="true">  </button> diff --git a/indra/newview/skins/default/xui/en/widgets/icon.xml b/indra/newview/skins/default/xui/en/widgets/icon.xml index adb743a628..cf8edfcedb 100644 --- a/indra/newview/skins/default/xui/en/widgets/icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/icon.xml @@ -3,5 +3,6 @@        tab_stop="false"        mouse_opaque="false"        name="icon" +      use_draw_context_alpha="true"        follows="left|top">  </icon> | 
