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