diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2015-05-27 11:08:45 -0400 |
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2015-05-27 11:08:45 -0400 |
| commit | 9e3eb8991d54a39dc3d4c99739fa1a411ed64b35 (patch) | |
| tree | c96c00d9847ac5ea8edc33835dd634a0829c0e23 /indra/newview/llinventoryfunctions.cpp | |
| parent | e2544fabe5f63201ca11102aa9b4266cb62211bd (diff) | |
| parent | f3c58f765c0168f25bb13c4427e34b4bdad2f671 (diff) | |
merge
Diffstat (limited to 'indra/newview/llinventoryfunctions.cpp')
| -rwxr-xr-x | indra/newview/llinventoryfunctions.cpp | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 98c636c217..605a63aa33 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -45,6 +45,7 @@ // newview includes #include "llappearancemgr.h" #include "llappviewer.h" +#include "llavataractions.h" #include "llclipboard.h" #include "lldonotdisturbnotificationstorage.h" #include "llfloaterinventory.h" @@ -1142,32 +1143,34 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root LLFloater::setFloaterHost(multi_propertiesp); } - std::set<LLFolderViewItem*>::iterator set_iter; - - - // This rather warty piece of code is to allow items to be removed - // from the avatar in a batch, eliminating redundant - // updateAppearanceFromCOF() requests further down the line. (MAINT-4918) - // - // There are probably other cases where similar batching would be - // desirable, but the current item-by-item performAction() - // approach would need to be reworked. - uuid_vec_t object_uuids_to_remove; - if (isRemoveAction(action) && get_selection_object_uuids(root, object_uuids_to_remove)) - { - LLAppearanceMgr::instance().removeItemsFromAvatar(object_uuids_to_remove); - } - else - { - for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) - { - LLFolderViewItem* folder_item = *set_iter; - if(!folder_item) continue; - LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem(); - if(!bridge) continue; - bridge->performAction(model, action); - } - } + std::set<LLUUID> selected_uuid_set = LLAvatarActions::getInventorySelectedUUIDs(); + uuid_vec_t ids; + std::copy(selected_uuid_set.begin(), selected_uuid_set.end(), std::back_inserter(ids)); + // Check for actions that get handled in bulk + if (action == "wear") + { + wear_multiple(ids, true); + } + else if (action == "wear_add") + { + wear_multiple(ids, false); + } + else if (isRemoveAction(action)) + { + LLAppearanceMgr::instance().removeItemsFromAvatar(ids); + } + else + { + std::set<LLFolderViewItem*>::iterator set_iter; + for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) + { + LLFolderViewItem* folder_item = *set_iter; + if(!folder_item) continue; + LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem(); + if(!bridge) continue; + bridge->performAction(model, action); + } + } LLFloater::setFloaterHost(NULL); if (multi_previewp) |
