void FGameplayTagContainerCustomization::PostRedo( bool bSuccess ) { if( bSuccess ) { RefreshTagList(); } }
TSharedRef<SWidget> SGameplayTagContainerGraphPin::SelectedTags() { RefreshTagList(); SAssignNew( TagListView, SListView<TSharedPtr<FString>> ) .ListItemsSource(&TagNames) .SelectionMode(ESelectionMode::None) .OnGenerateRow(this, &SGameplayTagContainerGraphPin::OnGenerateRow); return TagListView->AsShared(); }
TSharedRef<SWidget> FGameplayTagContainerCustomization::ActiveTags() { RefreshTagList(); SAssignNew( TagListView, SListView<TSharedPtr<FString>> ) .ListItemsSource(&TagNames) .SelectionMode(ESelectionMode::None) .OnGenerateRow(this, &FGameplayTagContainerCustomization::MakeListViewWidget); return TagListView->AsShared(); }
FReply FGameplayTagContainerCustomization::OnClearAllButtonClicked() { FScopedTransaction Transaction(LOCTEXT("GameplayTagContainerCustomization_RemoveAllTags", "Remove All Gameplay Tags")); for (int32 ContainerIdx = 0; ContainerIdx < EditableContainers.Num(); ++ContainerIdx) { UObject* OwnerObj = EditableContainers[ContainerIdx].TagContainerOwner; FGameplayTagContainer* Container = EditableContainers[ContainerIdx].TagContainer; if (OwnerObj && Container) { OwnerObj->PreEditChange(StructPropertyHandle->GetProperty()); FGameplayTagContainer EmptyContainer; StructPropertyHandle->SetValueFromFormattedString(EmptyContainer.ToString()); OwnerObj->PostEditChange(); RefreshTagList(); } } return FReply::Handled(); }