diff options
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/lldockablefloater.cpp | 2 | ||||
| -rw-r--r-- | indra/llui/lldockcontrol.cpp | 41 | ||||
| -rw-r--r-- | indra/llui/lldockcontrol.h | 5 | ||||
| -rw-r--r-- | indra/llui/llfloater.cpp | 39 | ||||
| -rw-r--r-- | indra/llui/llfloater.h | 1 | ||||
| -rw-r--r-- | indra/llui/llmultisliderctrl.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/llpanel.cpp | 8 | ||||
| -rw-r--r-- | indra/llui/llscrolllistctrl.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lltabcontainer.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lltooltip.cpp | 6 | ||||
| -rw-r--r-- | indra/llui/lltooltip.h | 2 | ||||
| -rw-r--r-- | indra/llui/llui.cpp | 1 | ||||
| -rw-r--r-- | indra/llui/llurlentry.cpp | 2 | 
14 files changed, 93 insertions, 33 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index a94f0206a6..0492ab0f25 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -95,7 +95,7 @@ void LLDockableFloater::toggleInstance(const LLSD& sdname)  	LLDockableFloater* instance =  			dynamic_cast<LLDockableFloater*> (LLFloaterReg::findInstance(name));  	// if floater closed or docked -	if (instance == NULL || instance != NULL && instance->isDocked()) +	if (instance == NULL || (instance && instance->isDocked()))  	{  		LLFloaterReg::toggleInstance(name, key);  		// restore button toggle state diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index d836a5f4cd..d738b10130 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -162,7 +162,9 @@ bool LLDockControl::isDockVisible()  			{  			case LEFT: // to keep compiler happy  				break; +			case BOTTOM:  			case TOP: +			{  				// check is dock inside parent rect  				LLRect dockParentRect =  						mDockWidget->getParent()->calcScreenRect(); @@ -173,6 +175,9 @@ bool LLDockControl::isDockVisible()  				}  				break;  			} +			default: +				break; +			}  		}  	} @@ -255,6 +260,42 @@ void LLDockControl::moveDockable()  		mDockTongueY = dockRect.mTop;  		break; +	case BOTTOM: +		x = dockRect.getCenterX() - dockableRect.getWidth() / 2; +		y = dockRect.mBottom; +		// unique docking used with dock tongue, so add tongue height o the Y coordinate +		if (use_tongue) +		{ +			y -= mDockTongue->getHeight(); +		} + +		// check is dockable inside root view rect +		if (x < rootRect.mLeft) +		{ +			x = rootRect.mLeft; +		} +		if (x + dockableRect.getWidth() > rootRect.mRight) +		{ +			x = rootRect.mRight - dockableRect.getWidth(); +		} + +		// calculate dock tongue position +		dockParentRect = mDockWidget->getParent()->calcScreenRect(); +		if (dockRect.getCenterX() < dockParentRect.mLeft) +		{ +			mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2; +		} +		else if (dockRect.getCenterX() > dockParentRect.mRight) +		{ +			mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;; +		} +		else +		{ +			mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2; +		} +		mDockTongueY = dockRect.mBottom - mDockTongue->getHeight(); + +		break;  	}  	// move dockable diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index 550955c4c5..a5caf68001 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -47,8 +47,9 @@ class LLDockControl  public:  	enum DocAt  	{ -		TOP -		,LEFT +		TOP, +		LEFT, +		BOTTOM  	};  public: diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index a55915af35..0199fe3f57 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1565,25 +1565,13 @@ void LLFloater::draw()  	// draw background  	if( isBackgroundVisible() )  	{ +		drawShadow(this); +  		S32 left = LLPANEL_BORDER_WIDTH;  		S32 top = getRect().getHeight() - LLPANEL_BORDER_WIDTH;  		S32 right = getRect().getWidth() - LLPANEL_BORDER_WIDTH;  		S32 bottom = LLPANEL_BORDER_WIDTH; -		static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0); -		static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow"); -		LLColor4 shadow_color = shadow_color_cached; -		F32 shadow_offset = (F32)shadow_offset_S32; - -		if (!isBackgroundOpaque()) -		{ -			shadow_offset *= 0.2f; -			shadow_color.mV[VALPHA] *= 0.5f; -		} -		gl_drop_shadow(left, top, right, bottom,  -			shadow_color % alpha,  -			llround(shadow_offset)); -  		LLUIImage* image = NULL;  		LLColor4 color;  		if (isBackgroundOpaque()) @@ -1666,6 +1654,29 @@ void LLFloater::draw()  	}  } +void	LLFloater::drawShadow(LLPanel* panel) +{ +	F32 alpha = panel->getDrawContext().mAlpha; +	S32 left = LLPANEL_BORDER_WIDTH; +	S32 top = panel->getRect().getHeight() - LLPANEL_BORDER_WIDTH; +	S32 right = panel->getRect().getWidth() - LLPANEL_BORDER_WIDTH; +	S32 bottom = LLPANEL_BORDER_WIDTH; + +	static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0); +	static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow"); +	LLColor4 shadow_color = shadow_color_cached; +	F32 shadow_offset = (F32)shadow_offset_S32; + +	if (!panel->isBackgroundOpaque()) +	{ +		shadow_offset *= 0.2f; +		shadow_color.mV[VALPHA] *= 0.5f; +	} +	gl_drop_shadow(left, top, right, bottom,  +		shadow_color % alpha,  +		llround(shadow_offset)); +} +  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 2166d8db8a..19e8288807 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -222,6 +222,7 @@ public:  	virtual BOOL	handleScrollWheel(S32 x, S32 y, S32 mask);  	virtual void	draw(); +	virtual void	drawShadow(LLPanel* panel);  	virtual void	onOpen(const LLSD& key) {}  	virtual void	onClose(bool app_quitting) {} diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp index 50942e55ca..cc26c00a3e 100644 --- a/indra/llui/llmultisliderctrl.cpp +++ b/indra/llui/llmultisliderctrl.cpp @@ -330,13 +330,14 @@ void LLMultiSliderCtrl::updateText()  // static  void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)  { +	llassert(ctrl); +	if (!ctrl) +		return; +  	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());  	llassert(self);  	if (!self) // cast failed - wrong type! :O  		return; - -	if (!ctrl) -		return;  	BOOL success = FALSE;  	F32 val = self->mCurValue; diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 7b406e090a..d963cf4c98 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -397,6 +397,12 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_  		if (!panelp)  		{  			panelp = LLUICtrlFactory::getInstance()->createFactoryPanel(name); +			llassert(panelp); +			 +			if (!panelp) +			{ +				return NULL; // :( +			}  		}  	} @@ -414,7 +420,7 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_  	panelp->mCommitCallbackRegistrar.popScope();  	panelp->mEnableCallbackRegistrar.popScope(); -	if (panelp && !panelp->getFactoryMap().empty()) +	if (!panelp->getFactoryMap().empty())  	{  		LLUICtrlFactory::instance().popFactoryFunctions();  	} diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 478e270c98..ac4811210b 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -1388,6 +1388,8 @@ void LLScrollListCtrl::drawItems()  	LLGLSUIDefault gls_ui; +	F32 alpha = getDrawContext().mAlpha; +  	{  		LLLocalClipRect clip(mItemListRect); @@ -1463,7 +1465,7 @@ void LLScrollListCtrl::drawItems()  					bg_color = mBgReadOnlyColor.get();  				} -				item->draw(item_rect, fg_color, bg_color, highlight_color, mColumnPadding); +				item->draw(item_rect, fg_color % alpha, bg_color% alpha, highlight_color % alpha, mColumnPadding);  				cur_y -= mLineHeight;  			} diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 13340e7ded..e810b6fe8f 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -891,6 +891,10 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon  void LLTabContainer::addTabPanel(const TabPanelParams& panel)  {  	LLPanel* child = panel.panel(); + +	llassert(child); +	if (!child) return; +  	const std::string& label = panel.label.isProvided()   			? panel.label()   			: panel.panel()->getLabel(); diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index ce5f1bd082..7d230f7d42 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2524,9 +2524,9 @@ void LLTextEditor::loadKeywords(const std::string& filename,  void LLTextEditor::updateSegments()  { -	LLFastTimer ft(FTM_SYNTAX_HIGHLIGHTING); -	if (mKeywords.isLoaded()) +	if (mReflowIndex < S32_MAX && mKeywords.isLoaded())  	{ +		LLFastTimer ft(FTM_SYNTAX_HIGHLIGHTING);  		// HACK:  No non-ascii keywords for now  		segment_vec_t segment_list;  		mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this); diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 173fde8e76..ed7fd02e14 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -129,12 +129,6 @@ BOOL LLToolTipView::handleScrollWheel( S32 x, S32 y, S32 clicks )  	return FALSE;  } -void LLToolTipView::onMouseLeave(S32 x, S32 y, MASK mask) -{ -	LLToolTipMgr::instance().blockToolTips(); -} - -  void LLToolTipView::drawStickyRect()  {  	gl_rect_2d(LLToolTipMgr::instance().getMouseNearRect(), LLColor4::white, false); diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index c0811c56c3..24e32b9b24 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -56,8 +56,6 @@ public:  	/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);  	/*virtual*/ BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); -	/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); -  	void drawStickyRect();  	/*virtual*/ void draw(); diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 9d5953e380..93c32f531f 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1941,6 +1941,7 @@ namespace LLInitParam  		size("size"),  		style("style")  	{ +		setBlockFromValue();  		addSynonym(name, "");  		setBlockFromValue();  	} diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 92b7816bdd..3c73ae9b0c 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -287,7 +287,7 @@ std::string LLUrlEntrySLURL::getLabel(const std::string &url, const LLUrlLabelCa  std::string LLUrlEntrySLURL::getLocation(const std::string &url) const  {  	// return the part of the Url after slurl.com/secondlife/ -	const std::string search_string = "secondlife"; +	const std::string search_string = "/secondlife";  	size_t pos = url.find(search_string);  	if (pos == std::string::npos)  	{  | 
