Text is not updated when string tables are loaded asynchronously after the text element has already been shown

Thanks for the answer.

LocalizedStringPtr.IsValid() == InText.TextData->GetLocalizedString().IsValid()is what I added to bool FTextSnapshot::IsDisplayStringEqualTo(const FText& InText) const and it solved the missing update after async load.

Sorry couldn’t figure out how to highlight a line in a code snipped.

Changed IsDisplayStringEqualTo to solve the specific case that the localized string changes from invalid to valid or the other way around:

`bool FTextSnapshot::IsDisplayStringEqualTo(const FText& InText) const
{
// Make sure the string is up-to-date with the current culture
// (this usually happens when ToString() is called)
InText.Rebuild();

// We have to assume that the display string has changed if the history of the text has changed
// (due to a culture change), as we no longer have the old display string to compare against
// add check to return false when the LocalizedStringPtr does not have the same validity state
return TextDataPtr`added line

&& LocalizedStringPtr.IsValid() == InText.TextData->GetLocalizedString().IsValid() && GlobalHistoryRevision == GetGlobalHistoryRevisionForText(InText) && LocalHistoryRevision == GetLocalHistoryRevisionForText(InText) && TextDataPtr->GetDisplayString().Equals(InText.TextData->GetDisplayString(), ESearchCase::CaseSensitive); }

Thanks for clarifying that culture invariant text changes the data pointer every time. I was afraid that there would be a way that this might happen.

Comparing the validity seems to solve the problem and hopefully does not lead to unnecessary updates even for culture invariant texts.