summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llfolderview.cpp14
-rw-r--r--indra/newview/llinventorybridge.cpp2
-rw-r--r--indra/newview/llinventoryfunctions.cpp60
-rw-r--r--indra/newview/llinventoryfunctions.h4
-rw-r--r--indra/newview/llinventorymodel.cpp43
-rw-r--r--indra/newview/lloutfitslist.cpp2
6 files changed, 38 insertions, 87 deletions
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index bad0d8cd8f..1fa194ab19 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -1059,19 +1059,7 @@ void LLFolderView::removeCutItems()
iter != objects.end();
++iter)
{
- const LLUUID& item_id = (*iter);
- LLInventoryObject *obj = gInventory.getObject(item_id);
- if (obj)
- {
- if (LLAssetType::AT_CATEGORY == obj->getType())
- {
- remove_category(&gInventory, item_id);
- }
- else
- {
- remove_item(&gInventory, item_id);
- }
- }
+ gInventory.removeObject(*iter);
}
}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index cae04ccb49..b86c453d61 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -2948,7 +2948,7 @@ bool LLFolderBridge::removeItemResponse(const LLSD& notification, const LLSD& re
{
// move it to the trash
LLPreview::hide(mUUID);
- remove_category(getInventoryModel(), mUUID);
+ getInventoryModel()->removeCategory(mUUID);
return TRUE;
}
return FALSE;
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 94d1b19726..ab5b082915 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -108,64 +108,6 @@ void append_path(const LLUUID& id, std::string& path)
path.append(temp);
}
-// Move the item to the trash. Works for folders and objects.
-// Caution: This method assumes that the item is removable!
-void remove_item(LLInventoryModel* model, const LLUUID& id)
-{
- LLViewerInventoryItem* item = model->getItem(id);
- if (!item)
- return;
-
- if (item->getType() == LLAssetType::AT_CATEGORY)
- {
- // Call the general helper function to delete a folder
- remove_category(model, id);
- }
- else
- {
- // Get the trash UUID
- LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false);
- if (trash_id.notNull())
- {
- // Finally, move the item to the trash
- model->changeItemParent(item, trash_id, true);
- }
- }
-}
-
-void remove_category(LLInventoryModel* model, const LLUUID& cat_id)
-{
- if (!model || !get_is_category_removable(model, cat_id))
- {
- return;
- }
-
- // Look for any gestures and deactivate them
- LLInventoryModel::cat_array_t descendent_categories;
- LLInventoryModel::item_array_t descendent_items;
- gInventory.collectDescendents(cat_id, descendent_categories, descendent_items, FALSE);
-
- for (LLInventoryModel::item_array_t::const_iterator iter = descendent_items.begin();
- iter != descendent_items.end();
- ++iter)
- {
- const LLViewerInventoryItem* item = (*iter);
- const LLUUID& item_id = item->getUUID();
- if (item->getType() == LLAssetType::AT_GESTURE
- && LLGestureMgr::instance().isGestureActive(item_id))
- {
- LLGestureMgr::instance().deactivateGesture(item_id);
- }
- }
-
- LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id);
- if (cat)
- {
- const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
- model->changeCategoryParent(cat, trash_id, TRUE);
- }
-}
-
void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name)
{
LLViewerInventoryCategory* cat;
@@ -610,7 +552,7 @@ void move_to_outbox_cb_action(const LLSD& payload)
if (cat_array->empty() && item_array->empty())
{
- remove_category(&gInventory, parent);
+ gInventory.removeCategory(parent);
}
if (parent == top_level_folder)
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 535d831e47..5cf9c528b0 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -57,10 +57,6 @@ void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id);
void show_item_original(const LLUUID& item_uuid);
-void remove_item(LLInventoryModel* model, const LLUUID& id);
-
-void remove_category(LLInventoryModel* model, const LLUUID& cat_id);
-
void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::string& new_name);
void copy_inventory_category(LLInventoryModel* model, LLViewerInventoryCategory* cat, const LLUUID& parent_id, const LLUUID& root_copy_id = LLUUID::null);
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 1ea4cb63f6..85ecb133d0 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -47,6 +47,7 @@
#include "llviewerregion.h"
#include "llcallbacklist.h"
#include "llvoavatarself.h"
+#include "llgesturemgr.h"
#include <typeinfo>
//#define DIFF_INVENTORY_FILES
@@ -3032,23 +3033,47 @@ void LLInventoryModel::removeItem(const LLUUID& item_id)
else
{
const LLUUID new_parent = findCategoryUUIDForType(LLFolderType::FT_TRASH);
- LL_INFOS("Inventory") << "Moving to Trash (" << new_parent << "):" << LL_ENDL;
- changeItemParent(item, new_parent, TRUE);
+ if (new_parent.notNull())
+ {
+ LL_INFOS("Inventory") << "Moving to Trash (" << new_parent << "):" << LL_ENDL;
+ changeItemParent(item, new_parent, TRUE);
+ }
}
}
void LLInventoryModel::removeCategory(const LLUUID& category_id)
{
- LLViewerInventoryCategory* cat = getCategory(category_id);
- if (! cat)
+ if (! get_is_category_removable(this, category_id))
{
- LL_WARNS("Inventory") << "couldn't find inventory folder " << category_id << LL_ENDL;
+ return;
}
- else
+
+ // Look for any gestures and deactivate them
+ LLInventoryModel::cat_array_t descendent_categories;
+ LLInventoryModel::item_array_t descendent_items;
+ collectDescendents(category_id, descendent_categories, descendent_items, FALSE);
+
+ for (LLInventoryModel::item_array_t::const_iterator iter = descendent_items.begin();
+ iter != descendent_items.end();
+ ++iter)
{
- const LLUUID new_parent = findCategoryUUIDForType(LLFolderType::FT_TRASH);
- LL_INFOS("Inventory") << "Moving to Trash (" << new_parent << "):" << LL_ENDL;
- changeCategoryParent(cat, new_parent, TRUE);
+ const LLViewerInventoryItem* item = (*iter);
+ const LLUUID& item_id = item->getUUID();
+ if (item->getType() == LLAssetType::AT_GESTURE
+ && LLGestureMgr::instance().isGestureActive(item_id))
+ {
+ LLGestureMgr::instance().deactivateGesture(item_id);
+ }
+ }
+
+ LLViewerInventoryCategory* cat = getCategory(category_id);
+ if (cat)
+ {
+ const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH);
+ if (trash_id.notNull())
+ {
+ changeCategoryParent(cat, trash_id, TRUE);
+ }
}
}
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 1dc4d796ab..ef5ef2ddc8 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -640,7 +640,7 @@ void LLOutfitsList::onOutfitsRemovalConfirmation(const LLSD& notification, const
if (mSelectedOutfitUUID.notNull())
{
- remove_category(&gInventory, mSelectedOutfitUUID);
+ gInventory.removeCategory(mSelectedOutfitUUID);
}
}