Custom Slate Graph Pin's (SGraphPin) default values not being displayed until Blueprint is saved?!

I’ve created a custom SGraphPin, SMyGraphPin that is used to customize the rendering of a FMyVector struct. This works excellently, and everything is working correctly with one annoying visual glitch.

In FMyVector the default values for [x,y,z] are [1,2,3]. However, when the pin is first displayed on a Blueprint graph, it’s rendered as [0,0,0] and it stays this way until the graph is saved.

Connecting the node, calling (in C++) NodeConnectionListChanged, PostEditChanged, PinConnectionListChanged, all do nothing. It only displays correctly once the Blueprint graph is saved.

To be clear this is 100% a visual issue. If the user changes the Y value to 5, then the node will display [0,5,0] but then correctly display [1,5,3] after the blueprint graph is saved. And it only happens the first time a node is displayed. When I close/reopen the blueprint, the old [1,5,3] node will work perfectly.

One other interesting hint here. If I drag a wire from ‘FMyVector’ and promote it to a variable, two weird things happen:

  1. The custom rendering of the pin persists, instead of being collapsed, such as what happens when you promote an FVector or FRotator to a variable.

  2. The default values of that variable reflect the correct values, while the displayed values of the pin persist at 0,0,0 until saved.