Skip to content

Commit fb7c7f9

Browse files
authored
Fixed image thumbnails not appearing (#7881)
1 parent dcb877c commit fb7c7f9

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

src/Files/ViewModels/ItemViewModel.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -797,12 +797,14 @@ public async Task GetDefaultItemIcons(uint size)
797797
if (currentDefaultIconSize != size)
798798
{
799799
// TODO: Add more than just the folder icon
800-
801800
DefaultIcons.Clear();
802-
BitmapImage img = new BitmapImage();
803-
using var icon = await StorageItemIconHelpers.GetIconForItemType(size, IconPersistenceOptions.Persist);
804-
await img.SetSourceAsync(icon);
805-
DefaultIcons.Add(string.Empty, img);
801+
using StorageItemThumbnail icon = await FilesystemTasks.Wrap(() => StorageItemIconHelpers.GetIconForItemType(size, IconPersistenceOptions.Persist));
802+
if (icon != null)
803+
{
804+
BitmapImage img = new BitmapImage();
805+
await img.SetSourceAsync(icon);
806+
DefaultIcons.Add(string.Empty, img);
807+
}
806808
currentDefaultIconSize = size;
807809
}
808810
}
@@ -831,9 +833,9 @@ private async Task LoadItemThumbnail(ListedItem item, uint thumbnailSize = 20, I
831833
var matchingStorageFile = matchingStorageItem.AsBaseStorageFile() ?? await GetFileFromPathAsync(item.ItemPath);
832834
if (matchingStorageFile != null)
833835
{
834-
var mode = thumbnailSize < 80 ? ThumbnailMode.ListView : ThumbnailMode.SingleItem;
836+
var mode = thumbnailSize < 80 ? ThumbnailMode.ListView : ThumbnailMode.DocumentsView;
835837

836-
using var Thumbnail = await matchingStorageFile.GetThumbnailAsync(mode, thumbnailSize, ThumbnailOptions.ResizeThumbnail);
838+
using StorageItemThumbnail Thumbnail = await FilesystemTasks.Wrap(() => matchingStorageFile.GetThumbnailAsync(mode, thumbnailSize, ThumbnailOptions.ResizeThumbnail).AsTask());
837839
if (!(Thumbnail == null || Thumbnail.Size == 0 || Thumbnail.OriginalHeight == 0 || Thumbnail.OriginalWidth == 0))
838840
{
839841
await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
@@ -844,7 +846,7 @@ await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
844846
await item.FileImage.SetSourceAsync(Thumbnail);
845847
if (!string.IsNullOrEmpty(item.FileExtension) &&
846848
!item.IsShortcutItem && !item.IsExecutable &&
847-
!ImagePreviewViewModel.Extensions.Contains(item.FileExtension))
849+
!ImagePreviewViewModel.Extensions.Contains(item.FileExtension, StringComparer.OrdinalIgnoreCase))
848850
{
849851
DefaultIcons.AddIfNotPresent(item.FileExtension.ToLowerInvariant(), item.FileImage);
850852
}
@@ -873,7 +875,7 @@ await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
873875
item.FileImage = await iconInfo.IconData.ToBitmapAsync();
874876
if (!string.IsNullOrEmpty(item.FileExtension) &&
875877
!item.IsShortcutItem && !item.IsExecutable &&
876-
!ImagePreviewViewModel.Extensions.Contains(item.FileExtension))
878+
!ImagePreviewViewModel.Extensions.Contains(item.FileExtension, StringComparer.OrdinalIgnoreCase))
877879
{
878880
DefaultIcons.AddIfNotPresent(item.FileExtension.ToLowerInvariant(), item.FileImage);
879881
}
@@ -898,7 +900,7 @@ await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
898900
{
899901
var mode = thumbnailSize < 80 ? ThumbnailMode.ListView : ThumbnailMode.SingleItem;
900902

901-
using var Thumbnail = await matchingStorageFolder.GetThumbnailAsync(mode, thumbnailSize, ThumbnailOptions.ResizeThumbnail);
903+
using StorageItemThumbnail Thumbnail = await FilesystemTasks.Wrap(() => matchingStorageFolder.GetThumbnailAsync(mode, thumbnailSize, ThumbnailOptions.ResizeThumbnail).AsTask());
902904
if (!(Thumbnail == null || Thumbnail.Size == 0 || Thumbnail.OriginalHeight == 0 || Thumbnail.OriginalWidth == 0))
903905
{
904906
await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>
@@ -1130,7 +1132,7 @@ private async Task<ImageSource> GetItemTypeGroupIcon(ListedItem item, BaseStorag
11301132

11311133
if (matchingStorageItem != null)
11321134
{
1133-
using var headerThumbnail = await matchingStorageItem.GetThumbnailAsync(ThumbnailMode.DocumentsView, 36, ThumbnailOptions.UseCurrentScale);
1135+
using StorageItemThumbnail headerThumbnail = await FilesystemTasks.Wrap(() => matchingStorageItem.GetThumbnailAsync(ThumbnailMode.DocumentsView, 36, ThumbnailOptions.UseCurrentScale).AsTask());
11341136
if (headerThumbnail != null)
11351137
{
11361138
await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(async () =>

src/Files/ViewModels/Previews/BasePreviewModel.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public virtual void PreviewControlBase_Unloaded(object sender, RoutedEventArgs e
5555
/// <returns>A list of details</returns>
5656
public async virtual Task<List<FileProperty>> LoadPreviewAndDetails()
5757
{
58-
var iconData = await FileThumbnailHelper.LoadIconFromStorageItemAsync(Item.ItemFile, 400, ThumbnailMode.SingleItem);
58+
var iconData = await FileThumbnailHelper.LoadIconFromStorageItemAsync(Item.ItemFile, 400, ThumbnailMode.DocumentsView);
5959
iconData ??= await FileThumbnailHelper.LoadIconWithoutOverlayAsync(Item.ItemPath, 400);
6060
if (iconData != null)
6161
{
@@ -110,7 +110,11 @@ private async Task<List<FileProperty>> GetSystemFileProperties()
110110
public virtual async Task LoadAsync()
111111
{
112112
List<FileProperty> detailsFull = new();
113-
Item.ItemFile ??= await StorageFileExtensions.DangerousGetFileFromPathAsync(Item.ItemPath);
113+
if (Item.ItemFile == null)
114+
{
115+
var rootItem = await FilesystemTasks.Wrap(() => DrivesManager.GetRootFromPathAsync(Item.ItemPath));
116+
Item.ItemFile = await StorageFileExtensions.DangerousGetFileFromPathAsync(Item.ItemPath, rootItem);
117+
}
114118
await Task.Run(async () =>
115119
{
116120
DetailsFromPreview = await LoadPreviewAndDetails();

src/Files/ViewModels/Previews/FolderPreviewViewModel.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ private async Task LoadPreviewAndDetailsAsync()
3939
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
4040
string returnformat = Enum.Parse<TimeStyle>(localSettings.Values[Constants.LocalSettings.DateTimeFormat].ToString()) == TimeStyle.Application ? "D" : "g";
4141

42-
Folder = await StorageFileExtensions.DangerousGetFolderFromPathAsync(Item.ItemPath);
42+
var rootItem = await FilesystemTasks.Wrap(() => DrivesManager.GetRootFromPathAsync(Item.ItemPath));
43+
Folder = await StorageFileExtensions.DangerousGetFolderFromPathAsync(Item.ItemPath, rootItem);
4344
var items = await Folder.GetItemsAsync();
4445

4546
var iconData = await FileThumbnailHelper.LoadIconFromStorageItemAsync(Folder, 400, ThumbnailMode.SingleItem);

src/Files/ViewModels/Properties/FileProperties.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public override async void GetSpecialProperties()
108108
ViewModel.ItemSizeVisibility = true;
109109
ViewModel.ItemSize = Item.FileSizeBytes.ToLongSizeString();
110110

111-
var fileIconData = await FileThumbnailHelper.LoadIconFromPathAsync(Item.ItemPath, 80, Windows.Storage.FileProperties.ThumbnailMode.SingleItem);
111+
var fileIconData = await FileThumbnailHelper.LoadIconFromPathAsync(Item.ItemPath, 80, Windows.Storage.FileProperties.ThumbnailMode.DocumentsView);
112112
if (fileIconData != null)
113113
{
114114
ViewModel.IconData = fileIconData;

0 commit comments

Comments
 (0)