diff options
author | Kitty Barnett <develop@catznip.com> | 2012-02-24 16:12:43 +0100 |
---|---|---|
committer | Kitty Barnett <develop@catznip.com> | 2012-02-24 16:12:43 +0100 |
commit | e0d1ddab212103ba11a72783ce3b0a26ea8c0c55 (patch) | |
tree | 44011ae0491941af0bfc1957d5f3b408c81123a4 /indra/newview/llinventorymodel.cpp | |
parent | e615660823e680e824d2db0f1a59917597e64a13 (diff) | |
parent | 289d756ea86bd3898f41592146d8f549cd056846 (diff) |
Merge with viewer-development
Diffstat (limited to 'indra/newview/llinventorymodel.cpp')
-rw-r--r-- | indra/newview/llinventorymodel.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 568ec4c5e2..a71b699fdd 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -217,6 +217,38 @@ const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(cons return NULL; } +// +// Search up the parent chain until we get to the specified parent, then return the first child category under it +// +const LLViewerInventoryCategory* LLInventoryModel::getFirstDescendantOf(const LLUUID& master_parent_id, const LLUUID& obj_id) const +{ + if (master_parent_id == obj_id) + { + return NULL; + } + + const LLViewerInventoryCategory* current_cat = getCategory(obj_id); + + if (current_cat == NULL) + { + current_cat = getCategory(getObject(obj_id)->getParentUUID()); + } + + while (current_cat != NULL) + { + const LLUUID& current_parent_id = current_cat->getParentUUID(); + + if (current_parent_id == master_parent_id) + { + return current_cat; + } + + current_cat = getCategory(current_parent_id); + } + + return NULL; +} + // Get the object by id. Returns NULL if not found. LLInventoryObject* LLInventoryModel::getObject(const LLUUID& id) const { |