@@ -756,48 +756,39 @@ private async Task LoadItemThumbnail(ListedItem item, uint thumbnailSize = 20, I
756
756
var wasIconLoaded = false ;
757
757
if ( item . IsLibraryItem || item . PrimaryItemAttribute == StorageItemTypes . File || item . IsZipItem )
758
758
{
759
- if ( ! forceReload && item . CustomIconData != null )
760
- {
761
- await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
762
- {
763
- item . FileImage = await item . CustomIconData . ToBitmapAsync ( ) ;
764
- item . LoadUnknownTypeGlyph = false ;
765
- item . LoadWebShortcutGlyph = false ;
766
- item . LoadFileIcon = true ;
767
- } , Windows . System . DispatcherQueuePriority . Low ) ;
768
- wasIconLoaded = true ;
769
- }
770
- else
759
+ if ( ! item . IsShortcutItem && ! item . IsHiddenItem && ! FtpHelpers . IsFtpPath ( item . ItemPath ) )
771
760
{
772
- if ( ! item . IsShortcutItem && ! item . IsHiddenItem && ! FtpHelpers . IsFtpPath ( item . ItemPath ) )
761
+ var matchingStorageFile = matchingStorageItem . AsBaseStorageFile ( ) ?? await GetFileFromPathAsync ( item . ItemPath ) ;
762
+ if ( matchingStorageFile != null )
773
763
{
774
- var matchingStorageFile = matchingStorageItem . AsBaseStorageFile ( ) ?? await GetFileFromPathAsync ( item . ItemPath ) ;
775
- if ( matchingStorageFile != null )
776
- {
777
- var mode = thumbnailSize < 80 ? ThumbnailMode . ListView : ThumbnailMode . SingleItem ;
764
+ var mode = thumbnailSize < 80 ? ThumbnailMode . ListView : ThumbnailMode . SingleItem ;
778
765
779
- using var Thumbnail = await matchingStorageFile . GetThumbnailAsync ( mode , thumbnailSize , ThumbnailOptions . ResizeThumbnail ) ;
780
- if ( ! ( Thumbnail == null || Thumbnail . Size == 0 || Thumbnail . OriginalHeight == 0 || Thumbnail . OriginalWidth == 0 ) )
766
+ using var Thumbnail = await matchingStorageFile . GetThumbnailAsync ( mode , thumbnailSize , ThumbnailOptions . ResizeThumbnail ) ;
767
+ if ( ! ( Thumbnail == null || Thumbnail . Size == 0 || Thumbnail . OriginalHeight == 0 || Thumbnail . OriginalWidth == 0 ) )
768
+ {
769
+ await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
781
770
{
782
- await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
783
- {
784
- item . CustomIconData = await Thumbnail . ToByteArrayAsync ( ) ;
785
- item . FileImage = await item . CustomIconData . ToBitmapAsync ( ) ;
786
- item . LoadUnknownTypeGlyph = false ;
787
- item . LoadWebShortcutGlyph = false ;
788
- item . LoadFileIcon = true ;
789
- } , Windows . System . DispatcherQueuePriority . Low ) ;
790
- wasIconLoaded = true ;
791
- }
771
+ item . LoadUnknownTypeGlyph = false ;
772
+ item . LoadWebShortcutGlyph = false ;
773
+ item . LoadFolderGlyph = false ;
774
+ item . LoadFileIcon = true ;
775
+ item . FileImage ??= new BitmapImage ( ) ;
776
+ item . FileImage . DecodePixelType = DecodePixelType . Logical ;
777
+ item . FileImage . DecodePixelWidth = ( int ) thumbnailSize ;
778
+ item . FileImage . DecodePixelHeight = ( int ) thumbnailSize ;
779
+ await item . FileImage . SetSourceAsync ( Thumbnail ) ;
780
+
781
+ } , Windows . System . DispatcherQueuePriority . Normal ) ;
782
+ wasIconLoaded = true ;
783
+ }
792
784
793
- var overlayInfo = await FileThumbnailHelper . LoadOverlayAsync ( item . ItemPath ) ;
794
- if ( overlayInfo != null )
785
+ var overlayInfo = await FileThumbnailHelper . LoadOverlayAsync ( item . ItemPath ) ;
786
+ if ( overlayInfo != null )
787
+ {
788
+ await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
795
789
{
796
- await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
797
- {
798
- item . IconOverlay = await overlayInfo . ToBitmapAsync ( ) ;
799
- } , Windows . System . DispatcherQueuePriority . Low ) ;
800
- }
790
+ item . IconOverlay = await overlayInfo . ToBitmapAsync ( ) ;
791
+ } , Windows . System . DispatcherQueuePriority . Low ) ;
801
792
}
802
793
}
803
794
}
@@ -810,7 +801,6 @@ await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
810
801
await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
811
802
{
812
803
item . FileImage = await iconInfo . IconData . ToBitmapAsync ( ) ;
813
- item . CustomIconData = iconInfo . IconData ;
814
804
item . LoadFileIcon = true ;
815
805
item . LoadUnknownTypeGlyph = false ;
816
806
item . LoadWebShortcutGlyph = false ;
@@ -828,50 +818,39 @@ await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
828
818
}
829
819
else
830
820
{
831
- if ( ! forceReload && item . CustomIconData != null )
832
- {
833
- await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
834
- {
835
- item . FileImage = await item . CustomIconData . ToBitmapAsync ( ) ;
836
- item . LoadUnknownTypeGlyph = false ;
837
- item . LoadWebShortcutGlyph = false ;
838
- item . LoadFolderGlyph = false ;
839
- item . LoadFileIcon = true ;
840
- } , Windows . System . DispatcherQueuePriority . Low ) ;
841
- wasIconLoaded = true ;
842
- }
843
- else
821
+ if ( ! item . IsShortcutItem && ! item . IsHiddenItem && ! FtpHelpers . IsFtpPath ( item . ItemPath ) )
844
822
{
845
- if ( ! item . IsShortcutItem && ! item . IsHiddenItem && ! FtpHelpers . IsFtpPath ( item . ItemPath ) )
823
+ var matchingStorageFolder = matchingStorageItem . AsBaseStorageFolder ( ) ?? await GetFolderFromPathAsync ( item . ItemPath ) ;
824
+ if ( matchingStorageFolder != null )
846
825
{
847
- var matchingStorageFolder = matchingStorageItem . AsBaseStorageFolder ( ) ?? await GetFolderFromPathAsync ( item . ItemPath ) ;
848
- if ( matchingStorageFolder != null )
849
- {
850
- var mode = thumbnailSize < 80 ? ThumbnailMode . ListView : ThumbnailMode . SingleItem ;
826
+ var mode = thumbnailSize < 80 ? ThumbnailMode . ListView : ThumbnailMode . SingleItem ;
851
827
852
- using var Thumbnail = await matchingStorageFolder . GetThumbnailAsync ( mode , thumbnailSize , ThumbnailOptions . ResizeThumbnail ) ;
853
- if ( ! ( Thumbnail == null || Thumbnail . Size == 0 || Thumbnail . OriginalHeight == 0 || Thumbnail . OriginalWidth == 0 ) )
828
+ using var Thumbnail = await matchingStorageFolder . GetThumbnailAsync ( mode , thumbnailSize , ThumbnailOptions . ResizeThumbnail ) ;
829
+ if ( ! ( Thumbnail == null || Thumbnail . Size == 0 || Thumbnail . OriginalHeight == 0 || Thumbnail . OriginalWidth == 0 ) )
830
+ {
831
+ await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
854
832
{
855
- await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
856
- {
857
- item . CustomIconData = await Thumbnail . ToByteArrayAsync ( ) ;
858
- item . FileImage = await item . CustomIconData . ToBitmapAsync ( ) ;
859
- item . LoadUnknownTypeGlyph = false ;
860
- item . LoadWebShortcutGlyph = false ;
861
- item . LoadFolderGlyph = false ;
862
- item . LoadFileIcon = true ;
863
- } , Windows . System . DispatcherQueuePriority . Low ) ;
864
- wasIconLoaded = true ;
865
- }
833
+ item . LoadUnknownTypeGlyph = false ;
834
+ item . LoadWebShortcutGlyph = false ;
835
+ item . LoadFolderGlyph = false ;
836
+ item . LoadFileIcon = true ;
837
+ item . FileImage ??= new BitmapImage ( ) ;
838
+ item . FileImage . DecodePixelType = DecodePixelType . Logical ;
839
+ item . FileImage . DecodePixelWidth = ( int ) thumbnailSize ;
840
+ item . FileImage . DecodePixelHeight = ( int ) thumbnailSize ;
841
+ await item . FileImage . SetSourceAsync ( Thumbnail ) ;
842
+
843
+ } , Windows . System . DispatcherQueuePriority . Normal ) ;
844
+ wasIconLoaded = true ;
845
+ }
866
846
867
- var overlayInfo = await FileThumbnailHelper . LoadOverlayAsync ( item . ItemPath ) ;
868
- if ( overlayInfo != null )
847
+ var overlayInfo = await FileThumbnailHelper . LoadOverlayAsync ( item . ItemPath ) ;
848
+ if ( overlayInfo != null )
849
+ {
850
+ await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
869
851
{
870
- await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
871
- {
872
- item . IconOverlay = await overlayInfo . ToBitmapAsync ( ) ;
873
- } , Windows . System . DispatcherQueuePriority . Low ) ;
874
- }
852
+ item . IconOverlay = await overlayInfo . ToBitmapAsync ( ) ;
853
+ } , Windows . System . DispatcherQueuePriority . Low ) ;
875
854
}
876
855
}
877
856
}
@@ -884,7 +863,6 @@ await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
884
863
await CoreApplication . MainView . DispatcherQueue . EnqueueAsync ( async ( ) =>
885
864
{
886
865
item . FileImage = await iconInfo . IconData . ToBitmapAsync ( ) ;
887
- item . CustomIconData = iconInfo . IconData ;
888
866
item . LoadFileIcon = true ;
889
867
item . LoadFolderGlyph = false ;
890
868
item . LoadUnknownTypeGlyph = false ;
0 commit comments