summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Mutavchi <emutavchi@productengine.com>2010-04-30 18:07:21 +0300
committerEugene Mutavchi <emutavchi@productengine.com>2010-04-30 18:07:21 +0300
commit779bf4bb59e9c8d832de84bc926e8839827735b7 (patch)
tree21239954f77cd192abd498c8f3c4ffc9d89e963b
parent67c95d6d9238615232fd581aaedf53adfe166e5c (diff)
Implemented low sub-task EXT-7164 (Implement preserving panel inventory item selection across COF wearables lists updates (i.e. when changing ordering of wearables - up/down).)
- implemented preserving of current items selection during lists updates. Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/344/ --HG-- branch : product-engine
-rw-r--r--indra/newview/llcofwearables.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 36a8031cce..1925b818f2 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -94,6 +94,16 @@ void LLCOFWearables::onSelectionChange(LLFlatListView* selected_list)
void LLCOFWearables::refresh()
{
+ typedef std::vector<LLSD> values_vector_t;
+ typedef std::map<LLFlatListView*, values_vector_t> selection_map_t;
+
+ selection_map_t preserve_selection;
+
+ // Save current selection
+ mAttachments->getSelectedValues(preserve_selection[mAttachments]);
+ mClothing->getSelectedValues(preserve_selection[mClothing]);
+ mBodyParts->getSelectedValues(preserve_selection[mBodyParts]);
+
clear();
LLInventoryModel::cat_array_t cats;
@@ -108,6 +118,23 @@ void LLCOFWearables::refresh()
LLAppearanceMgr::getInstance()->divvyWearablesByType(cof_items, clothing_by_type);
populateClothingList(clothing_by_type);
+
+ // Restore previous selection
+ for (selection_map_t::iterator
+ iter = preserve_selection.begin(),
+ iter_end = preserve_selection.end();
+ iter != iter_end; ++iter)
+ {
+ LLFlatListView* list = iter->first;
+ const values_vector_t& values = iter->second;
+ for (values_vector_t::const_iterator
+ value_it = values.begin(),
+ value_it_end = values.end();
+ value_it != value_it_end; ++value_it)
+ {
+ list->selectItemByValue(*value_it);
+ }
+ }
}