Description

There is no UI refresh for the Implemented Interfaces list in the Blueprint editor UI after a Blueprint Interface asset is renamed in the Content Drawer. Consequently, the interface cannot be removed as an Implemented Interface on the first attempt after renaming the Interface asset with the Blueprint editor open. If a debugger is attached, an ensure() will also fire after the first removal attempt (see callstack).

Steps to Reproduce
  1. Launch editor and create a new Blueprint asset (NewBlueprint)
  2. Create a new Blueprint Interface asset (NewInterface)
  3. Open NewBlueprint, and switch to Class Settings
  4. Under "Implemented Interfaces," add a new entry (NewInterface)
  5. Compile NewBlueprint, but leave the Blueprint editor open
  6. In the Content Browser, rename NewInterface (NewInterface_Renamed)
  7. Note that the interface name remains unchanged in the Blueprint editor's list
  8. Click the "X" to remove the interface from the list
  9. Answer "Yes" or "No" to the model dialog that appears (either is fine)
  10. [5.4+ only] An ensure() will fire here (NewBlueprint: No implementation was found for '.../NewInterface_Renamed.NewInterface_Renamed_C').
  11. Note that the interface is not removed from the list, but the name is now updated
  12. Repeat the above steps to remove the interface. The interface is now removed.
    Expected result: The interface list is updated after the rename, and the interface can be removed on the first attempt.
Callstack

> UnrealEditor-UnrealEd-Win64-Debug.dll!FBlueprintEditorUtils::RemoveInterface(UBlueprint * Blueprint, FTopLevelAssetPath InterfaceClassPathName, bool bPreserveFunctions) Line 6438 C++
UnrealEditor-Kismet-Win64-Debug.dll!FBlueprintInterfaceLayout::OnRemoveItem(const FBlueprintManagedListDetails::FManagedListItem & Item) Line 6485 C++
UnrealEditor-Kismet-Win64-Debug.dll!FBlueprintManagedListDetails::GenerateChildContent::__l15::<lambda_3>::operator()() Line 124 C++
UnrealEditor-Kismet-Win64-Debug.dll!TBaseFunctorDelegateInstance<void __cdecl(void),FDefaultDelegateUserPolicy,`FBlueprintManagedListDetails::GenerateChildContent'::`15'::<lambda_3>>::ExecuteIfSafe() Line 870 C++
UnrealEditor-PropertyEditor-Win64-Debug.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>() Line 570 C++
UnrealEditor-PropertyEditor-Win64-Debug.dll!PropertyCustomizationHelpers::SPropertyEditorButton::OnClick() Line 93 C++
UnrealEditor-PropertyEditor-Win64-Debug.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter<FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::const &)(void),PropertyCustomizationHelpers::SPropertyEditorButton * &>(FReply(PropertyCustomizationHelpers::SPropertyEditorButton::)() & Func, PropertyCustomizationHelpers::SPropertyEditorButton * & <Args_0>) Line 311 C++
UnrealEditor-PropertyEditor-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,PropertyCustomizationHelpers::SPropertyEditorButton,1,FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 281 C++
UnrealEditor-Slate-Win64-Debug.dll!SButton::ExecuteOnClick() Line 465 C++
UnrealEditor-Slate-Win64-Debug.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 390 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda_3>::operator()(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5220 C++
UnrealEditor-Slate-Win64-Debug.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,`FSlateApplication::RoutePointerUpEvent'::`8'::<lambda_3>>(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_3> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 442 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5206 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5775 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5740 C++
UnrealEditor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2231 C++
UnrealEditor-ApplicationCore-Win64-Debug.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 2738 C++
UnrealEditor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1101 C++
UnrealEditor-ApplicationCore-Win64-Debug.dll!WindowsApplication_WndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 931 C++
UnrealEditor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 937 C++

Have Comments or More Details?

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

0
Login to Vote

Backlogged
ComponentUE - Gameplay - Blueprint Editor
Affects Versions5.05.15.25.3
CreatedNov 13, 2023
UpdatedNov 30, 2023