diff options
Diffstat (limited to 'indra/llui')
| -rw-r--r-- | indra/llui/llcombobox.cpp | 29 | ||||
| -rw-r--r-- | indra/llui/llcombobox.h | 3 | ||||
| -rw-r--r-- | indra/llui/lldockcontrol.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lllayoutstack.cpp | 10 | 
4 files changed, 34 insertions, 12 deletions
| diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 8b6a73af56..6f9893b07a 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -316,7 +316,7 @@ void LLComboBox::setValue(const LLSD& value)  		LLScrollListItem* item = mList->getFirstSelected();  		if (item)  		{ -			setLabel(getSelectedItemLabel()); +			updateLabel();  		}  		mLastSelectedIndex = mList->getFirstSelectedIndex();  	} @@ -384,6 +384,23 @@ void LLComboBox::setLabel(const LLStringExplicit& name)  	}  } +void LLComboBox::updateLabel() +{ +	// Update the combo editor with the selected +	// item label. +	if (mTextEntry) +	{ +		mTextEntry->setText(getSelectedItemLabel()); +		mTextEntry->setTentative(FALSE); +	} + +	// If combo box doesn't allow text entry update +	// the combo button label. +	if (!mAllowTextEntry) +	{ +		mButton->setLabel(getSelectedItemLabel()); +	} +}  BOOL LLComboBox::remove(const std::string& name)  { @@ -701,13 +718,13 @@ void LLComboBox::onItemSelected(const LLSD& data)  	mLastSelectedIndex = getCurrentIndex();  	if (mLastSelectedIndex != -1)  	{ -		setLabel(getSelectedItemLabel()); +		updateLabel();  		if (mAllowTextEntry) -	{ -		gFocusMgr.setKeyboardFocus(mTextEntry); -		mTextEntry->selectAll(); -	} +		{ +			gFocusMgr.setKeyboardFocus(mTextEntry); +			mTextEntry->selectAll(); +		}  	}  	// hiding the list reasserts the old value stored in the text editor/dropdown button  	hideList(); diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index 74d64269bd..e9ef9d07e4 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -148,6 +148,9 @@ public:  	// This is probably a UI abuse.  	void			setLabel(const LLStringExplicit& name); +	// Updates the combobox label to match the selected list item. +	void			updateLabel(); +  	BOOL			remove(const std::string& name);	// remove item "name", return TRUE if found and removed  	BOOL			setCurrentByIndex( S32 index ); diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index f6f5a0beb3..5ed2c27160 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -160,8 +160,10 @@ bool LLDockControl::isDockVisible()  			case TOP:  			{  				// check is dock inside parent rect +				// assume that parent for all dockable flaoters +				// is the root view  				LLRect dockParentRect = -						mDockWidget->getParent()->calcScreenRect(); +						mDockWidget->getRootView()->calcScreenRect();  				if (dockRect.mRight <= dockParentRect.mLeft  						|| dockRect.mLeft >= dockParentRect.mRight)  				{ diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 19ac4c58a8..9b6830a816 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -563,7 +563,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  	}  	// update resize bars with new limits -	LLResizeBar* last_resize_bar = NULL; +	LLLayoutPanel* last_resizeable_panel = NULL;  	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)  	{  		LLPanel* panelp = (*panel_it); @@ -585,17 +585,17 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  		BOOL resize_bar_enabled = panelp->getVisible() && (*panel_it)->mUserResize;  		(*panel_it)->mResizeBar->setVisible(resize_bar_enabled); -		if (resize_bar_enabled) +		if ((*panel_it)->mUserResize || (*panel_it)->mAutoResize)  		{ -			last_resize_bar = (*panel_it)->mResizeBar; +			last_resizeable_panel = (*panel_it);  		}  	}  	// hide last resize bar as there is nothing past it  	// resize bars need to be in between two resizable panels -	if (last_resize_bar) +	if (last_resizeable_panel)  	{ -		last_resize_bar->setVisible(FALSE); +		last_resizeable_panel->mResizeBar->setVisible(FALSE);  	}  	// not enough room to fit existing contents | 
