Eto Dialog "flashes" blank on opening

Hi!
We are the developers of ClimateStudio (a Rhino Plugin).

Dialog “Flashing” on Show

We need our dialog to stay “on top” of Rhino’s main window and thus we always assign Rhino’s window as it’s parent with something like dialog.ShowModal(this);

However, sometime our dialogs will flash for a brief second on opening, as seen in the gifs below.
dialog flashing 2
dialog flashing

The “flash” actually seems to be coming from a empty dialog being drawn on a random location on the screen, and then as the content of the dialog is drawn the dialog appears a second time with the content and in the correct location (Center of Rhino Screen). The screen shot below shows when the dialog “flashes” without content and in the wrong location (does seem to have the correct size).

This does not happen ALL THE TIME, but does seem to be possible to happen with ALL DIALOGS. We have observed some correlation between how long (complicated) the dialog’s Content takes to draw with the frequency and duration of the flashing occurring.

Perhaps our way of opening the Dialog and/or assigning parent is not the best practice?

Possible Source: WinForm

We found a very similar report for WinForms, so perhaps this is trickled down problem: White screen flash on themed dialogs | DevExpress Support

This post suggested the reason being

the default Windows mechanism of displaying forms. When you open a form, it displays its background, and then after the initialization of controls, it displays the control and applies a skin. In some cases, the process of initialization can take some time and this leads to flickering.
To overcome this behavior, override the form’s ShowMode property and return FormShowMode.AfterInitialization in its getter.

and to

       protected override FormShowMode ShowMode => FormShowMode.AfterInitialization;

If this is the reason, then it will be very helpful to be-able to set this field in ETO.

Conclusion

We are hoping ETO expert @curtisw would have some insight into this.
Or if someone else have run into this in the community and have found workarounds / solutions.

1 Like

Hey @demichang.cd,

That is certainly a new one for me. Eto does not use Windows Forms but rather WPF (on Windows) so that fix does not apply, but perhaps the cause is similar.

I’ve logged it as RH-82936 to see if we can do something about it.

Thanks for reporting the issue!

Oh Great Thank you!