summaryrefslogtreecommitdiff
path: root/indra/newview/llinventoryfunctions.cpp
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2014-06-05 18:02:28 -0700
committerMerov Linden <merov@lindenlab.com>2014-06-05 18:02:28 -0700
commit7911e32d4bd9f86bdde5771dcaa14203befa5f7d (patch)
treebc2e637ef21959871517987ffef1c936b58d7c0f /indra/newview/llinventoryfunctions.cpp
parent252ad06b7bcc33a48b6c23917f6156a436df4b00 (diff)
DD-114, DD-115, DD-116: Fixed counts on folder, folder depth and items on operations on marketplace listings
Diffstat (limited to 'indra/newview/llinventoryfunctions.cpp')
-rwxr-xr-xindra/newview/llinventoryfunctions.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index da8c03eb7c..b17e9551e5 100755
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -1092,13 +1092,14 @@ bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLIn
{
bool accept = true;
- // Compute the nested folder levels we'll get into with that folder
- int nested_folder_levels = get_folder_levels(inv_cat);
- if (root_folder)
- {
- nested_folder_levels += get_folder_path_length(root_folder->getUUID(), dest_folder->getUUID());
- }
- if (nested_folder_levels > gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"))
+ // Compute the nested folders level we'll add into with that incoming folder
+ int incoming_folder_depth = get_folder_levels(inv_cat);
+ // Compute the nested folders level we're inserting ourselves in
+ // Note: add one when inserting under a listing folder as we need to take the root listing folder in the count
+ int insertion_point_folder_depth = (root_folder ? get_folder_path_length(root_folder->getUUID(), dest_folder->getUUID()) + 1 : 0);
+
+ // Compare the whole with the nested folders depth limit
+ if ((incoming_folder_depth + insertion_point_folder_depth) > gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"))
{
LLStringUtil::format_map_t args;
U32 amount = gSavedSettings.getU32("InventoryOutboxMaxFolderDepth");
@@ -1113,8 +1114,8 @@ bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLIn
LLInventoryModel::item_array_t descendent_items;
gInventory.collectDescendents(inv_cat->getUUID(), descendent_categories, descendent_items, FALSE);
- int dragged_folder_count = descendent_categories.size() + 1;
- int dragged_item_count = descendent_items.size() + bundle_size;
+ int dragged_folder_count = descendent_categories.size() + bundle_size; // Note: We assume that we're moving a bunch of folders in. That might be wrong...
+ int dragged_item_count = descendent_items.size();
int existing_item_count = 0;
int existing_folder_count = 0;
@@ -1124,7 +1125,7 @@ bool can_move_folder_to_marketplace(const LLInventoryCategory* root_folder, LLIn
{
// Clear those counts or they will be counted twice because we're already inside the root category
dragged_folder_count = 0;
- dragged_item_count = bundle_size;
+ dragged_item_count = 0;
}
else
{