Is there a reliable, non-hackish, way to force UI updating using GDScript 3.5.1?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By tx350z

Is there a way to force an individual control or the entire UI to update “on demand”?

I have cases where a series of complex and time consuming operations are done and I’d like to display progress messages using a RichTextLabel. The problem is none of the messages will display until the entire process has completed.

Several deep searches have found similar questions raised over the past 5+ years with no official answers given and all of the suggested hacks do not seem to work.

I’ve tried various forms of yield() and propagate_notification(). Have also tried very hackish solutions using threads. Nothing works reliably.

The only thing that comes close to working is calling RichTextLabel.propagate_notification(NOTIFICATION_DRAW). It seems to work but there are ugly errors output to the console.

What am I missing?