Slate classes are supposed to hold state like the value of the slider. Someone decided the wrapping UMG classes often also hold state, a copy or simply desynchronised value. This was a bad design choice. Additionally, if you create a UserWidget using a slider you don’t want a THIRD copy of such state. Instead you should read and write to the slider. If the slider changes state by SetValue, I am expected it to shout “my value changed” so my UserWidget can handle the situation. It does not.
Hi, I’m now on last 5.2 and I have spend hours to try to figure out why the value is not visually updating. Smth. like this SpinBox_Pitch->SetValue(0.0f);
float TempCheck = SpinBox_Pitch->GetValue();
C_LOG(Warning, TEXT(“ImageGenWidget; ResetPitch; EngineBug: %f”), TempCheck); the value is set but the text value on the spin box , visually hasn’t moved. I do imagine it will be smth. inside : void CommitValue : around line 1054 : // Update the cache of the external value to what the user believes the value is now.
const NumericType CurrentValue = ValueAttribute.Get();
if (CachedExternalValue != CurrentValue || bCachedValueStringDirty)
{
CachedExternalValue = ValueAttribute.Get();
CachedValueString = Interface->ToString(CachedExternalValue);
bCachedValueStringDirty = false;
} … but this is really above my paygrade. So I’am wondering if you are more comfortable with the engine code and you have found some solution how to rewrite engine code? Many thanks for your time.
I am very sorry for not responding earlier, I did not see a notification. Similar things to what you are describing is currently happening on other widgets as well (5.2, UEditableTextBox). > [Bugs bugs bugs] Slate widget synchronization - #3 by Roy_Wierer.Seda145
I don’t make engine modifications myself. No one can make marketplace products for a custom engine version which only few people might use. We have to wait for a fix from EPICs side on a next release, or in the worst case stick with an older version for a while.