void FDetailCategoryImpl::FilterNode( const FDetailFilter& InFilter )
{
	bHasFilterStrings = InFilter.FilterStrings.Num() > 0;
	bForceAdvanced = bHasFilterStrings || InFilter.bShowAllAdvanced == true;

	bHasVisibleDetails = false;

	for( int32 ChildIndex = 0; ChildIndex < SimpleChildNodes.Num(); ++ChildIndex )
	{
		TSharedRef<IDetailTreeNode>& Child = SimpleChildNodes[ChildIndex];
		Child->FilterNode( InFilter );

		if( Child->GetVisibility() == ENodeVisibility::Visible )
		{
			bHasVisibleDetails = true;
			RequestItemExpanded( Child, Child->ShouldBeExpanded() );
		}
	}

	for( int32 ChildIndex = 0; ChildIndex < AdvancedChildNodes.Num(); ++ChildIndex )
	{
		TSharedRef<IDetailTreeNode>& Child = AdvancedChildNodes[ChildIndex];
		Child->FilterNode( InFilter );

		if( Child->GetVisibility() == ENodeVisibility::Visible )
		{
			bHasVisibleDetails = true;
			RequestItemExpanded( Child, Child->ShouldBeExpanded() );
		}

	}
}
Exemplo n.º 2
0
void SDetailsViewBase::SetNodeExpansionState(TSharedRef<IDetailTreeNode> InTreeNode, bool bIsItemExpanded, bool bRecursive)
{
	TArray< TSharedRef<IDetailTreeNode> > Children;
	InTreeNode->GetChildren(Children);

	if (Children.Num())
	{
		RequestItemExpanded(InTreeNode, bIsItemExpanded);
		InTreeNode->OnItemExpansionChanged(bIsItemExpanded);

		if (bRecursive)
		{
			for (int32 ChildIndex = 0; ChildIndex < Children.Num(); ++ChildIndex)
			{
				TSharedRef<IDetailTreeNode> Child = Children[ChildIndex];

				SetNodeExpansionState(Child, bIsItemExpanded, bRecursive);
			}
		}
	}
}