PostEditChangeProperty and PostEditChangeChainProperty event change types are set to "Unspecified" when using UObjects property

Hi,

Since at least Unreal 5.5.4 I noticed that emitted PostEditChangeProperty and PostEditChangeChainProperty events calls have a change type set to “Unspecified” when the user edited property is contained in a UObject.

Some of our implementations relied on this, and this is how I noticed this change in behavior.

Thanks in advance if you have some suggestion for getting around this specific issue.

Steps to Reproduce

  1. Add breakpoint in “PostEditChangeProperty” and “PostEditChangeProperty” functions body.
  2. Instanciate AMyActor in the scene.
  3. Press “CreateObject” button in the newly instancied actor detail panel in order to initialize “MyObject”.
  4. Edit “MyObject->Value” int field using the user interface the way you want.
  5. You should notice that the change event type will always be 1 (EPropertyChangeType::Unspecified)

`#pragma once

include “CoreMinimal.h”

include “MyActor.generated.h”

UCLASS()
class UMyObjet : public UObject
{
GENERATED_BODY()

// A simple value to test editing its value in the UI
UPROPERTY(EditAnywhere, Category = "Test")
    int Value = 0;

};

UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()

public:
// An helper button to initialize our test Object
UFUNCTION(CallInEditor, Category = “Test”)
void CreateObject()
{
Object = NewObject(this);
}

// The property we want to edit
UPROPERTY(EditAnywhere, Instanced, Category = "Test", meta = (ShowInnerProperties))
    TObjectPtr<UObject> Object = nullptr;

virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override
{
    // Here PropertyChangedEvent.ChangeType will be equal to 1 (i.e. EPropertyChangeType::Unspecified)
    // regardless of the change made to Object->Value in the panel.
    Super::PostEditChangeProperty(PropertyChangedEvent);
}

virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent) override
{
    // Same issue here
    Super::PostEditChangeChainProperty(PropertyChangedEvent);
}

};`

Hi,

This should be fixed in CL# 38718909 if you want to backport it, you should just need the change to PropertyNode.cpp that removes the following:

// Parent object node property. Reset property and leave the event type as unspecified since we dont pass in the exact leaf property. ChangedEvent.ChangeType = EPropertyChangeType::Unspecified;Let me know if that doesn’t work for you and we’ll investigate.

Best,

Cody