Files
UnrealEngineUWP/Engine/Source/Editor/DataLayerEditor/Private/DataLayer/DataLayerOutlinerDeleteButtonColumn.cpp
richard malo 9a4289de40 - Changed Data Layer Visibility to be transient
- Added Data Layer bIsInitiallyVisible persistent flag to control Data Layer visibility flag initial value when loading map
- Fixed bug when changing map, Data Layer visibility was not properly reflected on actors
- Better Data Layer properties categorisation (Runtime vs Editor)
- Changing Data Layer IsDynamicallyLoaded flag is now only possible in its Details view
- Allow IsDynamicallyLoadedInEditor for any type of Data Layer
#rb jeanfrancois.dube, patrick.enfedaque

#ROBOMERGE-SOURCE: CL 15728575 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v781-15675533)

[CL 15728630 by richard malo in ue5-main branch]
2021-03-17 15:17:35 -04:00

83 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DataLayerOutlinerDeleteButtonColumn.h"
#include "Widgets/Layout/SSpacer.h"
#include "Widgets/Input/SButton.h"
#include "Widgets/Views/SHeaderRow.h"
#include "Widgets/Views/STreeView.h"
#include "Widgets/Images/SImage.h"
#include "DataLayerActorTreeItem.h"
#include "DataLayer/DataLayerEditorSubsystem.h"
#include "SceneOutlinerPublicTypes.h"
#include "ScopedTransaction.h"
#include "EditorStyleSet.h"
#include "Editor.h"
#define LOCTEXT_NAMESPACE "DataLayer"
FName FDataLayerOutlinerDeleteButtonColumn::GetID()
{
static FName DataLayeDeleteButton("DataLayeDeleteButton");
return DataLayeDeleteButton;
}
SHeaderRow::FColumn::FArguments FDataLayerOutlinerDeleteButtonColumn::ConstructHeaderRowColumn()
{
return SHeaderRow::Column(GetColumnID())
[
SNew(SSpacer)
];
}
const TSharedRef<SWidget> FDataLayerOutlinerDeleteButtonColumn::ConstructRowWidget(FSceneOutlinerTreeItemRef TreeItem, const STableRow<FSceneOutlinerTreeItemPtr>& Row)
{
if (FDataLayerActorTreeItem* DataLayerActorItem = TreeItem->CastTo<FDataLayerActorTreeItem>())
{
return SNew(SButton)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.ButtonStyle(FEditorStyle::Get(), "DataLayerBrowserButton")
.ContentPadding(0)
.OnClicked_Lambda([this, TreeItem, DataLayerActorItem]()
{
AActor* Actor = DataLayerActorItem->GetActor();
const UDataLayer* DataLayer = DataLayerActorItem->GetDataLayer();
if (Actor && DataLayer)
{
UDataLayerEditorSubsystem* DataLayerEditorSubsystem = UDataLayerEditorSubsystem::Get();
if (auto SceneOutliner = WeakSceneOutliner.IsValid() ? WeakSceneOutliner.Pin() : nullptr)
{
const auto& Tree = SceneOutliner->GetTree();
if (SceneOutliner->GetSharedData().CustomDelete.IsBound())
{
TArray<TWeakPtr<ISceneOutlinerTreeItem>> SelectedItems;
if (Tree.IsItemSelected(TreeItem))
{
for (auto& SelectedItem : Tree.GetSelectedItems())
{
if (FDataLayerActorTreeItem* SelectedDataLayerActorTreeItem = SelectedItem->CastTo<FDataLayerActorTreeItem>())
{
SelectedItems.Add(SelectedDataLayerActorTreeItem->AsShared());
}
}
}
else
{
SelectedItems.Add(TreeItem);
}
SceneOutliner->GetSharedData().CustomDelete.Execute(SelectedItems);
}
}
}
return FReply::Handled();
})
.ToolTipText(LOCTEXT("RemoveFromDataLayerButtonText", "Remove from Data Layer"))
[
SNew(SImage)
.Image(FEditorStyle::GetBrush(TEXT("DataLayerBrowser.Actor.RemoveFromDataLayer")))
];
}
return SNullWidget::NullWidget;
}
#undef LOCTEXT_NAMESPACE