SL-16892 Fix incorrect width of dropdown menus
parent
4e31ff1d7e
commit
900c13d361
|
|
@ -113,6 +113,10 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p)
|
|||
}
|
||||
|
||||
mArrowImage = button_params.image_unselected;
|
||||
if (mArrowImage.notNull())
|
||||
{
|
||||
mImageLoadedConnection = mArrowImage->addLoadedCallback(boost::bind(&LLComboBox::imageLoaded, this));
|
||||
}
|
||||
|
||||
mButton = LLUICtrlFactory::create<LLButton>(button_params);
|
||||
|
||||
|
|
@ -183,6 +187,7 @@ LLComboBox::~LLComboBox()
|
|||
|
||||
// explicitly disconect this signal, since base class destructor might fire top lost
|
||||
mTopLostSignalConnection.disconnect();
|
||||
mImageLoadedConnection.disconnect();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1074,6 +1079,30 @@ void LLComboBox::onSetHighlight() const
|
|||
}
|
||||
}
|
||||
|
||||
void LLComboBox::imageLoaded()
|
||||
{
|
||||
static LLUICachedControl<S32> drop_shadow_button("DropShadowButton", 0);
|
||||
|
||||
if (mAllowTextEntry)
|
||||
{
|
||||
LLRect rect = getLocalRect();
|
||||
S32 arrow_width = mArrowImage ? mArrowImage->getWidth() : 0;
|
||||
S32 shadow_size = drop_shadow_button;
|
||||
mButton->setRect(LLRect(getRect().getWidth() - llmax(8, arrow_width) - 2 * shadow_size,
|
||||
rect.mTop, rect.mRight, rect.mBottom));
|
||||
if (mButton->getVisible())
|
||||
{
|
||||
// recalculate field size
|
||||
if (mTextEntry)
|
||||
{
|
||||
LLRect text_entry_rect(0, getRect().getHeight(), getRect().getWidth(), 0);
|
||||
text_entry_rect.mRight -= llmax(8, arrow_width) + 2 * drop_shadow_button;
|
||||
mTextEntry->reshape(text_entry_rect.getWidth(), text_entry_rect.getHeight(), TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
// LLCtrlListInterface functions
|
||||
|
||||
|
|
|
|||
|
|
@ -105,6 +105,8 @@ protected:
|
|||
virtual std::string _getSearchText() const;
|
||||
virtual void onSetHighlight() const;
|
||||
|
||||
void imageLoaded();
|
||||
|
||||
public:
|
||||
// LLView interface
|
||||
virtual void onFocusLost();
|
||||
|
|
@ -244,6 +246,7 @@ private:
|
|||
commit_callback_t mTextChangedCallback;
|
||||
commit_callback_t mSelectionCallback;
|
||||
boost::signals2::connection mTopLostSignalConnection;
|
||||
boost::signals2::connection mImageLoadedConnection;
|
||||
commit_signal_t mOnReturnSignal;
|
||||
S32 mLastSelectedIndex;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue