// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IRewindDebugger.h" #include "RewindDebuggerTrack.h" #include "Widgets/DeclarativeSyntaxSupport.h" #include "Widgets/SCompoundWidget.h" #include "Widgets/Views/STreeView.h" class SRewindDebuggerTrackTree : public SCompoundWidget { using FOnSelectionChanged = STreeView>::FOnSelectionChanged; using FOnMouseButtonDoubleClick = STreeView>::FOnMouseButtonDoubleClick; public: SLATE_BEGIN_ARGS(SRewindDebuggerTrackTree) {} SLATE_ARGUMENT(TArray< TSharedPtr< RewindDebugger::FRewindDebuggerTrack > >*, Tracks); SLATE_ARGUMENT(TSharedPtr< SScrollBar >, ExternalScrollBar); SLATE_EVENT(FOnSelectionChanged, OnSelectionChanged) SLATE_EVENT(FOnMouseButtonDoubleClick, OnMouseButtonDoubleClick) SLATE_EVENT(FOnContextMenuOpening, OnContextMenuOpening) SLATE_EVENT(FSimpleDelegate, OnExpansionChanged) SLATE_EVENT(FOnTableViewScrolled, OnScrolled) SLATE_END_ARGS() /** * Constructs the application. * * @param InArgs The Slate argument list. */ void Construct(const FArguments& InArgs); void Refresh(); void RestoreExpansion(); void SetSelection(const TSharedPtr& SelectedItem) const; void ScrollTo(double ScrollOffset) const; private: TSharedRef TreeViewGenerateRow(TSharedPtr InItem, const TSharedRef& OwnerTable) const; void TreeViewExpansionChanged(TSharedPtr InItem, bool bShouldBeExpanded) const; TArray>* Tracks = nullptr; TSharedPtr>> TreeView; FSimpleDelegate OnExpansionChanged; };