From 6162ca25d445d1928f9d07544a2effcab0626558 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 24 Nov 2021 17:02:26 -0800 Subject: [PATCH] Make sure we load our images asynch make sure we update them after load --- .../Library/Widgets/StorePage/ArticleItem.cs | 4 ++-- .../Library/Widgets/StorePage/ExplorePanel.cs | 13 +++++++++++-- .../Library/Widgets/StorePage/ProductItem.cs | 2 +- MatterControlLib/Utilities/WebUtilities/WebCache.cs | 2 ++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/MatterControlLib/Library/Widgets/StorePage/ArticleItem.cs b/MatterControlLib/Library/Widgets/StorePage/ArticleItem.cs index 0753397f0..1ee56b0b4 100644 --- a/MatterControlLib/Library/Widgets/StorePage/ArticleItem.cs +++ b/MatterControlLib/Library/Widgets/StorePage/ArticleItem.cs @@ -61,7 +61,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.PlusTab Margin = new BorderDouble(right: ItemSpacing) }; - WebCache.RetrieveImageAsync(image, item.icon, true, new BlenderPreMultBGRA()); + Load += (s, e) => WebCache.RetrieveImageAsync(image, item.icon, true, new BlenderPreMultBGRA()); this.AddChild(imageWidget); } else if (item.widget_url != null) @@ -80,7 +80,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.PlusTab VAnchor = VAnchor.Center, }; - WebCache.RetrieveImageAsync(image, item.widget_url, true, new BlenderPreMultBGRA()); + Load += (s, e) => WebCache.RetrieveImageAsync(image, item.widget_url, true, new BlenderPreMultBGRA()); whiteBackground.AddChild(imageWidget); } diff --git a/MatterControlLib/Library/Widgets/StorePage/ExplorePanel.cs b/MatterControlLib/Library/Widgets/StorePage/ExplorePanel.cs index 761d638f1..020473495 100644 --- a/MatterControlLib/Library/Widgets/StorePage/ExplorePanel.cs +++ b/MatterControlLib/Library/Widgets/StorePage/ExplorePanel.cs @@ -49,8 +49,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.PlusTab private GuiWidget topBanner; private GuiWidget sectionSelectButtons; private GuiWidget contentSection; + private bool loaded; - public ExplorePanel(ThemeConfig theme, string relativeUrl) + public ExplorePanel(ThemeConfig theme, string relativeUrl) : base(FlowDirection.TopToBottom) { this.relativeUrl = relativeUrl; @@ -107,6 +108,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.PlusTab { this.AddChild(widget); } + UiThread.RunOnIdle(() => { // Force layout to change to get it working @@ -203,7 +205,14 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.PlusTab }; } - WebCache.RetrieveImageAsync(image, content.image_url, false, new BlenderPreMultBGRA()); + AfterDraw += (s, e) => + { + if (!loaded) + { + loaded = true; + WebCache.RetrieveImageAsync(image, content.image_url, false, new BlenderPreMultBGRA()); + } + }; topBanner.AddChild(imageWidget); } } diff --git a/MatterControlLib/Library/Widgets/StorePage/ProductItem.cs b/MatterControlLib/Library/Widgets/StorePage/ProductItem.cs index 05bcaafaf..e98549ca4 100644 --- a/MatterControlLib/Library/Widgets/StorePage/ProductItem.cs +++ b/MatterControlLib/Library/Widgets/StorePage/ProductItem.cs @@ -66,7 +66,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.PlusTab VAnchor = VAnchor.Center, }; - WebCache.RetrieveImageAsync(image, item.widget_url, true, new BlenderPreMultBGRA()); + Load += (s, e) => WebCache.RetrieveImageAsync(image, item.widget_url, true, new BlenderPreMultBGRA()); whiteBackground.AddChild(imageWidget); } diff --git a/MatterControlLib/Utilities/WebUtilities/WebCache.cs b/MatterControlLib/Utilities/WebUtilities/WebCache.cs index a313f7c75..6a2837259 100644 --- a/MatterControlLib/Utilities/WebUtilities/WebCache.cs +++ b/MatterControlLib/Utilities/WebUtilities/WebCache.cs @@ -391,6 +391,8 @@ namespace MatterHackers.MatterControl { StaticData.Instance.LoadImageData(stream, imageToLoadInto); } + + imageToLoadInto.MarkImageChanged(); } } } \ No newline at end of file