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

Unresolved
ComponentGameplay - Blueprint
Affects Versions4.19.24.224.20.34.23
Target Fix4.25
CreatedSep 28, 2018
UpdatedOct 25, 2019