@@ -483,23 +483,6 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
483483                                    matchingItem . LoadFileIcon  =  true ; 
484484                                } 
485485                            } 
486-                             if  ( App . Connection  !=  null ) 
487-                             { 
488-                                 var  value  =  new  ValueSet ( ) ; 
489-                                 value . Add ( "Arguments" ,  "GetIconOverlay" ) ; 
490-                                 value . Add ( "filePath" ,  matchingItem . ItemPath ) ; 
491-                                 var  response  =  await  App . Connection . SendMessageAsync ( value ) ; 
492-                                 var  iconOverlay  =  response . Message . Get ( "IconOverlay" ,  ( string ) null ) ; 
493-                                 if  ( iconOverlay  !=  null ) 
494-                                 { 
495-                                     matchingItem . IconOverlay  =  new  BitmapImage ( ) ; 
496-                                     byte [ ]  bitmapData  =  Convert . FromBase64String ( iconOverlay ) ; 
497-                                     using  ( var  ms  =  new  MemoryStream ( bitmapData ) ) 
498-                                     { 
499-                                         await  matchingItem . IconOverlay . SetSourceAsync ( ms . AsRandomAccessStream ( ) ) ; 
500-                                     } 
501-                                 } 
502-                             } 
503486                            if  ( item . IsShortcutItem ) 
504487                            { 
505488                                // Reset cloud sync status icon 
@@ -511,6 +494,7 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
511494                                matchingItem . ItemType  =  matchingStorageItem . DisplayType ; 
512495                                var  syncStatus  =  await  CheckCloudDriveSyncStatus ( matchingStorageItem ) ; 
513496                                matchingItem . SyncStatusUI  =  CloudDriveSyncStatusUI . FromCloudDriveSyncStatus ( syncStatus ) ; 
497+                                 matchingItem . IconOverlay  =  ( await  LoadIconOverlay ( matchingItem . ItemPath ) ) . Icon ; 
514498                            } 
515499                        } 
516500                    } 
@@ -533,44 +517,35 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
533517                        StorageFolder  matchingStorageItem  =  await  StorageFileExtensions . GetFolderFromPathAsync ( ( item  as  ShortcutItem ) ? . TargetPath  ??  item . ItemPath ,  _workingRoot ,  _currentStorageFolder ) ; 
534518                        if  ( matchingItem  !=  null  &&  matchingStorageItem  !=  null ) 
535519                        { 
536-                             if  ( App . Connection  !=  null ) 
520+                             var  iconOverlay  =  await  LoadIconOverlay ( matchingItem . ItemPath ) ; 
521+                             if  ( iconOverlay . IsCustom ) 
537522                            { 
538-                                 var  value  =  new  ValueSet ( ) ; 
539-                                 value . Add ( "Arguments" ,  "GetIconOverlay" ) ; 
540-                                 value . Add ( "filePath" ,  matchingItem . ItemPath ) ; 
541-                                 var  response  =  await  App . Connection . SendMessageAsync ( value ) ; 
542-                                 var  hasCustomIcon  =  ( response . Status  ==  Windows . ApplicationModel . AppService . AppServiceResponseStatus . Success ) 
543-                                     &&  response . Message . Get ( "HasCustomIcon" ,  false ) ; 
544-                                 if  ( hasCustomIcon ) 
523+                                 // Only set folder icon if it's a custom icon 
524+                                 using  ( var  Thumbnail  =  await  matchingStorageItem . GetThumbnailAsync ( ThumbnailMode . SingleItem ,  thumbnailSize ,  ThumbnailOptions . UseCurrentScale ) ) 
545525                                { 
546-                                     // Only set folder icon if it's a custom icon 
547-                                     using  ( var  Thumbnail  =  await  matchingStorageItem . GetThumbnailAsync ( ThumbnailMode . SingleItem ,  thumbnailSize ,  ThumbnailOptions . UseCurrentScale ) ) 
526+                                     if  ( Thumbnail  !=  null ) 
548527                                    { 
549-                                         if  ( Thumbnail  !=  null ) 
550-                                         { 
551-                                             matchingItem . FileImage  =  new  BitmapImage ( ) ; 
552-                                             await  matchingItem . FileImage . SetSourceAsync ( Thumbnail ) ; 
553-                                             matchingItem . LoadUnknownTypeGlyph  =  false ; 
554-                                             matchingItem . LoadFolderGlyph  =  false ; 
555-                                             matchingItem . LoadFileIcon  =  true ; 
556-                                         } 
557-                                     } 
558-                                 } 
559-                                 var  iconOverlay  =  response . Message . Get ( "IconOverlay" ,  ( string ) null ) ; 
560-                                 if  ( iconOverlay  !=  null ) 
561-                                 { 
562-                                     matchingItem . IconOverlay  =  new  BitmapImage ( ) ; 
563-                                     byte [ ]  bitmapData  =  Convert . FromBase64String ( iconOverlay ) ; 
564-                                     using  ( var  ms  =  new  MemoryStream ( bitmapData ) ) 
565-                                     { 
566-                                         await  matchingItem . IconOverlay . SetSourceAsync ( ms . AsRandomAccessStream ( ) ) ; 
528+                                         matchingItem . FileImage  =  new  BitmapImage ( ) ; 
529+                                         await  matchingItem . FileImage . SetSourceAsync ( Thumbnail ) ; 
530+                                         matchingItem . LoadUnknownTypeGlyph  =  false ; 
531+                                         matchingItem . LoadFolderGlyph  =  false ; 
532+                                         matchingItem . LoadFileIcon  =  true ; 
567533                                    } 
568534                                } 
569535                            } 
570-                             matchingItem . FolderRelativeId  =  matchingStorageItem . FolderRelativeId ; 
571-                             matchingItem . ItemType  =  matchingStorageItem . DisplayType ; 
572-                             var  syncStatus  =  await  CheckCloudDriveSyncStatus ( matchingStorageItem ) ; 
573-                             matchingItem . SyncStatusUI  =  CloudDriveSyncStatusUI . FromCloudDriveSyncStatus ( syncStatus ) ; 
536+                             if  ( item . IsShortcutItem ) 
537+                             { 
538+                                 // Reset cloud sync status icon 
539+                                 matchingItem . SyncStatusUI  =  new  CloudDriveSyncStatusUI ( )  {  LoadSyncStatus  =  false  } ; 
540+                             } 
541+                             else 
542+                             { 
543+                                 matchingItem . FolderRelativeId  =  matchingStorageItem . FolderRelativeId ; 
544+                                 matchingItem . ItemType  =  matchingStorageItem . DisplayType ; 
545+                                 var  syncStatus  =  await  CheckCloudDriveSyncStatus ( matchingStorageItem ) ; 
546+                                 matchingItem . SyncStatusUI  =  CloudDriveSyncStatusUI . FromCloudDriveSyncStatus ( syncStatus ) ; 
547+                                 matchingItem . IconOverlay  =  iconOverlay . Icon ; 
548+                             } 
574549                        } 
575550                    } 
576551                    catch  ( Exception ) 
@@ -589,6 +564,32 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
589564            } 
590565        } 
591566
567+         private  async  Task < ( BitmapImage  Icon ,  bool  IsCustom ) >  LoadIconOverlay ( string  filePath ) 
568+         { 
569+             if  ( App . Connection  !=  null ) 
570+             { 
571+                 var  value  =  new  ValueSet ( ) ; 
572+                 value . Add ( "Arguments" ,  "GetIconOverlay" ) ; 
573+                 value . Add ( "filePath" ,  filePath ) ; 
574+                 var  response  =  await  App . Connection . SendMessageAsync ( value ) ; 
575+                 var  hasCustomIcon  =  ( response . Status  ==  Windows . ApplicationModel . AppService . AppServiceResponseStatus . Success ) 
576+                     &&  response . Message . Get ( "HasCustomIcon" ,  false ) ; 
577+                 var  iconOverlay  =  response . Message . Get ( "IconOverlay" ,  ( string ) null ) ; 
578+                 if  ( iconOverlay  !=  null ) 
579+                 { 
580+                     var  image  =  new  BitmapImage ( ) ; 
581+                     byte [ ]  bitmapData  =  Convert . FromBase64String ( iconOverlay ) ; 
582+                     using  ( var  ms  =  new  MemoryStream ( bitmapData ) ) 
583+                     { 
584+                         await  image . SetSourceAsync ( ms . AsRandomAccessStream ( ) ) ; 
585+                     } 
586+                     return  ( image ,  hasCustomIcon ) ; 
587+                 } 
588+                 return  ( null ,  hasCustomIcon ) ; 
589+             } 
590+             return  ( null ,  false ) ; 
591+         } 
592+ 
592593        public  void  RefreshItems ( ) 
593594        { 
594595            AddItemsToCollectionAsync ( WorkingDirectory ) ; 
0 commit comments