Control Rig: Fix undo/redo in curve container not working

#jira UE-200243
#rb Helge.Mathee
#rnx

[CL 29803906 by sara schvartzman in ue5-main branch]
This commit is contained in:
sara schvartzman
2023-11-17 05:21:09 -05:00
parent bc0182ce37
commit 359450130b
2 changed files with 29 additions and 1 deletions

View File

@@ -147,6 +147,13 @@ void SRigCurveContainer::Construct(const FArguments& InArgs, TSharedRef<FControl
ControlRigBlueprint->Hierarchy->OnModified().AddRaw(this, &SRigCurveContainer::OnHierarchyModified);
ControlRigBlueprint->OnRefreshEditor().AddRaw(this, &SRigCurveContainer::HandleRefreshEditorFromBlueprint);
UEditorEngine* Editor = Cast<UEditorEngine>(GEngine);
if (Editor != nullptr)
{
Editor->RegisterForUndo(this);
}
// Register and bind all our menu commands
FCurveContainerCommands::Register();
BindCommands();
@@ -455,6 +462,22 @@ void SRigCurveContainer::OnNameCommitted(const FText& InNewName, ETextCommit::Ty
}
}
void SRigCurveContainer::PostUndo(bool bSuccess)
{
if (bSuccess)
{
RefreshCurveList();
}
}
void SRigCurveContainer::PostRedo(bool bSuccess)
{
if (bSuccess)
{
RefreshCurveList();
}
}
void SRigCurveContainer::OnDeleteNameClicked()
{
URigHierarchy* Hierarchy = GetHierarchy();

View File

@@ -9,6 +9,7 @@
#include "Widgets/Views/SListView.h"
#include "Rigs/RigHierarchy.h"
#include "ControlRigBlueprint.h"
#include "EditorUndoClient.h"
//////////////////////////////////////////////////////////////////////////
// FDisplayedRigCurveInfo
@@ -121,7 +122,7 @@ private:
//////////////////////////////////////////////////////////////////////////
// SRigCurveContainer
class SRigCurveContainer : public SCompoundWidget
class SRigCurveContainer : public SCompoundWidget, public FEditorUndoClient
{
public:
SLATE_BEGIN_ARGS( SRigCurveContainer )
@@ -201,6 +202,10 @@ public:
// When a name is committed after being edited in the list
virtual void OnNameCommitted(const FText& NewName, ETextCommit::Type CommitType, FDisplayedRigCurveInfoPtr Item);
// FEditorUndoClient
virtual void PostUndo(bool bSuccess) override;
virtual void PostRedo(bool bSuccess) override;
private:
void BindCommands();