Description

Ensure will trigger when undo reverts text to default value.

"This triggers an ensure because the undo ends up calling SKismetInspector::ShowDetailsForObjects(), which forces the keyboard focus to get cleared on the text editor widget, causing it to attempt to submit the current value while it is in the middle of applying the undo transaction."

Potential fix: (Licensee would like to know if this is best way to prevent this)

 if (* !GIsTransacting &&* FSlateApplication::Get().HasFocusedDescendants(AsShared()) )
 {
     FSlateApplication::Get().ClearKeyboardFocus(EFocusCause::Mouse);
 }

Confirmed in Main (4.22) CL 4404204

Steps to Reproduce

1. Create a new blueprint
2. Add a Text variable (also tested with Name and Interger)
3. Compile the blueprint so you can change the default value.
4. Change the default value to anything other than None and hit Enter to submit the change.
5. Press Ctrl+Z to undo the change without doing anything

Result: ensure will hit: Ensure condition failed: !GIsTransacting

Callstack
Ensure condition failed: !GIsTransacting [File:D:\Build\++UE4+Release-4.19+Compile\Sync\Engine\Source\Editor\UnrealEd\Classes\Editor/TransBuffer.h] [Line: 72]

UE4Editor-Core.dll!FWindowsPlatformStackWalk::StackWalkAndDump() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\windows\windowsplatformstackwalk.cpp:234]
UE4Editor-Core.dll!FDebug::EnsureFailed() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:299]
UE4Editor-Core.dll!FDebug::OptionallyLogFormattedEnsureMessageReturningFalse() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\private\misc\assertionmacros.cpp:430]
UE4Editor-UnrealEd.dll!UTransBuffer::BeginInternal<FTransaction>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\classes\editor\transbuffer.h:72]
UE4Editor-UnrealEd.dll!UEditorEngine::BeginTransaction() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\editorserver.cpp:1091]
UE4Editor-PropertyEditor.dll!FPropertyValueImpl::ImportText() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:507]
UE4Editor-PropertyEditor.dll!<lambda_6601be400562b511ff01219c84317293>::operator()() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:2864]
UE4Editor-PropertyEditor.dll!FPropertyValueImpl::EnumerateObjectsToModify() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:55]
UE4Editor-PropertyEditor.dll!FPropertyHandleBase::SetPerObjectValue() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\propertyeditor\private\propertyhandleimpl.cpp:2852]
UE4Editor-DetailCustomizations.dll!`anonymous namespace'::FEditableTextPropertyHandle::SetText() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\detailcustomizations\private\textcustomization.cpp:82]
UE4Editor-EditorWidgets.dll!STextPropertyEditableTextBox::OnTextCommitted() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\editorwidgets\private\stextpropertyeditabletextbox.cpp:955]
UE4Editor-EditorWidgets.dll!TBaseSPMethodDelegateInstance<0,STextPropertyEditableTextBox,0,TTypeWrapper<void> __cdecl(FText const & __ptr64,enum ETextCommit::Type)>::Execute() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269]
UE4Editor-EditorWidgets.dll!TBaseSPMethodDelegateInstance<0,STextPropertyEditableTextBox,0,void __cdecl(FText const & __ptr64,enum ETextCommit::Type)>::ExecuteIfSafe() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:345]
UE4Editor-Slate.dll!FSlateEditableTextLayout::HandleFocusLost() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\widgets\text\slateeditabletextlayout.cpp:783]
UE4Editor-Slate.dll!FSlateApplication::SetUserFocus() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:2893]
UE4Editor-Slate.dll!FSlateApplication::ClearKeyboardFocus() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:2654]
UE4Editor-Kismet.dll!SKismetInspector::ShowDetailsForObjects() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\skismetinspector.cpp:461]
UE4Editor-Kismet.dll!SMyBlueprint::OnActionSelectedHelper() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\smyblueprint.cpp:1645]
UE4Editor-Kismet.dll!SMyBlueprint::OnActionSelected() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\smyblueprint.cpp:1565]
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,SMyBlueprint,0,TTypeWrapper<void> __cdecl(TArray<TSharedPtr<FEdGraphSchemaAction,0>,FDefaultAllocator> const & __ptr64,enum ESelectInfo::Type)>::Execute() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269]
UE4Editor-GraphEditor.dll!SGraphActionMenu::HandleSelection() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\grapheditor\private\sgraphactionmenu.cpp:1355]
UE4Editor-GraphEditor.dll!SGraphActionMenu::OnItemSelected() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\grapheditor\private\sgraphactionmenu.cpp:1182]
UE4Editor-GraphEditor.dll!TBaseSPMethodDelegateInstance<0,SGraphActionMenu,0,TTypeWrapper<void> __cdecl(TSharedPtr<FGraphActionNode,0>,enum ESelectInfo::Type)>::Execute() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269]
UE4Editor-GraphEditor.dll!TBaseSPMethodDelegateInstance<0,SGraphActionMenu,0,void __cdecl(TSharedPtr<FGraphActionNode,0>,enum ESelectInfo::Type)>::ExecuteIfSafe() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:345]
UE4Editor-GraphEditor.dll!TBaseDelegate<void,TSharedPtr<FGraphActionNode,0>,enum ESelectInfo::Type>::ExecuteIfBound() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:624]
UE4Editor-GraphEditor.dll!SListView<TSharedPtr<FGraphActionNode,0> >::Private_SignalSelectionChanged() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\public\widgets\views\slistview.h:729]
UE4Editor-GraphEditor.dll!SGraphActionMenu::SelectItemByName() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\grapheditor\private\sgraphactionmenu.cpp:559]
UE4Editor-Kismet.dll!SMyBlueprint::ClearGraphActionMenuSelection() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\smyblueprint.cpp:2758]
UE4Editor-Kismet.dll!FBlueprintEditor::ClearSelectionStateFor() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\blueprinteditor.cpp:812]
UE4Editor-Kismet.dll!FBlueprintEditor::HandleUndoTransaction() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\blueprinteditor.cpp:2892]
UE4Editor-Kismet.dll!FBlueprintEditor::PostUndo() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\kismet\private\blueprinteditor.cpp:2906]
UE4Editor-UnrealEd.dll!UEditorEngine::BroadcastPostUndo() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\editorserver.cpp:5045]
UE4Editor-UnrealEd.dll!UEditorEngine::HandleTransactorUndo() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\editorserver.cpp:1186]
UE4Editor-UnrealEd.dll!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,TTypeWrapper<void> __cdecl(FUndoSessionContext,bool)>::Execute() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:597]
UE4Editor-UnrealEd.dll!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,void __cdecl(FUndoSessionContext,bool)>::ExecuteIfSafe() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:657]
UE4Editor-UnrealEd.dll!TBaseMulticastDelegate<void,FUndoSessionContext,bool>::Broadcast() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:937]
UE4Editor-UnrealEd.dll!UTransBuffer::Undo() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\editortransaction.cpp:899]
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:269]
UE4Editor-Kismet.dll!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl(void)>::ExecuteIfSafe() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:345]
UE4Editor-Slate.dll!FUICommandList::ConditionalProcessCommandBindings() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:216]
UE4Editor-Slate.dll!FUICommandList::ProcessCommandBindings() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\commands\uicommandlist.cpp:160]
UE4Editor-UnrealEd.dll!FBaseToolkit::ProcessCommandBindings() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\toolkits\basetoolkit.cpp:74]
UE4Editor-UnrealEd.dll!SStandaloneAssetEditorToolkitHost::OnKeyDown() [d:\build\++ue4+release-4.19+compile\sync\engine\source\editor\unrealed\private\toolkits\sstandaloneasseteditortoolkithost.cpp:324]
UE4Editor-Slate.dll!<lambda_2afcd964c763e269e2d1a63f3a72f846>::operator()() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5011]
UE4Editor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FKeyEvent,<lambda_2afcd964c763e269e2d1a63f3a72f846> >() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:266]
UE4Editor-Slate.dll!FEventRouter::RouteAlongFocusPath<FEventRouter::FBubblePolicy,<lambda_2afcd964c763e269e2d1a63f3a72f846>,FKeyEvent>() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:247]
UE4Editor-Slate.dll!FSlateApplication::ProcessKeyDownEvent() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5009]
UE4Editor-Slate.dll!FSlateApplication::OnKeyDown() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4921]
UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:1561]
UE4Editor-ApplicationCore.dll!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:2172]
UE4Editor-ApplicationCore.dll!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:889]
UE4Editor-ApplicationCore.dll!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsapplication.cpp:726]
USER32.dll!UnknownFunction []
USER32.dll!UnknownFunction []
UE4Editor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\applicationcore\private\windows\windowsplatformapplicationmisc.cpp:129]
UE4Editor.exe!FEngineLoop::Tick() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:3263]
UE4Editor.exe!GuardedMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor.exe!GuardedMainWrapper() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:144]
UE4Editor.exe!WinMain() [d:\build\++ue4+release-4.19+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:223]
UE4Editor.exe!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:253]
KERNEL32.DLL!UnknownFunction []
ntdll.dll!UnknownFunction []

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-64569 in the post.

2
Login to Vote

Fixed
ComponentGameplay - Blueprint
Affects Versions4.19.24.224.20.34.23
Target Fix4.25
Fix Commit11064984
Main Commit11254295
CreatedSep 28, 2018
ResolvedJan 20, 2020
UpdatedFeb 5, 2020