Description

When trying to undo a single digit change the editor will crash. For example, if a user highlights and replaces a single number in the size of a widget and then attempts to undo, the editor will crash.

Note: Does NOT happen in 4.14, It is a regression

Steps to Reproduce
  1. Open the editor
  2. Create a new widget blueprint
  3. Add an image to the designer tab
  4. Highlight the number '1' (only) in the size X setting for the image widget
  5. With only the number '1' highlighted press '2' to replace the number '1' (so that the size goes from 100 to 200. (DO NOT simply replace the whole number))
  6. Press enter to confirm the change
  7. Press Ctrl+Z to undo
  8. Notice that the editor crashes when trying to undo the single digit change

Expected: The size of the widget would revert back to 100 from 200 when using Ctrl+Z
Result: The editor crashes when trying to undo a single digit change

Callstack
UE4Editor_CoreUObject!CastLogError() casts.cpp:11 
UE4Editor_UMG!CastChecked<UUserWidget,UObject>() casts.h:211 
UE4Editor_UMG!UWidgetAnimation::CanPossessObject() widgetanimation.cpp:114 
UE4Editor_Sequencer!FSequencer::GetHandleToObject() sequencer.cpp:1784 
UE4Editor_UMGEditor!FMovieSceneTrackEditor::FindOrCreateHandleToObject() moviescenetrackeditor.h:124 
UE4Editor_UMGEditor!FKeyframeTrackEditor<UMovieSceneMarginTrack,UMovieSceneMarginSection,FMarginKey>::AddKeysToObjects() keyframetrackeditor.h:93 
UE4Editor_UMGEditor!FPropertyTrackEditor<UMovieSceneMarginTrack,UMovieSceneMarginSection,FMarginKey>::OnKeyProperty() propertytrackeditor.h:200 
UE4Editor_UMGEditor!TBaseRawMethodDelegateInstance<0,FPropertyTrackEditor<UMovieSceneMarginTrack,UMovieSceneMarginSection,FMarginKey>,bool __cdecl() delegateinstancesimpl.h:557
UE4Editor_UMGEditor!FMovieSceneTrackEditor::AnimatablePropertyChanged() moviescenetrackeditor.h:97 
UE4Editor_UMGEditor!FPropertyTrackEditor<UMovieSceneMarginTrack,UMovieSceneMarginSection,FMarginKey>::OnAnimatedPropertyChanged() propertytrackeditor.h:175 
UE4Editor_UMGEditor!TBaseRawMethodDelegateInstance<0,FPropertyTrackEditor<UMovieSceneMarginTrack,UMovieSceneMarginSection,FMarginKey>,void __cdecl() delegateinstancesimpl.h:648
UE4Editor_Sequencer!TBaseMulticastDelegate<void,FPropertyChangedParams const & __ptr64>::Broadcast() delegatesignatureimpl.inl:937 
UE4Editor_Sequencer!FSequencerObjectChangeListener::BroadcastPropertyChanged() sequencerobjectchangelistener.cpp:100 
UE4Editor_Sequencer!FSequencerObjectChangeListener::OnPropertyChanged() sequencerobjectchangelistener.cpp:35 
UE4Editor_Sequencer!TBaseRawMethodDelegateInstance<1,FSequencerObjectChangeListener,void __cdecl() delegateinstancesimpl.h:648 
UE4Editor_PropertyEditor!TBaseMulticastDelegate<void,TArray<UObject * __ptr64,FDefaultAllocator> const & __ptr64,IPropertyHandle const & __ptr64>::Broadcast() delegatesignatureimpl.inl:937
UE4Editor_PropertyEditor!FPropertyChangeListener::ScanForChanges() propertychangelistener.cpp:257 
UE4Editor_Sequencer!FSequencerObjectChangeListener::OnObjectPostEditChange() sequencerobjectchangelistener.cpp:347 
UE4Editor_Sequencer!TBaseRawMethodDelegateInstance<0,FSequencerObjectChangeListener,void __cdecl() delegateinstancesimpl.h:648 
UE4Editor_CoreUObject!TBaseMulticastDelegate<void,UObject * __ptr64,FPropertyChangedEvent & __ptr64>::Broadcast() delegatesignatureimpl.inl:937 
UE4Editor_UMG!UCanvasPanelSlot::PostEditChangeChainProperty() canvaspanelslot.cpp:255 
UE4Editor_PropertyEditor!FPropertyNode::NotifyPostChange() propertynode.cpp:2368 
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() propertyhandleimpl.cpp:561 
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() propertyhandleimpl.cpp:361 
UE4Editor_PropertyEditor!FPropertyHandleFloat::SetValue() propertyhandleimpl.cpp:2900 
UE4Editor_PropertyEditor!SPropertyEditorNumeric<float>::OnValueCommitted() spropertyeditornumeric.h:495 
UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SPropertyEditorNumeric<float>,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327 
UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SPropertyEditorNumeric<float>,0,void __cdecl() delegateinstancesimpl.h:434 
UE4Editor_PropertyEditor!TBaseDelegate<void,float,enum ETextCommit::Type>::ExecuteIfBound() delegatesignatureimpl.inl:624 
UE4Editor_PropertyEditor!SSpinBox<float>::CommitValue() sspinbox.h:744 
UE4Editor_PropertyEditor!SSpinBox<float>::TextField_OnTextCommitted() sspinbox.h:680 
UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SSpinBox<float>,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327 
UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SSpinBox<float>,0,void __cdecl() delegateinstancesimpl.h:434 
UE4Editor_Slate!TBaseDelegate<void,FText const & __ptr64,enum ETextCommit::Type>::ExecuteIfBound() delegatesignatureimpl.inl:624 
UE4Editor_Slate!FSlateEditableTextLayout::HandleFocusLost() slateeditabletextlayout.cpp:693 
UE4Editor_Slate!FSlateApplication::SetUserFocus() slateapplication.cpp:2815 
UE4Editor_Slate!FSlateApplication::SetUserFocus() slateapplication.cpp:2707 
UE4Editor_Slate!FSlateApplication::ClearKeyboardFocus() slateapplication.cpp:2585 
UE4Editor_UMGEditor!SWidgetDetailsView::ClearFocusIfOwned() swidgetdetailsview.cpp:291 
UE4Editor_UMGEditor!SWidgetDetailsView::OnEditorSelectionChanging() swidgetdetailsview.cpp:211 
UE4Editor_UMGEditor!TBaseRawMethodDelegateInstance<0,SWidgetDetailsView,void __cdecl() delegateinstancesimpl.h:648 
UE4Editor_UMGEditor!TBaseMulticastDelegate<void>::Broadcast() delegatesignatureimpl.inl:937 
UE4Editor_UMGEditor!FWidgetBlueprintEditor::RefreshPreview() widgetblueprinteditor.cpp:720 
UE4Editor_UMGEditor!FWidgetBlueprintEditor::OnBlueprintChangedImpl() widgetblueprinteditor.cpp:304 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl() delegateinstancesimpl.h:434 
UE4Editor_Engine!TBaseMulticastDelegate<void,UBlueprint * __ptr64>::Broadcast() delegatesignatureimpl.inl:937 
UE4Editor_UnrealEd!FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() blueprinteditorutils.cpp:2134 
UE4Editor_Kismet!FixSubObjectReferencesPostUndoRedo() blueprinteditormodule.cpp:164 
UE4Editor_UnrealEd!UEditorEngine::BroadcastPostUndo() editorserver.cpp:5220 
UE4Editor_UnrealEd!UEditorEngine::HandleTransactorUndo() editorserver.cpp:1220 
UE4Editor_UnrealEd!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:766 
UE4Editor_UnrealEd!TBaseUObjectMethodDelegateInstance<0,UEditorEngine,void __cdecl() delegateinstancesimpl.h:856 
UE4Editor_UnrealEd!TBaseMulticastDelegate<void,FUndoSessionContext,bool>::Broadcast() delegatesignatureimpl.inl:937 
UE4Editor_UnrealEd!UTransBuffer::Undo() editortransaction.cpp:866 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl() delegateinstancesimpl.h:433 
UE4Editor_Slate!FUICommandList::ConditionalProcessCommandBindings() uicommandlist.cpp:216 
UE4Editor_Slate!FUICommandList::ProcessCommandBindings() uicommandlist.cpp:160 
UE4Editor_UnrealEd!FBaseToolkit::ProcessCommandBindings() basetoolkit.cpp:74 
UE4Editor_UnrealEd!SStandaloneAssetEditorToolkitHost::OnKeyDown() sstandaloneasseteditortoolkithost.cpp:338 
UE4Editor_Slate!<lambda_2afcd964c763e269e2d1a63f3a72f846>::operator() slateapplication.cpp:4681 
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FKeyEvent,<lambda_2afcd964c763e269e2d1a63f3a72f846> >() slateapplication.cpp:238 
UE4Editor_Slate!FEventRouter::RouteAlongFocusPath<FEventRouter::FBubblePolicy,<lambda_2afcd964c763e269e2d1a63f3a72f846>,FKeyEvent>() slateapplication.cpp:220 

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

3
Login to Vote

Fixed
ComponentUE - Anim - Sequencer
Affects Versions4.15
Target Fix4.15.1
Fix Commit3320927
CreatedFeb 21, 2017
ResolvedFeb 24, 2017
UpdatedApr 27, 2018