diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index b874db6816..a8dbcedf26 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -774,7 +774,8 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id)
}
// Subfolder JIT
- if( id == getRootFolderID() )
+ // FIRE-3615; FIRE-3616: For some panels we get a zero UUID for top level folders here.
+ if( id == getRootFolderID() || getRootFolderID().isNull() || id.isNull() )
addSubItems( id );
//
@@ -785,6 +786,7 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id)
void LLInventoryPanel::addSubItems(const LLUUID& id)
{
LLInventoryObject const* objectp = gInventory.getObject(id);
+ LLUUID root_id = mFolderRoot->getListener()->getUUID();
// If this is a folder, add the children of the folder and recursively add any
// child folders.
@@ -797,7 +799,9 @@ void LLInventoryPanel::addSubItems(const LLUUID& id)
mInventory->lockDirectDescendentArrays(id, categories, items);
LLFolderViewFolder *parent_folder(0);
- if( items && objectp )
+ if (id == root_id)
+ parent_folder = mFolderRoot;
+ else if( items && objectp )
parent_folder = (LLFolderViewFolder*)mFolderRoot->getItemByID(objectp->getParentUUID());
if(categories)
@@ -825,6 +829,10 @@ void LLInventoryPanel::addSubItems(const LLUUID& id)
buildNewViews(item->getUUID());
}
}
+ else if( items )
+ {
+ llwarns << "No parent folder for items" << llendl;
+ }
mInventory->unlockDirectDescendentArrays(id);
}
}
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index ad6ae6e908..7ff2758a5b 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -190,7 +190,16 @@ BOOL LLPanelMainInventory::postBuild()
worn_items_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
//worn_items_panel->getFilter()->markDefault();
worn_items_panel->getFilter()->setFilterObjectTypes(0xffffffff - (0x1 << LLInventoryType::IT_GESTURE));
- worn_items_panel->openAllFolders();
+
+ // Do not go all crazy and recurse through the whole inventory
+// worn_items_panel->openAllFolders();
+ if( worn_items_panel->getRootFolder() )
+ {
+ worn_items_panel->getRootFolder()->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_NO);
+ worn_items_panel->getRootFolder()->arrangeAll();
+ }
+ //
+
worn_items_panel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, worn_items_panel, _1, _2));
}