Fix `Show` then `Reset` potentially resulting in incorrect load target

This commit is contained in:
Dean Herbert 2021-12-29 21:46:34 +09:00
parent 471eea750a
commit b1a444180f
1 changed files with 6 additions and 4 deletions

View File

@ -70,16 +70,18 @@ public override void Show()
// base call intentionally omitted.
if (skinEditor == null)
{
skinEditor = new SkinEditor(target);
skinEditor.State.BindValueChanged(editorVisibilityChanged);
var editor = new SkinEditor(target);
editor.State.BindValueChanged(editorVisibilityChanged);
// Schedule ensures that if `Show` is called before this overlay is loaded,
// it will not throw (LoadComponentAsync requires the load target to be in a loaded state).
Schedule(() =>
{
Debug.Assert(skinEditor != null);
LoadComponentAsync(skinEditor, AddInternal);
Debug.Assert(editor != null);
LoadComponentAsync(editor, AddInternal);
});
skinEditor = editor;
}
else
skinEditor.Show();