summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2020-06-24 00:08:35 +0300
committerAndrey Lihatskiy <alihatskiy@productengine.com>2020-06-24 00:08:35 +0300
commitb8127f80c7e305b0c5af7a824b45c81432a8e6b8 (patch)
treeed34b16459488ce3e6293f84447f04c31ce4887a /indra/llui
parentaabb0bbc49aa15b100dc8c2cbf286202cb084646 (diff)
parent05f3287512557cd4cb41de7a8fe3f5171a48481d (diff)
Merge branch 'DRTVWR-501-maint' into DRTVWR-503-maint
# Conflicts: # indra/llcommon/llkeybind.cpp # indra/llcommon/llkeybind.h
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/llmenugl.cpp42
-rw-r--r--indra/llui/llmenugl.h18
-rw-r--r--indra/llui/llscrolllistcell.cpp149
-rw-r--r--indra/llui/llscrolllistcell.h31
-rw-r--r--indra/llui/llscrolllistctrl.cpp177
-rw-r--r--indra/llui/llscrolllistctrl.h21
-rw-r--r--indra/llui/llscrolllistitem.cpp56
-rw-r--r--indra/llui/llscrolllistitem.h21
8 files changed, 59 insertions, 456 deletions
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index b87819102b..5568a84494 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -213,12 +213,6 @@ LLSD LLMenuItemGL::getValue() const
}
//virtual
-bool LLMenuItemGL::hasAccelerator(const KEY &key, const MASK &mask) const
-{
- return (mAcceleratorKey == key) && (mAcceleratorMask == mask);
-}
-
-//virtual
BOOL LLMenuItemGL::handleAcceleratorKey(KEY key, MASK mask)
{
if( getEnabled() && (!gKeyboard->getKeyRepeated(key) || mAllowKeyRepeat) && (key == mAcceleratorKey) && (mask == (mAcceleratorMask & MASK_NORMALKEYS)) )
@@ -269,13 +263,13 @@ BOOL LLMenuItemGL::handleRightMouseUp(S32 x, S32 y, MASK mask)
// This function checks to see if the accelerator key is already in use;
// if not, it will be added to the list
-BOOL LLMenuItemGL::addToAcceleratorList(std::list <LLMenuKeyboardBinding*> *listp)
+BOOL LLMenuItemGL::addToAcceleratorList(std::list <LLKeyBinding*> *listp)
{
- LLMenuKeyboardBinding *accelerator = NULL;
+ LLKeyBinding *accelerator = NULL;
if (mAcceleratorKey != KEY_NONE)
{
- std::list<LLMenuKeyboardBinding*>::iterator list_it;
+ std::list<LLKeyBinding*>::iterator list_it;
for (list_it = listp->begin(); list_it != listp->end(); ++list_it)
{
accelerator = *list_it;
@@ -299,7 +293,7 @@ BOOL LLMenuItemGL::addToAcceleratorList(std::list <LLMenuKeyboardBinding*> *list
}
if (!accelerator)
{
- accelerator = new LLMenuKeyboardBinding;
+ accelerator = new LLKeyBinding;
if (accelerator)
{
accelerator->mKey = mAcceleratorKey;
@@ -1023,11 +1017,6 @@ BOOL LLMenuItemBranchGL::handleMouseUp(S32 x, S32 y, MASK mask)
return TRUE;
}
-bool LLMenuItemBranchGL::hasAccelerator(const KEY &key, const MASK &mask) const
-{
- return getBranch() && getBranch()->hasAccelerator(key, mask);
-}
-
BOOL LLMenuItemBranchGL::handleAcceleratorKey(KEY key, MASK mask)
{
return getBranch() && getBranch()->handleAcceleratorKey(key, mask);
@@ -1035,7 +1024,7 @@ BOOL LLMenuItemBranchGL::handleAcceleratorKey(KEY key, MASK mask)
// This function checks to see if the accelerator key is already in use;
// if not, it will be added to the list
-BOOL LLMenuItemBranchGL::addToAcceleratorList(std::list<LLMenuKeyboardBinding*> *listp)
+BOOL LLMenuItemBranchGL::addToAcceleratorList(std::list<LLKeyBinding*> *listp)
{
LLMenuGL* branch = getBranch();
if (!branch)
@@ -3034,27 +3023,6 @@ void LLMenuGL::updateParent(LLView* parentp)
}
}
-bool LLMenuGL::hasAccelerator(const KEY &key, const MASK &mask) const
-{
- if (key == KEY_NONE)
- {
- return false;
- }
- // Note: checking this way because mAccelerators seems to be broken
- // mAccelerators probably needs to be cleaned up or fixed
- // It was used for dupplicate accelerator avoidance.
- item_list_t::const_iterator item_iter;
- for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter)
- {
- LLMenuItemGL* itemp = *item_iter;
- if (itemp->hasAccelerator(key, mask))
- {
- return true;
- }
- }
- return false;
-}
-
BOOL LLMenuGL::handleAcceleratorKey(KEY key, MASK mask)
{
// don't handle if not enabled
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 8cef9c6463..1f11f26192 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -42,13 +42,6 @@
extern S32 MENU_BAR_HEIGHT;
extern S32 MENU_BAR_WIDTH;
-class LLMenuKeyboardBinding
-{
-public:
- KEY mKey;
- MASK mMask;
-};
-
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class LLMenuItemGL
//
@@ -98,7 +91,6 @@ public:
/*virtual*/ void setValue(const LLSD& value);
/*virtual*/ LLSD getValue() const;
- virtual bool hasAccelerator(const KEY &key, const MASK &mask) const;
virtual BOOL handleAcceleratorKey(KEY key, MASK mask);
LLColor4 getHighlightBgColor() { return mHighlightBackground.get(); }
@@ -117,7 +109,7 @@ public:
virtual void setBriefItem(BOOL brief);
virtual BOOL isBriefItem() const;
- virtual BOOL addToAcceleratorList(std::list<LLMenuKeyboardBinding*> *listp);
+ virtual BOOL addToAcceleratorList(std::list<LLKeyBinding*> *listp);
void setAllowKeyRepeat(BOOL allow) { mAllowKeyRepeat = allow; }
BOOL getAllowKeyRepeat() const { return mAllowKeyRepeat; }
@@ -444,8 +436,7 @@ public:
/*virtual*/ bool addChild(LLView* view, S32 tab_group = 0);
/*virtual*/ void removeChild( LLView* ctrl);
/*virtual*/ BOOL postBuild();
-
- virtual bool hasAccelerator(const KEY &key, const MASK &mask) const;
+
virtual BOOL handleAcceleratorKey(KEY key, MASK mask);
LLMenuGL* findChildMenuByName(const std::string& name, BOOL recurse) const;
@@ -637,11 +628,10 @@ public:
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
- virtual bool hasAccelerator(const KEY &key, const MASK &mask) const;
virtual BOOL handleAcceleratorKey(KEY key, MASK mask);
// check if we've used these accelerators already
- virtual BOOL addToAcceleratorList(std::list <LLMenuKeyboardBinding*> *listp);
+ virtual BOOL addToAcceleratorList(std::list <LLKeyBinding*> *listp);
// called to rebuild the draw label
virtual void buildDrawLabel( void );
@@ -807,7 +797,7 @@ private:
void checkMenuTrigger();
- std::list <LLMenuKeyboardBinding*> mAccelerators;
+ std::list <LLKeyBinding*> mAccelerators;
BOOL mAltKeyTrigger;
};
diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp
index 13839da400..8000efad0e 100644
--- a/indra/llui/llscrolllistcell.cpp
+++ b/indra/llui/llscrolllistcell.cpp
@@ -50,10 +50,6 @@ LLScrollListCell* LLScrollListCell::create(const LLScrollListCell::Params& cell_
{
cell = new LLScrollListDate(cell_p);
}
- else if (cell_p.type() == "icontext")
- {
- cell = new LLScrollListIconText(cell_p);
- }
else // default is "text"
{
cell = new LLScrollListText(cell_p);
@@ -172,7 +168,7 @@ U32 LLScrollListText::sCount = 0;
LLScrollListText::LLScrollListText(const LLScrollListCell::Params& p)
: LLScrollListCell(p),
- mText(p.label.isProvided() ? p.label() : p.value().asString()),
+ mText(p.value().asString()),
mFont(p.font),
mColor(p.color),
mUseColor(p.color.isProvided()),
@@ -196,7 +192,7 @@ LLScrollListText::LLScrollListText(const LLScrollListCell::Params& p)
void LLScrollListText::highlightText(S32 offset, S32 num_chars)
{
mHighlightOffset = offset;
- mHighlightCount = llmax(0, num_chars);
+ mHighlightCount = num_chars;
}
//virtual
@@ -296,12 +292,11 @@ void LLScrollListText::draw(const LLColor4& color, const LLColor4& highlight_col
if (mHighlightCount > 0)
{
- // Highlight text
S32 left = 0;
switch(mFontAlignment)
{
case LLFontGL::LEFT:
- left = mFont->getWidth(mText.getString(), 1, mHighlightOffset);
+ left = mFont->getWidth(mText.getString(), 0, mHighlightOffset);
break;
case LLFontGL::RIGHT:
left = getWidth() - mFont->getWidth(mText.getString(), mHighlightOffset, S32_MAX);
@@ -324,7 +319,7 @@ void LLScrollListText::draw(const LLColor4& color, const LLColor4& highlight_col
switch(mFontAlignment)
{
case LLFontGL::LEFT:
- start_x = 1.f;
+ start_x = 0.f;
break;
case LLFontGL::RIGHT:
start_x = (F32)getWidth();
@@ -440,139 +435,3 @@ const LLSD LLScrollListDate::getValue() const
{
return mDate;
}
-
-//
-// LLScrollListIconText
-//
-LLScrollListIconText::LLScrollListIconText(const LLScrollListCell::Params& p)
- : LLScrollListText(p),
- mIcon(p.value().isUUID() ? LLUI::getUIImageByID(p.value().asUUID()) : LLUI::getUIImage(p.value().asString())),
- mPad(4)
-{
- mTextWidth = getWidth() - mPad /*padding*/ - mFont->getLineHeight();
-}
-
-LLScrollListIconText::~LLScrollListIconText()
-{
-}
-
-const LLSD LLScrollListIconText::getValue() const
-{
- if (mIcon.isNull())
- {
- return LLStringUtil::null;
- }
- return mIcon->getName();
-}
-
-void LLScrollListIconText::setValue(const LLSD& value)
-{
- if (value.isUUID())
- {
- // don't use default image specified by LLUUID::null, use no image in that case
- LLUUID image_id = value.asUUID();
- mIcon = image_id.notNull() ? LLUI::getUIImageByID(image_id) : LLUIImagePtr(NULL);
- }
- else
- {
- std::string value_string = value.asString();
- if (LLUUID::validate(value_string))
- {
- setValue(LLUUID(value_string));
- }
- else if (!value_string.empty())
- {
- mIcon = LLUI::getUIImage(value.asString());
- }
- else
- {
- mIcon = NULL;
- }
- }
-}
-
-void LLScrollListIconText::setWidth(S32 width)
-{
- LLScrollListCell::setWidth(width);
- // Assume that iamge height and width is identical to font height and width
- mTextWidth = width - mPad /*padding*/ - mFont->getLineHeight();
-}
-
-
-void LLScrollListIconText::draw(const LLColor4& color, const LLColor4& highlight_color) const
-{
- LLColor4 display_color;
- if (mUseColor)
- {
- display_color = mColor;
- }
- else
- {
- display_color = color;
- }
-
- S32 icon_height = mFont->getLineHeight();
- S32 icon_space = mIcon ? (icon_height + mPad) : 0;
-
- if (mHighlightCount > 0)
- {
- S32 left = 0;
- switch (mFontAlignment)
- {
- case LLFontGL::LEFT:
- left = mFont->getWidth(mText.getString(), icon_space + 1, mHighlightOffset);
- break;
- case LLFontGL::RIGHT:
- left = getWidth() - mFont->getWidth(mText.getString(), mHighlightOffset, S32_MAX) - icon_space;
- break;
- case LLFontGL::HCENTER:
- left = (getWidth() - mFont->getWidth(mText.getString()) - icon_space) / 2;
- break;
- }
- LLRect highlight_rect(left - 2,
- mFont->getLineHeight() + 1,
- left + mFont->getWidth(mText.getString(), mHighlightOffset, mHighlightCount) + 1,
- 1);
- mRoundedRectImage->draw(highlight_rect, highlight_color);
- }
-
- // Try to draw the entire string
- F32 right_x;
- U32 string_chars = mText.length();
- F32 start_text_x = 0.f;
- S32 start_icon_x = 0;
- switch (mFontAlignment)
- {
- case LLFontGL::LEFT:
- start_text_x = icon_space + 1;
- start_icon_x = 1;
- break;
- case LLFontGL::RIGHT:
- start_text_x = (F32)getWidth();
- start_icon_x = getWidth() - mFont->getWidth(mText.getString()) - icon_space;
- break;
- case LLFontGL::HCENTER:
- F32 center = (F32)getWidth()* 0.5f;
- start_text_x = center + ((F32)icon_space * 0.5f);
- start_icon_x = center - (((F32)icon_space + mFont->getWidth(mText.getString())) * 0.5f);
- break;
- }
- mFont->render(mText.getWString(), 0,
- start_text_x, 0.f,
- display_color,
- mFontAlignment,
- LLFontGL::BOTTOM,
- 0,
- LLFontGL::NO_SHADOW,
- string_chars,
- getTextWidth(),
- &right_x,
- TRUE);
-
- if (mIcon)
- {
- mIcon->draw(start_icon_x, 0, icon_height, icon_height, mColor);
- }
-}
-
-
diff --git a/indra/llui/llscrolllistcell.h b/indra/llui/llscrolllistcell.h
index 19576fb247..d625ebddcc 100644
--- a/indra/llui/llscrolllistcell.h
+++ b/indra/llui/llscrolllistcell.h
@@ -59,8 +59,7 @@ public:
visible;
Optional<void*> userdata;
- Optional<LLSD> value; // state of checkbox, icon id/name, date
- Optional<std::string> label; // description or text
+ Optional<LLSD> value;
Optional<std::string> tool_tip;
Optional<const LLFontGL*> font;
@@ -76,7 +75,6 @@ public:
enabled("enabled", true),
visible("visible", true),
value("value"),
- label("label"),
tool_tip("tool_tip", ""),
font("font", LLFontGL::getFontSansSerifSmall()),
font_color("font_color", LLColor4::black),
@@ -154,12 +152,11 @@ public:
void setText(const LLStringExplicit& text);
void setFontStyle(const U8 font_style);
-protected:
+private:
LLUIString mText;
S32 mTextWidth;
const LLFontGL* mFont;
LLColor4 mColor;
- LLColor4 mHighlightColor;
U8 mUseColor;
LLFontGL::HAlign mFontAlignment;
BOOL mVisible;
@@ -172,7 +169,7 @@ protected:
};
/*
- * Cell displaying an image. AT the moment, this is specifically UI image
+ * Cell displaying an image.
*/
class LLScrollListIcon : public LLScrollListCell
{
@@ -226,26 +223,4 @@ private:
LLDate mDate;
};
-/*
-* Cell displaying icon and text.
-*/
-
-class LLScrollListIconText : public LLScrollListText
-{
-public:
- LLScrollListIconText(const LLScrollListCell::Params& p);
- /*virtual*/ ~LLScrollListIconText();
- /*virtual*/ void draw(const LLColor4& color, const LLColor4& highlight_color) const;
- /*virtual*/ const LLSD getValue() const;
- /*virtual*/ void setValue(const LLSD& value);
-
-
- S32 getIconWidth() const;
- /*virtual*/ void setWidth(S32 width);/* { LLScrollListCell::setWidth(width); mTextWidth = width - ; }*/
-
-private:
- LLPointer<LLUIImage> mIcon;
- S32 mPad;
-};
-
#endif
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 83f80cfb9e..763c3aeb81 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -115,13 +115,6 @@ struct SortScrollListItem
// LLScrollListCtrl
//---------------------------------------------------------------------------
-void LLScrollListCtrl::SelectionTypeNames::declareValues()
-{
- declare("row", LLScrollListCtrl::ROW);
- declare("cell", LLScrollListCtrl::CELL);
- declare("header", LLScrollListCtrl::HEADER);
-}
-
LLScrollListCtrl::Contents::Contents()
: columns("column"),
rows("row")
@@ -135,10 +128,8 @@ LLScrollListCtrl::Params::Params()
has_border("draw_border"),
draw_heading("draw_heading"),
search_column("search_column", 0),
- selection_type("selection_type", ROW),
sort_column("sort_column", -1),
sort_ascending("sort_ascending", true),
- can_sort("can_sort", true),
mouse_wheel_opaque("mouse_wheel_opaque", false),
commit_on_keyboard_movement("commit_on_keyboard_movement", true),
heading_height("heading_height"),
@@ -173,10 +164,8 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
mCommitOnKeyboardMovement(p.commit_on_keyboard_movement),
mCommitOnSelectionChange(false),
mSelectionChanged(false),
- mSelectionType(p.selection_type),
mNeedsScroll(false),
mCanSelect(true),
- mCanSort(p.can_sort),
mColumnsDirty(false),
mMaxItemCount(INT_MAX),
mBorderThickness( 2 ),
@@ -830,15 +819,7 @@ BOOL LLScrollListCtrl::selectFirstItem()
{
if (!itemp->getSelected())
{
- switch (mSelectionType)
- {
- case CELL:
- selectItem(itemp, 0);
- break;
- case HEADER:
- case ROW:
- selectItem(itemp, -1);
- }
+ selectItem(itemp);
}
success = TRUE;
mOriginalSelection = 0;
@@ -897,8 +878,7 @@ BOOL LLScrollListCtrl::selectItemRange( S32 first_index, S32 last_index )
{
if( itemp->getEnabled() )
{
- // TODO: support range selection for cells
- selectItem(itemp, -1, FALSE);
+ selectItem(itemp, FALSE);
success = TRUE;
}
}
@@ -1024,14 +1004,10 @@ void LLScrollListCtrl::clearHighlightedItems()
void LLScrollListCtrl::mouseOverHighlightNthItem(S32 target_index)
{
- if (mHighlightedItem != target_index)
- {
- if (mHighlightedItem >= 0 && mHighlightedItem < mItemList.size())
- {
- mItemList[mHighlightedItem]->setHoverCell(-1);
- }
- mHighlightedItem = target_index;
- }
+ if (mHighlightedItem != target_index)
+ {
+ mHighlightedItem = target_index;
+ }
}
S32 LLScrollListCtrl::selectMultiple( uuid_vec_t ids )
@@ -1046,8 +1022,7 @@ S32 LLScrollListCtrl::selectMultiple( uuid_vec_t ids )
{
if (item->getEnabled() && (item->getUUID() == (*iditr)))
{
- // TODO: support multiple selection for cells
- selectItem(item, -1, FALSE);
+ selectItem(item,FALSE);
++count;
break;
}
@@ -1120,7 +1095,7 @@ void LLScrollListCtrl::selectPrevItem( BOOL extend_selection)
{
if (prev_item)
{
- selectItem(prev_item, cur_item->getSelectedCell(), !extend_selection);
+ selectItem(prev_item, !extend_selection);
}
else
{
@@ -1164,7 +1139,7 @@ void LLScrollListCtrl::selectNextItem( BOOL extend_selection)
{
if (next_item)
{
- selectItem(next_item, cur_item->getSelectedCell(), !extend_selection);
+ selectItem(next_item, !extend_selection);
}
else
{
@@ -1235,7 +1210,7 @@ BOOL LLScrollListCtrl::selectItemByLabel(const std::string& label, BOOL case_sen
bool found = NULL != item;
if(found)
{
- selectItem(item, -1);
+ selectItem(item);
}
if (mCommitOnSelectionChange)
@@ -1303,7 +1278,7 @@ BOOL LLScrollListCtrl::selectItemByPrefix(const LLWString& target, BOOL case_sen
BOOL select = cellp ? item->getEnabled() && ('\0' == cellp->getValue().asString()[0]) : FALSE;
if (select)
{
- selectItem(item, -1);
+ selectItem(item);
found = TRUE;
break;
}
@@ -1343,7 +1318,7 @@ BOOL LLScrollListCtrl::selectItemByPrefix(const LLWString& target, BOOL case_sen
// find offset of matching text (might have leading whitespace)
S32 offset = item_label.find(target_trimmed);
cellp->highlightText(offset, target_trimmed.size());
- selectItem(item, -1);
+ selectItem(item);
found = TRUE;
break;
}
@@ -1409,7 +1384,7 @@ BOOL LLScrollListCtrl::setSelectedByValue(const LLSD& value, BOOL selected)
{
if (selected)
{
- selectItem(item, -1);
+ selectItem(item);
}
else
{
@@ -1489,7 +1464,7 @@ void LLScrollListCtrl::drawItems()
S32 max_columns = 0;
- LLColor4 highlight_color = LLColor4::white; // ex: text inside cells
+ LLColor4 highlight_color = LLColor4::white;
static LLUICachedControl<F32> type_ahead_timeout ("TypeAheadTimeout", 0);
highlight_color.mV[VALPHA] = clamp_rescale(mSearchTimer.getElapsedTimeF32(), type_ahead_timeout * 0.7f, type_ahead_timeout(), 0.4f, 0.f);
@@ -1515,8 +1490,7 @@ void LLScrollListCtrl::drawItems()
max_columns = llmax(max_columns, item->getNumColumns());
LLColor4 fg_color;
- LLColor4 hover_color(LLColor4::transparent);
- LLColor4 select_color(LLColor4::transparent);
+ LLColor4 bg_color(LLColor4::transparent);
if( mScrollLines <= line && line < mScrollLines + num_page_lines )
{
@@ -1525,44 +1499,44 @@ void LLScrollListCtrl::drawItems()
{
if(item->getHighlighted()) // if it's highlighted, average the colors
{
- select_color = lerp(mBgSelectedColor.get(), mHighlightedColor.get(), 0.5f);
+ bg_color = lerp(mBgSelectedColor.get(), mHighlightedColor.get(), 0.5f);
}
else // otherwise just select-highlight it
{
- select_color = mBgSelectedColor.get();
+ bg_color = mBgSelectedColor.get();
}
fg_color = (item->getEnabled() ? mFgSelectedColor.get() : mFgDisabledColor.get());
}
- if (mHighlightedItem == line && mCanSelect)
+ else if (mHighlightedItem == line && mCanSelect)
{
if(item->getHighlighted()) // if it's highlighted, average the colors
{
- hover_color = lerp(mHoveredColor.get(), mHighlightedColor.get(), 0.5f);
+ bg_color = lerp(mHoveredColor.get(), mHighlightedColor.get(), 0.5f);
}
else // otherwise just hover-highlight it
{
- hover_color = mHoveredColor.get();
+ bg_color = mHoveredColor.get();
}
}
else if (item->getHighlighted())
{
- hover_color = mHighlightedColor.get();
+ bg_color = mHighlightedColor.get();
}
else
{
if (mDrawStripes && (line % 2 == 0) && (max_columns > 1))
{
- hover_color = mBgStripeColor.get();
+ bg_color = mBgStripeColor.get();
}
}
if (!item->getEnabled())
{
- hover_color = mBgReadOnlyColor.get();
+ bg_color = mBgReadOnlyColor.get();
}
- item->draw(item_rect, fg_color % alpha, hover_color% alpha, select_color% alpha, highlight_color % alpha, mColumnPadding);
+ item->draw(item_rect, fg_color % alpha, bg_color% alpha, highlight_color % alpha, mColumnPadding);
cur_y -= mLineHeight;
}
@@ -1714,7 +1688,7 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
{
if (mLastSelected == NULL)
{
- selectItem(hit_item, getColumnIndexFromOffset(x));
+ selectItem(hit_item);
}
else
{
@@ -1738,7 +1712,7 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
LLScrollListItem *item = *itor;
if (item == hit_item || item == lastSelected)
{
- selectItem(item, getColumnIndexFromOffset(x), FALSE);
+ selectItem(item, FALSE);
selecting = !selecting;
if (hit_item == lastSelected)
{
@@ -1748,7 +1722,7 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
}
if (selecting)
{
- selectItem(item, getColumnIndexFromOffset(x), FALSE);
+ selectItem(item, FALSE);
}
}
}
@@ -1763,7 +1737,7 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
{
if(!(mMaxSelectable > 0 && getAllSelected().size() >= mMaxSelectable))
{
- selectItem(hit_item, getColumnIndexFromOffset(x), FALSE);
+ selectItem(hit_item, FALSE);
}
else
{
@@ -1777,12 +1751,12 @@ BOOL LLScrollListCtrl::selectItemAt(S32 x, S32 y, MASK mask)
else
{
deselectAllItems(TRUE);
- selectItem(hit_item, getColumnIndexFromOffset(x));
+ selectItem(hit_item);
}
}
else
{
- selectItem(hit_item, getColumnIndexFromOffset(x));
+ selectItem(hit_item);
}
selection_changed = mSelectionChanged;
@@ -2150,29 +2124,8 @@ BOOL LLScrollListCtrl::handleHover(S32 x,S32 y,MASK mask)
{
LLScrollListItem* item = hitItem(x, y);
if (item)
- {
- mouseOverHighlightNthItem(getItemIndex(item));
- switch (mSelectionType)
- {
- case CELL:
- item->setHoverCell(getColumnIndexFromOffset(x));
- break;
- case HEADER:
- {
- S32 cell = getColumnIndexFromOffset(x);
- if (cell > 0)
- {
- item->setHoverCell(cell);
- }
- else
- {
- item->setHoverCell(-1);
- }
- break;
- }
- case ROW:
- break;
- }
+ {
+ mouseOverHighlightNthItem(getItemIndex(item));
}
else
{
@@ -2220,52 +2173,6 @@ BOOL LLScrollListCtrl::handleKeyHere(KEY key,MASK mask )
handled = TRUE;
}
break;
- case KEY_LEFT:
- if (mAllowKeyboardMovement || hasFocus())
- {
- // TODO: support multi-select
- LLScrollListItem *item = getFirstSelected();
- S32 cell = item->getSelectedCell();
- switch (mSelectionType)
- {
- case CELL:
- if (cell < mColumns.size()) cell++;
- break;
- case HEADER:
- if (cell == -1) cell = 1;
- else if (cell > 1 && cell < mColumns.size()) cell++; // skip header
- break;
- case ROW:
- cell = -1;
- break;
- }
- item->setSelectedCell(cell);
- handled = TRUE;
- }
- break;
- case KEY_RIGHT:
- if (mAllowKeyboardMovement || hasFocus())
- {
- // TODO: support multi-select
- LLScrollListItem *item = getFirstSelected();
- S32 cell = item->getSelectedCell();
- switch (mSelectionType)
- {
- case CELL:
- if (cell >= 0) cell--;
- break;
- case HEADER:
- if (cell > 1) cell--;
- else if (cell == 1) cell = -1; // skip header
- break;
- case ROW:
- cell = -1;
- break;
- }
- item->setSelectedCell(cell);
- handled = TRUE;
- }
- break;
case KEY_PAGE_UP:
if (mAllowKeyboardMovement || hasFocus())
{
@@ -2434,7 +2341,7 @@ BOOL LLScrollListCtrl::handleUnicodeCharHere(llwchar uni_char)
LLWString item_label = utf8str_to_wstring(cellp->getValue().asString());
if (item->getEnabled() && LLStringOps::toLower(item_label[0]) == uni_char)
{
- selectItem(item, -1);
+ selectItem(item);
mNeedsScroll = true;
cellp->highlightText(0, 1);
mSearchTimer.reset();
@@ -2486,7 +2393,7 @@ BOOL LLScrollListCtrl::isRepeatedChars(const LLWString& string) const
return TRUE;
}
-void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, S32 cell, BOOL select_single_item)
+void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, BOOL select_single_item)
{
if (!itemp) return;
@@ -2505,18 +2412,6 @@ void LLScrollListCtrl::selectItem(LLScrollListItem* itemp, S32 cell, BOOL select
deselectAllItems(TRUE);
}
itemp->setSelected(TRUE);
- switch (mSelectionType)
- {
- case CELL:
- itemp->setSelectedCell(cell);
- break;
- case HEADER:
- itemp->setSelectedCell(cell <= 0 ? -1 : cell);
- break;
- case ROW:
- itemp->setSelectedCell(-1);
- break;
- }
mLastSelected = itemp;
mSelectionChanged = true;
}
@@ -2777,7 +2672,7 @@ void LLScrollListCtrl::selectAll()
LLScrollListItem *itemp = *iter;
if( itemp->getEnabled() )
{
- selectItem(itemp, -1, FALSE);
+ selectItem(itemp, FALSE);
}
}
@@ -2906,8 +2801,6 @@ void LLScrollListCtrl::onClickColumn(void *userdata)
LLScrollListCtrl *parent = info->mParentCtrl;
if (!parent) return;
- if (!parent->mCanSort) return;
-
S32 column_index = info->mIndex;
LLScrollListColumn* column = parent->mColumnsIndexed[info->mIndex];
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 45ce67349a..43e1c0d707 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -54,18 +54,6 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
public LLCtrlListInterface, public LLCtrlScrollInterface
{
public:
- typedef enum e_selection_type
- {
- ROW, // default
- CELL, // does not support multi-selection
- HEADER, // when pointing to cells in column 0 will highlight whole row, otherwise cell, no multi-select
- } ESelectionType;
-
- struct SelectionTypeNames : public LLInitParam::TypeValuesHelper<LLScrollListCtrl::ESelectionType, SelectionTypeNames>
- {
- static void declareValues();
- };
-
struct Contents : public LLInitParam::Block<Contents>
{
Multiple<LLScrollListColumn::Params> columns;
@@ -111,8 +99,6 @@ public:
commit_on_keyboard_movement,
mouse_wheel_opaque;
- Optional<ESelectionType, SelectionTypeNames> selection_type;
-
// display flags
Optional<bool> has_border,
draw_heading,
@@ -129,8 +115,7 @@ public:
// sort and search behavior
Optional<S32> search_column,
sort_column;
- Optional<bool> sort_ascending,
- can_sort; // whether user is allowed to sort
+ Optional<bool> sort_ascending;
// colors
Optional<LLUIColor> fg_unselected_color,
@@ -447,7 +432,7 @@ private:
void updateLineHeightInsert(LLScrollListItem* item);
void reportInvalidInput();
BOOL isRepeatedChars(const LLWString& string) const;
- void selectItem(LLScrollListItem* itemp, S32 cell, BOOL single_select = TRUE);
+ void selectItem(LLScrollListItem* itemp, BOOL single_select = TRUE);
void deselectItem(LLScrollListItem* itemp);
void commitIfChanged();
BOOL setSort(S32 column, BOOL ascending);
@@ -472,11 +457,9 @@ private:
bool mCommitOnKeyboardMovement;
bool mCommitOnSelectionChange;
bool mSelectionChanged;
- ESelectionType mSelectionType;
bool mNeedsScroll;
bool mMouseWheelOpaque;
bool mCanSelect;
- bool mCanSort; // Whether user is allowed to sort
bool mDisplayColumnHeaders;
bool mColumnsDirty;
bool mColumnWidthsDirty;
diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp
index 51c615dd00..df22c88afb 100644
--- a/indra/llui/llscrolllistitem.cpp
+++ b/indra/llui/llscrolllistitem.cpp
@@ -40,8 +40,6 @@
LLScrollListItem::LLScrollListItem( const Params& p )
: mSelected(FALSE),
mHighlighted(FALSE),
- mHoverIndex(-1),
- mSelectedIndex(-1),
mEnabled(p.enabled),
mUserdata(p.userdata),
mItemValue(p.value)
@@ -55,28 +53,6 @@ LLScrollListItem::~LLScrollListItem()
mColumns.clear();
}
-void LLScrollListItem::setSelected(BOOL b)
-{
- mSelected = b;
- mSelectedIndex = -1;
-}
-
-void LLScrollListItem::setHighlighted(BOOL b)
-{
- mHighlighted = b;
- mHoverIndex = -1;
-}
-
-void LLScrollListItem::setHoverCell(S32 cell)
-{
- mHoverIndex = cell;
-}
-
-void LLScrollListItem::setSelectedCell(S32 cell)
-{
- mSelectedIndex = cell;
-}
-
void LLScrollListItem::addColumn(const LLScrollListCell::Params& p)
{
mColumns.push_back(LLScrollListCell::create(p));
@@ -144,21 +120,12 @@ std::string LLScrollListItem::getContentsCSV() const
}
-void LLScrollListItem::draw(const LLRect& rect, const LLColor4& fg_color, const LLColor4& hover_color, const LLColor4& select_color, const LLColor4& highlight_color, S32 column_padding)
+void LLScrollListItem::draw(const LLRect& rect, const LLColor4& fg_color, const LLColor4& bg_color, const LLColor4& highlight_color, S32 column_padding)
{
// draw background rect
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLRect bg_rect = rect;
- if (mSelectedIndex < 0 && getSelected())
- {
- // Whole item is highlighted/selected
- gl_rect_2d(bg_rect, select_color);
- }
- else if (mHoverIndex < 0)
- {
- // Whole item is highlighted/selected
- gl_rect_2d(bg_rect, hover_color);
- }
+ gl_rect_2d( bg_rect, bg_color );
S32 cur_x = rect.mLeft;
S32 num_cols = getNumColumns();
@@ -174,25 +141,6 @@ void LLScrollListItem::draw(const LLRect& rect, const LLColor4& fg_color, const
{
LLUI::translate((F32) cur_x, (F32) rect.mBottom);
- if (mSelectedIndex == cur_col)
- {
- // select specific cell
- LLRect highlight_rect(0,
- cell->getHeight(),
- cell->getWidth(),
- 0);
- gl_rect_2d(highlight_rect, select_color);
- }
- else if (mHoverIndex == cur_col)
- {
- // highlight specific cell
- LLRect highlight_rect(0,
- cell->getHeight(),
- cell->getWidth() ,
- 0);
- gl_rect_2d(highlight_rect, hover_color);
- }
-
cell->draw( fg_color, highlight_color );
}
LLUI::popMatrix();
diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h
index d2c3dd7721..13655b5873 100644
--- a/indra/llui/llscrolllistitem.h
+++ b/indra/llui/llscrolllistitem.h
@@ -77,21 +77,15 @@ public:
virtual ~LLScrollListItem();
- void setSelected( BOOL b );
+ void setSelected( BOOL b ) { mSelected = b; }
BOOL getSelected() const { return mSelected; }
void setEnabled( BOOL b ) { mEnabled = b; }
BOOL getEnabled() const { return mEnabled; }
- void setHighlighted( BOOL b );
+ void setHighlighted( BOOL b ) { mHighlighted = b; }
BOOL getHighlighted() const { return mHighlighted; }
- void setSelectedCell( S32 cell );
- S32 getSelectedCell() const { return mSelectedIndex; }
-
- void setHoverCell( S32 cell );
- S32 getHoverCell() const { return mHoverIndex; }
-
void setUserdata( void* userdata ) { mUserdata = userdata; }
void* getUserdata() const { return mUserdata; }
@@ -113,21 +107,14 @@ public:
std::string getContentsCSV() const;
- virtual void draw(const LLRect& rect,
- const LLColor4& fg_color,
- const LLColor4& hover_color, // highlight/hover selection of whole item or cell
- const LLColor4& select_color, // highlight/hover selection of whole item or cell
- const LLColor4& highlight_color, // highlights contents of cells (ex: text)
- S32 column_padding);
+ virtual void draw(const LLRect& rect, const LLColor4& fg_color, const LLColor4& bg_color, const LLColor4& highlight_color, S32 column_padding);
protected:
LLScrollListItem( const Params& );
private:
BOOL mSelected;
- BOOL mHighlighted;
- S32 mHoverIndex;
- S32 mSelectedIndex;
+ BOOL mHighlighted;
BOOL mEnabled;
void* mUserdata;
LLSD mItemValue;