From ce27036017eb4c3e7b51f620597e50330232f38c Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Thu, 4 Mar 2010 16:22:31 +0200 Subject: Backed out changeset: 0160afd678a5 Implemented solution fixed bug caused by changes made for EXT-3852 (07f21c92896f & 07f21c92896f). For now previous changes for EXT-3852 are reverted. So, changes for EXT-4572 (Click and hold the left mouse button doesn't let you browse tabbed IM floater) are unnecessary. --HG-- branch : product-engine --- indra/llui/lltabcontainer.cpp | 7 ------- 1 file changed, 7 deletions(-) (limited to 'indra/llui') diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 1dcfb4e296..30fc7babae 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -2061,12 +2061,5 @@ void LLTabContainer::commitHoveredButton(S32 x, S32 y) tuple->mButton->onCommit(); } } - /** - * EXT - 4572 (Click and hold the left mouse button doesn't let you browse tabbed IM floater) - * - * During hovering mouse(with left mouse button hold) over tabs, a newly just activated corresponding - * to the tab(that is hovered in the given instant of time) panel may caught mouse capture. - */ - gFocusMgr.setMouseCapture(this); } } -- cgit v1.2.3 From a8e1c2ed134b88b55b713ac53cd63cab4bb526b3 Mon Sep 17 00:00:00 2001 From: Sergei Litovchuk Date: Fri, 5 Mar 2010 15:41:25 +0200 Subject: Implemented (EXT-4705) Show maturity icon on Region/Estate tab. - Added LLIconsComboBox class - a combobox with icons for maturity ratings. - Fixed scroll list maximum width calculation. The width was calculated based on text value width for non-text columns. - Added image overlay alignment getter method to LLButton. --HG-- branch : product-engine --- indra/llui/llbutton.h | 1 + indra/llui/llcombobox.cpp | 45 +++++++++++++++++++++++++++++++---------- indra/llui/llcombobox.h | 33 +++++++++++++++++++++++++++++- indra/llui/llscrolllistctrl.cpp | 4 +++- 4 files changed, 70 insertions(+), 13 deletions(-) (limited to 'indra/llui') diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 6a0d8ef3d6..59b551a16d 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -216,6 +216,7 @@ public: void setImageOverlay(const std::string& image_name, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white); void setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white); LLPointer getImageOverlay() { return mImageOverlay; } + LLFontGL::HAlign getImageOverlayHAlign() const { return mImageOverlayAlignment; } void autoResize(); // resize with label of current btn state void resize(LLUIString label); // resize with label input diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 9d23daf56d..98c9217306 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -703,19 +703,12 @@ void LLComboBox::onListMouseUp() void LLComboBox::onItemSelected(const LLSD& data) { - const std::string name = mList->getSelectedItemLabel(); + setValue(data); - S32 cur_id = getCurrentIndex(); - mLastSelectedIndex = cur_id; - if (cur_id != -1) + if (mAllowTextEntry && mLastSelectedIndex != -1) { - setLabel(name); - - 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 @@ -1069,3 +1062,33 @@ BOOL LLComboBox::selectItemRange( S32 first, S32 last ) { return mList->selectItemRange(first, last); } + + +static LLDefaultChildRegistry::Register register_icons_combo_box("icons_combo_box"); + +LLIconsComboBox::Params::Params() +: icon_column("icon_column", ICON_COLUMN), + label_column("label_column", LABEL_COLUMN) +{} + +LLIconsComboBox::LLIconsComboBox(const LLIconsComboBox::Params& p) +: LLComboBox(p), + mIconColumnIndex(p.icon_column), + mLabelColumnIndex(p.label_column) +{} + +void LLIconsComboBox::setValue(const LLSD& value) +{ + BOOL found = mList->selectByValue(value); + if (found) + { + LLScrollListItem* item = mList->getFirstSelected(); + if (item) + { + mButton->setImageOverlay(mList->getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign()); + + setLabel(mList->getSelectedItemLabel(mLabelColumnIndex)); + } + mLastSelectedIndex = mList->getFirstSelectedIndex(); + } +} diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index 4f27588467..3cc2a8f5d1 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -221,6 +221,7 @@ protected: LLPointer mArrowImage; LLUIString mLabel; BOOL mHasAutocompletedText; + S32 mLastSelectedIndex; private: BOOL mAllowTextEntry; @@ -230,6 +231,36 @@ private: commit_callback_t mPrearrangeCallback; commit_callback_t mTextEntryCallback; commit_callback_t mSelectionCallback; - S32 mLastSelectedIndex; }; + +// A combo box with icons for the list of items. +class LLIconsComboBox +: public LLComboBox +{ +public: + struct Params + : public LLInitParam::Block + { + Optional icon_column, + label_column; + Params(); + }; + + /*virtual*/ void setValue(const LLSD& value); + +private: + enum EColumnIndex + { + ICON_COLUMN = 0, + LABEL_COLUMN + }; + + friend class LLUICtrlFactory; + LLIconsComboBox(const Params&); + virtual ~LLIconsComboBox() {}; + + S32 mIconColumnIndex; + S32 mLabelColumnIndex; +}; + #endif diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 77caaaa425..18ec5b51dd 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -630,7 +630,9 @@ void LLScrollListCtrl::calcColumnWidths() LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex); if (!cellp) continue; - column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth); + // get text value width only for text cells + column->mMaxContentWidth = cellp->isText() ? + llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth) : column->mMaxContentWidth; } max_item_width += column->mMaxContentWidth; -- cgit v1.2.3