// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Types/ISlateMetaData.h" #include "ITypedTableView.h" class ITableViewMetadata : public ISlateMetaData { public: SLATE_METADATA_TYPE(ITableViewMetadata, ISlateMetaData); /** Returns all currently constructed rows that represent selected items */ virtual TArray> GatherSelectedRows() const = 0; }; template class TTableViewMetadata : public ITableViewMetadata { public: SLATE_METADATA_TYPE(TTableViewMetadata, ITableViewMetadata); TTableViewMetadata(TSharedRef> InOwnerTableView) : OwnerTableView(InOwnerTableView) {} virtual TArray> GatherSelectedRows() const override { TArray> SelectedRows; if (TSharedPtr> PinnedTableView = OwnerTableView.Pin()) { for (const ItemType& Item : PinnedTableView->GetSelectedItems()) { if (TSharedPtr TableRow = PinnedTableView->WidgetFromItem(Item)) { SelectedRows.Add(TableRow); } } } return SelectedRows; } private: TWeakPtr> OwnerTableView; };