Description

There is a bug with Blueprint structs having FInstancedStruct as a property. If you modify the DefaultValues of any property of an FInstancedStruct inside the blueprint struct asset, an ensure will be triggered. This ensure will make the changes not get saved, so any changes in the DefaultValues section will not get saved.

This is a regression, this was not happening in version 5.4, or at least it did not trigger in my case.

Steps to Reproduce

1- Create two blueprint struct in the content browser.
2- In one of the blueprints, declare an FInstancedStruct, and select the other blueprint created previously.
3- Go to the DefaultValues section and modify one of the properties of the FInstancedStruct.
4- This will trigger the ensure inside FDefaultValueDetails::OnFinishedChangingProperties.
5- If you close the struct and open it again, you will see that the changes have not been saved.

Callstack

FDefaultValueDetails::OnFinishedChangingProperties(const FPropertyChangedEvent &) UserDefinedStructureEditor.cpp:245
[Inlined] Invoke(void (FDefaultValueDetails::*)(const FPropertyChangedEvent &), FDefaultValueDetails *&, const FPropertyChangedEvent &) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (FDefaultValueDetails::*&)(const FPropertyChangedEvent &), FDefaultValueDetails *&, const FPropertyChangedEvent &) Tuple.h:317
V::TBaseSPMethodDelegateInstance::ExecuteIfSafe(const FPropertyChangedEvent &) DelegateInstancesImpl.h:299
[Inlined] TMulticastDelegateBase::Broadcast(const FPropertyChangedEvent &) MulticastDelegateBase.h:257
TMulticastDelegate<void __cdecl(FPropertyChangedEvent const & __ptr64),FDefaultDelegateUserPolicy>::Broadcast(const FPropertyChangedEvent &) DelegateSignatureImpl.inl:1079
FPropertyValueImpl::ImportText(const TArray<…> &, const TArray<…> &, FPropertyNode *, unsigned int) PropertyHandleImpl.cpp:587
FPropertyValueImpl::ImportText(const FString &, FPropertyNode *, unsigned int) PropertyHandleImpl.cpp:252
FPropertyValueImpl::ImportText(const FString &, unsigned int) PropertyHandleImpl.cpp:159
FPropertyHandleBool::SetValue(const bool &, unsigned int) PropertyHandleImpl.cpp:3956
SPropertyEditorBool::OnCheckStateChanged(ECheckBoxState) SPropertyEditorBool.cpp:96
[Inlined] Invoke(void (SPropertyEditorBool::*)(ECheckBoxState), SPropertyEditorBool *&, ECheckBoxState &&) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (SPropertyEditorBool::*&)(ECheckBoxState), SPropertyEditorBool *&, ECheckBoxState &&) Tuple.h:317
V::TBaseSPMethodDelegateInstance::ExecuteIfSafe(ECheckBoxState) DelegateInstancesImpl.h:299
TDelegate::ExecuteIfBound<…>(ECheckBoxState) DelegateSignatureImpl.inl:634
SCheckBox::ToggleCheckedState() SCheckBox.cpp:389
SCheckBox::OnMouseButtonUp(const FGeometry &, const FPointerEvent &) SCheckBox.cpp:250
??R<lambda_2>@?7??RoutePointerUpEvent@FSlateApplication@@QEAA?AVFReply@@AEBVFWidgetPath@@AEBUFPointerEvent@@@Z@QEBA@AEBVFArrangedWidget@@1@Z(const FArrangedWidget &,const FPointerEvent &) SlateApplication.cpp:5341
??$Route@VFReply@@VFToLeafmostPolicy@FEventRouter@@UFPointerEvent@@V<lambda_2>@?7??RoutePointerUpEvent@FSlateApplication@@QEAA?AV1@AEBVFWidgetPath@@AEBU4@@Z@@FEventRouter@@SA?AVFReply@@PEAVFSlateApplication@@VFToLeafmostPolicy@0@UFPointerEvent@@AEBV<lambda_2>@?7??RoutePointerUpEvent@2@QEAA?AV1@AEBVFWidgetPath@@AEBU4@@Z@W4ESlateDebuggingInputEvent@@@Z(FSlateApplication *,FToLeafmostPolicy,FPointerEvent,const <lambda_2> &,ESlateDebuggingInputEvent) SlateApplication.cpp:456
FSlateApplication::RoutePointerUpEvent(const FWidgetPath &, const FPointerEvent &) SlateApplication.cpp:5327
FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent &) SlateApplication.cpp:5912
FSlateApplication::OnMouseUp(Type, TVector2<…>) SlateApplication.cpp:5868
FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage &) WindowsApplication.cpp:2271
FWindowsApplication::DeferMessage(TSharedPtr<…> &, HWND__ *, unsigned int, unsigned long long, long long, int, int, unsigned int) WindowsApplication.cpp:2783
FWindowsApplication::ProcessMessage(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:1944
[Inlined] WindowsApplication_WndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:939
FWindowsApplication::AppWndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:944
[Inlined] WinPumpMessages() WindowsPlatformApplicationMisc.cpp:116
FWindowsPlatformApplicationMisc::PumpMessages(bool) WindowsPlatformApplicationMisc.cpp:145
FEngineLoop::Tick() LaunchEngineLoop.cpp:5792
[Inlined] EngineTick() Launch.cpp:69
GuardedMain(const wchar_t *) Launch.cpp:190
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:266
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:317

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-234725 in the post.

0
Login to Vote

Unresolved
ComponentUE - AI
Affects Versions5.5
CreatedDec 16, 2024
UpdatedDec 20, 2024
View Jira Issue