diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 3fd05a12c..789da8b82 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -865,14 +865,12 @@ void LLFolderView::clearSelection() mSelectThisID.setNull(); } -std::set LLFolderView::getSelectionList() const +std::unordered_set LLFolderView::getSelectionList() const { - std::set selection; - for (selected_items_t::const_iterator item_it = mSelectedItems.begin(); - item_it != mSelectedItems.end(); - ++item_it) + std::unordered_set selection; + for (const auto& item : mSelectedItems) { - selection.insert((*item_it)->getListener()->getUUID()); + selection.insert(item->getListener()->getUUID()); } return selection; } @@ -2118,8 +2116,7 @@ LLFolderViewItem* LLFolderView::getItemByID(const LLUUID& id) return this; } - std::map::iterator map_it; - map_it = mItemMap.find(id); + auto map_it = mItemMap.find(id); if (map_it != mItemMap.end()) { return map_it->second; diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 7433e87bb..407c23d4f 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -158,7 +158,7 @@ public: // children, and keeps track of selected objects. virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected); - virtual std::set getSelectionList() const; + virtual std::unordered_set getSelectionList() const; // Make sure if ancestor is selected, descendants are not void sanitizeSelection(); @@ -330,7 +330,7 @@ protected: S32 mSignalSelectCallback; S32 mMinWidth; S32 mRunningHeight; - std::map mItemMap; + std::unordered_map mItemMap; LLUUID mSelectThisID; // if non null, select this item LLHandle mParentPanel; diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 1f87716f2..799545f4d 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -378,10 +378,9 @@ void LLFolderViewItem::setSelectionFromRoot(LLFolderViewItem* selection, getRoot()->setSelection(selection, openitem, take_keyboard_focus); } -std::set LLFolderViewItem::getSelectionList() const +std::unordered_set LLFolderViewItem::getSelectionList() const { - std::set selection; - return selection; + return std::unordered_set(); } EInventorySortGroup LLFolderViewItem::getSortGroup() const diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index c33eb575b..0eac95f3d 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -30,6 +30,9 @@ #include "lluiimage.h" #include "lluictrl.h" +#include +#include + class LLFontGL; class LLFolderView; class LLFolderViewEventListener; @@ -218,7 +221,7 @@ public: virtual void selectItem(); // gets multiple-element selection - virtual std::set getSelectionList() const; + virtual std::unordered_set getSelectionList() const; // Returns true is this object and all of its children can be removed (deleted by user) virtual BOOL isRemovable(); diff --git a/indra/newview/llinventoryactions.cpp b/indra/newview/llinventoryactions.cpp index 16e0b9c6c..07313d1c5 100644 --- a/indra/newview/llinventoryactions.cpp +++ b/indra/newview/llinventoryactions.cpp @@ -107,11 +107,8 @@ bool get_selection_object_uuids(LLFolderView *root, uuid_vec_t& ids) { uuid_vec_t results; //S32 no_object = 0; - std::set selectedItems = root->getSelectionList(); - for(std::set::iterator it = selectedItems.begin(); it != selectedItems.end(); ++it) + for(const auto& id : root->getSelectionList()) { - const LLUUID& id(*it); - if(id.notNull()) { results.push_back(id); @@ -134,12 +131,12 @@ bool LLInventoryAction::doToSelected(LLFolderView* root, std::string action, BOO if (!root) return true; - std::set selected_items = root->getSelectionList(); + auto selected_items = root->getSelectionList(); // Prompt the user and check for authorization for some marketplace active listing edits if (user_confirm && (("delete" == action) || ("cut" == action) || ("rename" == action) || ("properties" == action) || ("task_properties" == action) || ("open" == action))) { - std::set::iterator set_iter = std::find_if(selected_items.begin(), selected_items.end(), boost::bind(&depth_nesting_in_marketplace, _1) >= 0); + auto set_iter = std::find_if(selected_items.begin(), selected_items.end(), boost::bind(&depth_nesting_in_marketplace, _1) >= 0); if (set_iter != selected_items.end()) { if ("open" == action) @@ -177,7 +174,7 @@ bool LLInventoryAction::doToSelected(LLFolderView* root, std::string action, BOO // Copying to the marketplace needs confirmation if nocopy items are involved if (("copy_to_marketplace_listings" == action)) { - std::set::iterator set_iter = selected_items.begin(); + auto set_iter = selected_items.begin(); if (contains_nocopy_items(*set_iter)) { LLNotificationsUtil::add("ConfirmCopyToMarketplace", LLSD(), LLSD(), boost::bind(&LLInventoryAction::callback_copySelected, _1, _2, root, action)); @@ -233,8 +230,6 @@ bool LLInventoryAction::doToSelected(LLFolderView* root, std::string action, BOO LLFloater::setFloaterHost(multi_floaterp); } - std::set::iterator set_iter; - // This rather warty piece of code is to allow items to be removed // from the avatar in a batch, eliminating redundant @@ -250,9 +245,9 @@ bool LLInventoryAction::doToSelected(LLFolderView* root, std::string action, BOO } else { - for (set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) + for (const auto& id : selected_items) { - LLFolderViewItem* folder_item = root->getItemByID(*set_iter); + LLFolderViewItem* folder_item = root->getItemByID(id); if(!folder_item) continue; LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getListener(); if(!bridge) continue; @@ -286,10 +281,9 @@ void LLInventoryAction::buildMarketplaceFolders(LLFolderView* root) return; } - std::set selected_items = root->getSelectionList(); - for (std::set::const_iterator set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter) + for (const auto& item : root->getSelectionList()) { - const LLInventoryObject* obj(gInventory.getObject(*set_iter)); + const LLInventoryObject* obj(gInventory.getObject(item)); if (!obj) continue; if (gInventory.isObjectDescendentOf(obj->getParentUUID(), marketplacelistings_id)) { @@ -522,7 +516,6 @@ struct LLBeginIMSession : public inventory_panel_listener_t LLInventoryPanel *panel = mPtr; LLInventoryModel* model = panel->getModel(); if(!model) return true; - std::set selected_items = panel->getRootFolder()->getSelectionList(); std::string name; static int session_num = 1; @@ -534,10 +527,8 @@ struct LLBeginIMSession : public inventory_panel_listener_t bool fRlvCanStartIM = true; // [/RLVa:KB] - for (std::set::const_iterator iter = selected_items.begin(); iter != selected_items.end(); iter++) + for (const auto& item : panel->getRootFolder()->getSelectionList()) { - - LLUUID item = *iter; LLFolderViewItem* folder_item = panel->getRootFolder()->getItemByID(item); if(folder_item) @@ -644,7 +635,7 @@ struct LLAttachObject : public inventory_panel_listener_t LLFolderView* folder = panel->getRootFolder(); if(!folder) return true; - std::set selected_items = folder->getSelectionList(); + auto selected_items = folder->getSelectionList(); LLUUID id = *selected_items.begin(); std::string joint_name = userdata.asString(); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 11789100f..a8a155436 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1365,15 +1365,13 @@ bool LLInventoryPanel::isSelectionRemovable() bool can_delete = false; if (mFolderRoot.get()) { - std::set selection_set = mFolderRoot.get()->getSelectionList(); + auto selection_set = mFolderRoot.get()->getSelectionList(); if (!selection_set.empty()) { can_delete = true; - for (std::set::iterator iter = selection_set.begin(); - iter != selection_set.end(); - ++iter) + for (const auto& id : selection_set) { - LLFolderViewItem *item = getItemByID(*iter); + LLFolderViewItem *item = getItemByID(id); const LLFolderViewEventListener* listener =item->getListener(); if (!listener) { diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index cf28f992c..c47c8a2b3 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -1710,7 +1710,7 @@ void LLPanelObjectInventory::updateInventory() // << " panel UUID: " << panel->mTaskUUID << "\n" // << " task UUID: " << object->mID << LL_ENDL; // We're still interested in this task's inventory. - std::set selected_items; + std::unordered_set selected_items; BOOL inventory_has_focus = FALSE; if (mHaveInventory) { @@ -1748,11 +1748,10 @@ void LLPanelObjectInventory::updateInventory() } // restore previous selection - std::set::iterator selection_it; bool first_item = true; - for (selection_it = selected_items.begin(); selection_it != selected_items.end(); ++selection_it) + for (const auto id : selected_items) { - LLFolderViewItem* selected_item = mFolders->getItemByID(*selection_it); + LLFolderViewItem* selected_item = mFolders->getItemByID(id); if (selected_item) { diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 65da02e4c..19a0fb4ab 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -881,7 +881,7 @@ private: } LLHandle mActivePanel; - typedef std::set selected_items_t; + typedef std::unordered_set selected_items_t; selected_items_t mSelectedItems; /**