Description

Copy-pasting an actor property that is a set of strings adds extra quotes and escapes.

The licensee has reported:
The problem doesn't happen for example for properties of types set of integers, nor string, nor map of strings to strings.
When copying the set of strings property with a single value Foo, the value in the clipboard is ("Foo"). When pasting it, it becomes the literal single item "Foo" in the editor. Copying this yields ("\"Foo\"") in the clipboard, etc.

I've been able to confirm this behavior on 5.6 and 5.7 (CL44372627).

I also tried to debug the code and went as far as FStrProperty::ExportText_Internal() - I've included it to the call stack field.

 

Steps to Reproduce

Create a blueprint.
Add to the blueprint a variable of type Set of Strings.
Compile the blueprint.
Set the new variables default value to contain one item that is the string Foo.
Shift+RMB on the variable name (not the item inside the variable).
Shift+LMB on the variable name.
The single item is now "Foo" with added quotes.
If you continue doing Shift+RMB and Shift+LMB, the value changes to "\"Foo\"" then "\"\\\"Foo\\\"\"", etc.

The expected result is that the process of copying and pasting would keep the data unchanged.

Callstack

> UnrealEditor-CoreUObject.dll!FStrProperty::ExportText_Internal(FString & ValueStr, const void * PropertyValueOrContainer, EPropertyPointerType PropertyPointerType, const void * DefaultValue, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 105 C++
[Inline Frame] UnrealEditor-CoreUObject.dll!FProperty::ExportTextItem_Direct(FString &) Line 530 C++
UnrealEditor-CoreUObject.dll!FSetProperty::ExportText_Internal(FString & ValueStr, const void * ContainerOrPropertyPtr, EPropertyPointerType PropertyPointerType, const void * DefaultValue, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 608 C++
UnrealEditor-CoreUObject.dll!FProperty::ExportText_Direct(FString & ValueStr, const void * Data, const void * Delta, UObject * Parent, int PortFlags, UObject * ExportRootScope) Line 1088 C++
UnrealEditor-PropertyEditor.dll!FPropertyTextUtilities::PropertyToTextHelper(FString & OutString, const FPropertyNode * InPropertyNode, const FProperty * Property, const unsigned char * ValueAddress, UObject * Object, EPropertyPortFlags PortFlags) Line 23 C++
UnrealEditor-PropertyEditor.dll!FPropertyNode::GetPropertyValueString(FString & OutString, const bool bAllowAlternateDisplayValue, EPropertyPortFlags PortFlags) Line 1153 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::GetValueAsString(FString & OutString, EPropertyPortFlags PortFlags) Line 875 C++
UnrealEditor-PropertyEditor.dll!SDetailSingleItemRow::OnCopyProperty() Line 1375 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!Invoke(void(SDetailSingleItemRow::*)()) Line 66 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(SDetailSingleItemRow::*)() &) Line 320 C++
UnrealEditor-PropertyEditor.dll!V::TBaseSPMethodDelegateInstance::ExecuteIfSafe() Line 309 C++
[Inline Frame] UnrealEditor-Slate.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() Line 635 C++
UnrealEditor-Slate.dll!FUIAction::Execute() Line 139 C++
UnrealEditor-Slate.dll!SMenuEntryBlock::OnClicked(bool bCheckBoxClicked) Line 1197 C++
UnrealEditor-Slate.dll!SMenuEntryBlock::OnMenuItemButtonClicked() Line 1148 C++
[Inline Frame] UnrealEditor-Slate.dll!Invoke(FReply(SMenuEntryBlock::*)()) Line 66 C++
[Inline Frame] UnrealEditor-Slate.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(FReply(SMenuEntryBlock::*)() &) Line 320 C++
UnrealEditor-Slate.dll!V::TBaseSPMethodDelegateInstance::Execute() Line 292 C++
[Inline Frame] UnrealEditor-Slate.dll!TDelegate<FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 614 C++
UnrealEditor-Slate.dll!SButton::ExecuteOnClick() Line 495 C++
UnrealEditor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 419 C++
UnrealEditor-Slate.dll!SMenuEntryButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 447 C++
UnrealEditor-Slate.dll!??R<lambda_2>@?7??RoutePointerUpEvent@FSlateApplication@@QEAA?AVFReply@@AEBVFWidgetPath@@AEBUFPointerEvent@@@Z@QEBA@AEBVFArrangedWidget@@1@Z(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5367 C++
UnrealEditor-Slate.dll!??$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 * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 456 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5353 C++
UnrealEditor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5938 C++
UnrealEditor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5894 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 3052 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,1> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 3570 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 2725 C++
[Inline Frame] UnrealEditor-ApplicationCore.dll!WindowsApplication_WndProc(HWND__ *) Line 1716 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1722 C++
[External Code]
[Inline Frame] UnrealEditor-ApplicationCore.dll!WinPumpMessages() Line 116 C++
UnrealEditor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 145 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5554 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 60 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 187 C++
UnrealEditor.exe!GuardedMainWrapper(const wchar_t * CmdLine) Line 128 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 282 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 339 C++
[External Code]

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - Editor
Affects Versions5.65.7
CreatedAug 24, 2025
UpdatedSep 11, 2025
View Jira Issue