Skip to content

Commit 9d2bcb1

Browse files
committed
Fixes
1 parent d76599a commit 9d2bcb1

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

src/Files.App/Data/Models/ItemViewModel.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright (c) 2023 Files Community
22
// Licensed under the MIT License. See the LICENSE.
33

4-
using Files.App.ViewModels.Previews;
54
using Files.Core.Services.SizeProvider;
65
using Files.Shared.Helpers;
76
using LibGit2Sharp;
@@ -909,9 +908,9 @@ public async Task GetDefaultItemIconsAsync(uint size)
909908
if (currentDefaultIconSize == size)
910909
return;
911910

912-
// TODO: Add more than just the folder icon
913911
DefaultIcons.Clear();
914912

913+
// TODO: Add more than just the folder icon
915914
using StorageItemThumbnail icon = await FilesystemTasks.Wrap(() => StorageItemIconHelpers.GetIconForItemType(size, IconPersistenceOptions.Persist));
916915
if (icon is not null)
917916
{
@@ -947,7 +946,7 @@ private async Task LoadItemThumbnailAsync(ListedItem item, uint thumbnailSize =
947946

948947
if (!iconInfo.isIconCached)
949948
{
950-
// Display icon while trying to load cached thumbnail
949+
// Assign a placeholder icon while trying to get a cached thumbnail
951950
if (iconInfo.IconData is not null)
952951
{
953952
await dispatcherQueue.EnqueueOrInvokeAsync(async () =>
@@ -970,18 +969,23 @@ await dispatcherQueue.EnqueueOrInvokeAsync(async () =>
970969
{
971970
await dispatcherQueue.EnqueueOrInvokeAsync(async () =>
972971
{
972+
// Assign the thumbnail/icon to the listed item
973973
item.FileImage = await iconInfo.IconData.ToBitmapAsync();
974-
if (!string.IsNullOrEmpty(item.FileExtension) &&
975-
!item.IsShortcut && !item.IsExecutable &&
976-
!ImagePreviewViewModel.ContainsExtension(item.FileExtension.ToLowerInvariant()))
974+
975+
// Add the file icon to the DefaultIcons list
976+
if (!DefaultIcons.ContainsKey(item.FileExtension.ToLowerInvariant()) && !string.IsNullOrEmpty(item.FileExtension))
977977
{
978-
DefaultIcons.AddIfNotPresent(item.FileExtension.ToLowerInvariant(), item.FileImage);
978+
var fileIcon = await FileThumbnailHelper.LoadIconAndOverlayAsync(item.ItemPath, thumbnailSize, false, true);
979+
var bitmapImage = await fileIcon.IconData.ToBitmapAsync();
980+
DefaultIcons.Add(item.FileExtension.ToLowerInvariant(), bitmapImage);
979981
}
982+
980983
}, Microsoft.UI.Dispatching.DispatcherQueuePriority.Low);
981984
}
982985

983986
if (iconInfo.OverlayData is not null)
984987
{
988+
// Assign the icon overlay to the listed item
985989
await dispatcherQueue.EnqueueOrInvokeAsync(async () =>
986990
{
987991
item.IconOverlay = await iconInfo.OverlayData.ToBitmapAsync();
@@ -993,7 +997,7 @@ await dispatcherQueue.EnqueueOrInvokeAsync(async () =>
993997
{
994998
var getIconOnly = UserSettingsService.FoldersSettingsService.ShowThumbnails == false || thumbnailSize < 80;
995999
var iconInfo = await FileThumbnailHelper.LoadIconAndOverlayAsync(item.ItemPath, thumbnailSize, true, getIconOnly);
996-
1000+
9971001
if (iconInfo.IconData is not null)
9981002
{
9991003
await dispatcherQueue.EnqueueOrInvokeAsync(async () =>

src/Files.App/Utils/Shell/Win32API.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ public static (byte[]? icon, byte[]? overlay, bool isIconCached) GetFileIconAndO
280280

281281
if (getIconOnly)
282282
flags |= Shell32.SIIGBF.SIIGBF_ICONONLY;
283-
else
283+
else if (!isFolder)
284284
flags |= Shell32.SIIGBF.SIIGBF_THUMBNAILONLY;
285285

286286
var hres = shellFactory.GetImage(new SIZE(thumbnailSize, thumbnailSize), flags, out var hbitmap);

src/Files.App/ViewModels/UserControls/InfoPaneViewModel.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,12 @@ private void ContentPageContext_PropertyChanged(object? sender, PropertyChangedE
129129
else
130130
SelectedItem = null;
131131

132-
var shouldUpdatePreview = ((MainWindow.Instance.Content as Frame)?.Content as MainPage)?.ViewModel.ShouldPreviewPaneBeActive;
133-
if (shouldUpdatePreview == true)
134-
_ = UpdateSelectedItemPreviewAsync();
132+
if (!App.AppModel.IsMainWindowClosed)
133+
{
134+
var shouldUpdatePreview = ((MainWindow.Instance.Content as Frame)?.Content as MainPage)?.ViewModel.ShouldPreviewPaneBeActive;
135+
if (shouldUpdatePreview == true)
136+
_ = UpdateSelectedItemPreviewAsync();
137+
}
135138
break;
136139
}
137140
}

0 commit comments

Comments
 (0)