summaryrefslogtreecommitdiff
path: root/indra/llui/llscrolllistctrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/llscrolllistctrl.cpp')
-rw-r--r--indra/llui/llscrolllistctrl.cpp177
1 files changed, 35 insertions, 142 deletions
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];