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)); }