From 31e7c77a411d94bc87f0232588b339149bb29a49 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Sun, 28 Sep 2008 17:21:23 -0500 Subject: Second Life viewer sources 1.21.3-RC --- linden/indra/llui/llscrolllistctrl.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'linden/indra/llui/llscrolllistctrl.cpp') diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp index 6561bb5..e2623fb 100644 --- a/linden/indra/llui/llscrolllistctrl.cpp +++ b/linden/indra/llui/llscrolllistctrl.cpp @@ -67,9 +67,6 @@ struct SortScrollListItem bool operator()(const LLScrollListItem* i1, const LLScrollListItem* i2) { - if ( mSortOrders.empty() ) - return i1 < i2; - // sort over all columns in order specified by mSortOrders S32 sort_result = 0; for (sort_order_t::const_reverse_iterator it = mSortOrders.rbegin(); @@ -91,7 +88,8 @@ struct SortScrollListItem } } - return sort_result < 0; + // make sure to keep order when sort_result == 0 + return sort_result <= 0; } typedef std::vector > sort_order_t; @@ -2539,12 +2537,6 @@ void LLScrollListCtrl::onScrollChange( S32 new_pos, LLScrollbar* scrollbar, void void LLScrollListCtrl::sortByColumn(const std::string& name, BOOL ascending) { - if (name.empty()) - { - sortItems(); - return; - } - std::map::iterator itor = mColumns.find(name); if (itor != mColumns.end()) { @@ -2572,6 +2564,19 @@ void LLScrollListCtrl::sortItems() setSorted(TRUE); } +// for one-shot sorts, does not save sort column/order +void LLScrollListCtrl::sortOnce(S32 column, BOOL ascending) +{ + std::vector > sort_column; + sort_column.push_back(std::make_pair(column, ascending)); + + // do stable sort to preserve any previous sorts + std::stable_sort( + mItemList.begin(), + mItemList.end(), + SortScrollListItem(sort_column)); +} + void LLScrollListCtrl::dirtyColumns() { mColumnsDirty = TRUE; -- cgit v1.1 From 4270407eca97bc2275f920a6452d6d5490875779 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 17 Oct 2008 15:56:48 -0500 Subject: Second Life viewer sources 1.21.6 --- linden/indra/llui/llscrolllistctrl.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'linden/indra/llui/llscrolllistctrl.cpp') diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp index e2623fb..d342378 100644 --- a/linden/indra/llui/llscrolllistctrl.cpp +++ b/linden/indra/llui/llscrolllistctrl.cpp @@ -88,8 +88,7 @@ struct SortScrollListItem } } - // make sure to keep order when sort_result == 0 - return sort_result <= 0; + return sort_result < 0; } typedef std::vector > sort_order_t; -- cgit v1.1