// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Misc/Attribute.h" #include "DetailWidgetRow.h" #include "SDetailsViewBase.h" #include "DetailCategoryBuilder.h" class FCustomChildrenBuilder; class FDetailCategoryImpl; class FDetailItemNode; class IDetailCustomNodeBuilder; class FDetailCustomBuilderRow : public IDetailLayoutRow, public TSharedFromThis { public: FDetailCustomBuilderRow( TSharedRef CustomBuilder ); virtual ~FDetailCustomBuilderRow() {} /** IDetailLayoutRow interface */ virtual FName GetRowName() const override { return GetCustomBuilderName(); } virtual TOptional GetCustomResetToDefault() const override; void Tick( float DeltaTime ); bool RequiresTick() const; bool HasColumns() const; bool ShowOnlyChildren() const; void OnItemNodeInitialized( TSharedRef InTreeNode, TSharedRef InParentCategory, const TAttribute& InIsParentEnabled ); TSharedRef GetCustomBuilder() const { return CustomNodeBuilder; } FName GetCustomBuilderName() const; TSharedPtr GetPropertyHandle() const; void OnGenerateChildren( FDetailNodeList& OutChildren ); bool IsInitiallyCollapsed() const; TSharedPtr GetWidgetRow() const; bool AreChildCustomizationsHidden() const; void SetOriginalPath(FStringView Path) { OriginalPath = Path; } const FString& GetOriginalPath() const { return OriginalPath; } private: /** Whether or not our parent is enabled */ TAttribute IsParentEnabled; TSharedPtr HeaderRow; TSharedRef CustomNodeBuilder; TSharedPtr ChildrenBuilder; TWeakPtr ParentCategory; FString OriginalPath; };