When a `FRuntimeFloatCurve` property is displayed inline in the Details panel via `FCurveStructCustomization`, attempting to drag a curve key or adjust the tangents is not possible. The curve editor appears to accept the initial click, but each micro-adjustment immediately refreshes the whole Details panel and the curve editor seems to lose focus, making the edit functionally impossible.
I narrowed down the root cause to `FCurveStructCustomization::OnCurveChanged()` (`Engine/Source/Editor/DetailCustomizations/Private/CurveStructCustomization.cpp`). This callback fires on every frame during a key drag and calls:
void FCurveStructCustomization::OnCurveChanged(const TArray<FRichCurveEditInfo>& ChangedCurveEditInfos)
{
StructPropertyHandle->NotifyPostChange(EPropertyChangeType::Unspecified);
}
`EPropertyChangeType::Unspecified` seems to trigger a full Details panel refresh each frame. This refresh steals keyboard/mouse focus away from the curve editor’s active drag operation. The result is that the drag is cancelled on the very next frame, making it impossible to move keys, add keys, or otherwise edit the curve interactively.
The expected behavior is that dragging curve keys in the inline Details panel curve editor should work smoothly, with the Details panel deferring its full refresh until the drag is complete.
Suggested fix (which I have made as an engine modification on our project):
Change `EPropertyChangeType::Unspecified` to `EPropertyChangeType::Interactive` in `FCurveStructCustomization::OnCurveChanged`. Interactive signals to the property system that an ongoing edit is in progress and suppresses the full Details panel refresh.
void FCurveStructCustomization::OnCurveChanged(const TArray<FRichCurveEditInfo>& ChangedCurveEditInfos)
{
StructPropertyHandle->NotifyPostChange(EPropertyChangeType::Interactive);
}
[Attachment Removed]