Description

Hitting undo on a text widget while it is still selected will cause an assert. This appears to happen because the widget loses focus and attempts to commit it's text while still processing the undo, causing 2 transactions to occur simultaneously.

Steps to Reproduce
  1. Create a new UserWidget. Add a Text widget
  2. Select the text widget. Change the text and hit Enter
  3. Without deselecting the widget, hit ctrl-z to undo the change
  4. Editor will assert (Ensure condition failed: !GIsTransacting)
Callstack

UE4Editor_UnrealEd!UTransBuffer::BeginInternal<FTransaction>() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\classes\editor\transbuffer.h:72] UE4Editor_UnrealEd!UEditorEngine::BeginTransaction() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\editorserver.cpp:1098] UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:507] UE4Editor_PropertyEditor!<lambda_6601be400562b511ff01219c84317293>::operator()() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:2864] UE4Editor_PropertyEditor!FPropertyValueImpl::EnumerateObjectsToModify() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:55] UE4Editor_PropertyEditor!FPropertyHandleBase::SetPerObjectValue() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:2852] UE4Editor_DetailCustomizations!`anonymous namespace'::FEditableTextPropertyHandle::SetText() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\detailcustomizations\private\textcustomization.cpp:82] UE4Editor_EditorWidgets!STextPropertyEditableTextBox::OnTextCommitted() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\editorwidgets\private\stextpropertyeditabletextbox.cpp:918] UE4Editor_EditorWidgets!TBaseSPMethodDelegateInstance<0,STextPropertyEditableTextBox,0,TTypeWrapper<void> _cdecl(FText const & __ptr64,enum ETextCommit::Type)>::Execute() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269] UE4Editor_EditorWidgets!TBaseSPMethodDelegateInstance<0,STextPropertyEditableTextBox,0,void __cdecl(FText const & __ptr64,enum ETextCommit::Type)>::ExecuteIfSafe() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:345] UE4Editor_Slate!FSlateEditableTextLayout::HandleFocusLost() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\widgets\text\slateeditabletextlayout.cpp:783] UE4Editor_Slate!FSlateApplication::SetUserFocus() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:2893] UE4Editor_Slate!FSlateApplication::ClearKeyboardFocus() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:2654] UE4Editor_UMGEditor!SWidgetDetailsView::ClearFocusIfOwned() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\umgeditor\private\details\swidgetdetailsview.cpp:294] UE4Editor_UMGEditor!SWidgetDetailsView::OnEditorSelectionChanging() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\umgeditor\private\details\swidgetdetailsview.cpp:214] UE4Editor_UMGEditor!TBaseRawMethodDelegateInstance<0,SWidgetDetailsView,void __cdecl(void)>::ExecuteIfSafe() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:503] UE4Editor_UMGEditor!TBaseMulticastDelegate<void>::Broadcast() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937] UE4Editor_UMGEditor!FWidgetBlueprintEditor::RefreshPreview() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\umgeditor\private\widgetblueprinteditor.cpp:752] UE4Editor_UMGEditor!FWidgetBlueprintEditor::OnBlueprintChangedImpl() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\umgeditor\private\widgetblueprinteditor.cpp:311] UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(UBlueprint * __ptr64)>::Execute() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269] UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(UBlueprint * __ptr64)>::ExecuteIfSafe() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:345] UE4Editor_Engine!TBaseMulticastDelegate<void,UBlueprint * __ptr64>::Broadcast() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937] UE4Editor_UnrealEd!FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\kismet2\blueprinteditorutils.cpp:2109] UE4Editor_Kismet!FixSubObjectReferencesPostUndoRedo() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\kismet\private\blueprinteditormodule.cpp:166] UE4Editor_UnrealEd!UEditorEngine::BroadcastPostUndo() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\editorserver.cpp:5063] UE4Editor_UnrealEd!UEditorEngine::HandleTransactorUndo() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\editorserver.cpp:1193] UE4Editor_UnrealEd!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,TTypeWrapper<void> __cdecl(FUndoSessionContext,bool)>::Execute() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:597] UE4Editor_UnrealEd!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,void __cdecl(FUndoSessionContext,bool)>::ExecuteIfSafe() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:657] UE4Editor_UnrealEd!TBaseMulticastDelegate<void,FUndoSessionContext,bool>::Broadcast() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937] UE4Editor_UnrealEd!UTransBuffer::Undo() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\editortransaction.cpp:899] UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269] UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(void)>::ExecuteIfSafe() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:345] UE4Editor_Slate!FUICommandList::ConditionalProcessCommandBindings() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:216] UE4Editor_Slate!FUICommandList::ProcessCommandBindings() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:160] UE4Editor_UnrealEd!FBaseToolkit::ProcessCommandBindings() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\toolkits\basetoolkit.cpp:74] UE4Editor_UnrealEd!SStandaloneAssetEditorToolkitHost::OnKeyDown() [c:\depot\prospect\main\main_dev\ue4\engine\source\editor\unrealed\private\toolkits\sstandaloneasseteditortoolkithost.cpp:324] UE4Editor_Slate!<lambda_2afcd964c763e269e2d1a63f3a72f846>::operator()() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5011] UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FKeyEvent,<lambda_2afcd964c763e269e2d1a63f3a72f846> >() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:266] UE4Editor_Slate!FEventRouter::RouteAlongFocusPath<FEventRouter::FBubblePolicy,<lambda_2afcd964c763e269e2d1a63f3a72f846>,FKeyEvent>() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:247] UE4Editor_Slate!FSlateApplication::ProcessKeyDownEvent() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5009] UE4Editor_Slate!FSlateApplication::OnKeyDown() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4921] UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1561] UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:2172] UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:889] UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:726] user32 user32 UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\applicationcore\private\windows\windowsplatformapplicationmisc.cpp:129] UE4Editor!FEngineLoop::Tick() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\launch\private\launchengineloop.cpp:3263] UE4Editor!GuardedMain() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\launch\private\launch.cpp:166] UE4Editor!GuardedMainWrapper() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\launch\private\windows\launchwindows.cpp:134] UE4Editor!WinMain() [c:\depot\prospect\main\main_dev\ue4\engine\source\runtime\launch\private\windows\launchwindows.cpp:210] UE4Editor!_scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253] kernel32 ntdll

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Editor - UI Systems
Target Fix4.21
Fix Commit4281460
Main Commit4329255
Release Commit4399518
CreatedJul 17, 2018
ResolvedAug 13, 2018
UpdatedMar 8, 2019