I ran into this myself today! (On UE 4.11)
The editor is running FEdMode::InputDelta and in there it calls the post edit change commands with null as the property:
BestSelectedItem->PreEditChange(NULL);
if (bEditedPropertyIsTransform)
{
SetPropertyValueByName<FTransform>(BestSelectedItem, EditedPropertyName, EditedPropertyIndex, LocalTM);
}
else
{
SetPropertyValueByName<FVector>(BestSelectedItem, EditedPropertyName, EditedPropertyIndex, LocalTM.GetLocation());
}
BestSelectedItem->PostEditChange();
The actual property windows code uses things like the following:
UProperty* RelativeRotationProperty = FindField<UProperty>( USceneComponent::StaticClass(), "RelativeRotation" );
FPropertyChangedEvent PropertyChangedEvent( RelativeRotationProperty );
Object->PostEditChangeProperty( PropertyChangedEvent );
So it seems the only way to handle this is to look for null and then check against a manually cached variable.
Is there a reason why we couldn’t do a similar thing to the property window code here?