summaryrefslogtreecommitdiff
path: root/indra/newview/llinventoryfunctions.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2015-05-27 11:08:45 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2015-05-27 11:08:45 -0400
commit9e3eb8991d54a39dc3d4c99739fa1a411ed64b35 (patch)
treec96c00d9847ac5ea8edc33835dd634a0829c0e23 /indra/newview/llinventoryfunctions.cpp
parente2544fabe5f63201ca11102aa9b4266cb62211bd (diff)
parentf3c58f765c0168f25bb13c4427e34b4bdad2f671 (diff)
merge
Diffstat (limited to 'indra/newview/llinventoryfunctions.cpp')
-rwxr-xr-xindra/newview/llinventoryfunctions.cpp55
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)