diff options
Diffstat (limited to 'indra/newview/llinventorypanel.cpp')
-rw-r--r-- | indra/newview/llinventorypanel.cpp | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index acbec531b6..aff48b1961 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -618,22 +618,41 @@ LLFolderView * LLInventoryPanel::createFolderView(LLInvFVBridge * bridge, bool u LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * bridge) { - LLFolderViewFolder::Params params; + // Create the folder ui widget, unless it's an empty system folder that should be hidden + // Note : we still let the code create a listener for it (in case something shows up in it) + // but we simply skip creating the ui ctrl and adding it. + // *TODO : Need to be verified: if the listener is triggered and something added, will the code + // crash (because it's assuming, wrongly, that the uictrl exists)? + + bool is_system_folder = bridge->isSystemFolder(); + bool is_hidden_if_empty = LLViewerFolderType::lookupIsHiddenIfEmpty(bridge->getPreferredType()); + bool is_empty = (mInventory->categoryHasChildren(bridge->getUUID()) != LLInventoryModel::CHILDREN_YES); + + if (!is_system_folder || !is_empty || !is_hidden_if_empty) + { + LLFolderViewFolder::Params params; - params.name = bridge->getDisplayName(); - params.icon = bridge->getIcon(); - params.icon_open = bridge->getOpenIcon(); + params.name = bridge->getDisplayName(); + params.icon = bridge->getIcon(); + params.icon_open = bridge->getOpenIcon(); - if (mShowItemLinkOverlays) // if false, then links show up just like normal items + if (mShowItemLinkOverlays) // if false, then links show up just like normal items + { + params.icon_overlay = LLUI::getUIImage("Inv_Link"); + } + + params.root = mFolderRoot; + params.listener = bridge; + params.tool_tip = params.name; + + return LLUICtrlFactory::create<LLFolderViewFolder>(params); + } + else { - params.icon_overlay = LLUI::getUIImage("Inv_Link"); + // It's an empty system folder that should be hidden -> return NULL + return NULL; } - - params.root = mFolderRoot; - params.listener = bridge; - params.tool_tip = params.name; - return LLUICtrlFactory::create<LLFolderViewFolder>(params); } LLFolderViewItem * LLInventoryPanel::createFolderViewItem(LLInvFVBridge * bridge) @@ -697,7 +716,10 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id) if (new_listener) { LLFolderViewFolder* folderp = createFolderViewFolder(new_listener); - folderp->setItemSortOrder(mFolderRoot->getSortOrder()); + if (folderp) + { + folderp->setItemSortOrder(mFolderRoot->getSortOrder()); + } itemp = folderp; } } |