EXP-1895 : Fix the evaluation of visible children in folders

meow-7.2.2
Merov Linden 2012-02-23 09:57:05 -08:00
parent c2922a402d
commit a7499dc4ab
1 changed files with 29 additions and 0 deletions

View File

@ -1159,7 +1159,36 @@ S32 LLFolderViewFolder::arrange( S32* width, S32* height, S32 filter_generation)
mNeedsSort = false;
}
// evaluate mHasVisibleChildren
mHasVisibleChildren = hasFilteredDescendants(filter_generation);
if (mHasVisibleChildren)
{
// We have to verify that there's at least one child that's not filtered out
bool found = false;
// Try the items first
for (items_t::iterator iit = mItems.begin(); iit != mItems.end(); ++iit)
{
LLFolderViewItem* itemp = (*iit);
found = (itemp->getFiltered(filter_generation));
if (found)
break;
}
if (!found)
{
// If no item found, try the folders
for (folders_t::iterator fit = mFolders.begin(); fit != mFolders.end(); ++fit)
{
LLFolderViewFolder* folderp = (*fit);
found = ( folderp->getListener()
&& (folderp->getFiltered(filter_generation)
|| (folderp->getFilteredFolder(filter_generation)
&& folderp->hasFilteredDescendants(filter_generation))));
if (found)
break;
}
}
mHasVisibleChildren = found;
}
// calculate height as a single item (without any children), and reshapes rectangle to match
LLFolderViewItem::arrange( width, height, filter_generation );