Skip to content

Commit 5377d35

Browse files
authored
Fix folder shortcuts opening in explorer (#7391)
1 parent 2b2a24b commit 5377d35

File tree

5 files changed

+9
-4
lines changed

5 files changed

+9
-4
lines changed

src/Files.Launcher/Helpers/ShellFolderHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public static ShellLinkItem GetShellLinkItem(ShellLink linkItem)
8585
return null;
8686
}
8787
var link = new ShellLinkItem(baseItem);
88-
link.IsFolder = !string.IsNullOrEmpty(link.TargetPath) && linkItem.Target.IsFolder;
88+
link.IsFolder = !string.IsNullOrEmpty(linkItem.TargetPath) && linkItem.Target.IsFolder;
8989
link.RunAsAdmin = linkItem.RunAsAdministrator;
9090
link.Arguments = linkItem.Arguments;
9191
link.WorkingDirectory = linkItem.WorkingDirectory;

src/Files.Launcher/MessageHandlers/FileOperationsHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ await Win32API.StartSTATask(() =>
531531
Program.Logger.Warn(ex, ex.Message);
532532
await Win32API.SendMessageAsync(connection, new ValueSet()
533533
{
534-
{ "ShortcutInfo", JsonConvert.SerializeObject(null) }
534+
{ "ShortcutInfo", JsonConvert.SerializeObject(new ShellLinkItem()) }
535535
}, message.Get("RequestID", (string)null));
536536
}
537537
break;

src/Files/Filesystem/FilesystemOperations/Helpers/FilesystemHelpers.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,8 @@ public static async Task<IEnumerable<IStorageItemWithPath>> GetDraggedStorageIte
11111111
itemsList.AddRange(source);
11121112
}
11131113
}
1114+
itemsList = itemsList.DistinctBy(x => string.IsNullOrEmpty(x.Path) ?
1115+
(string.IsNullOrEmpty(x.Item.Path) ? x.Item.Name : x.Item.Path) : x.Path).ToList();
11141116
return itemsList;
11151117
}
11161118

src/Files/Filesystem/StorageEnumerators/Win32StorageEnumerator.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,10 @@ CancellationToken cancellationToken
270270
{
271271
var isUrl = findData.cFileName.EndsWith(".url", StringComparison.OrdinalIgnoreCase);
272272
var shInfo = JsonConvert.DeserializeObject<ShellLinkItem>((string)response["ShortcutInfo"]);
273-
273+
if (shInfo == null)
274+
{
275+
return null;
276+
}
274277
return new ShortcutItem(null, dateReturnFormat)
275278
{
276279
PrimaryItemAttribute = shInfo.IsFolder ? StorageItemTypes.Folder : StorageItemTypes.File,

src/Files/Helpers/ItemListDisplayHelpers/SortingHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public static IEnumerable<ListedItem> OrderFileList(List<ListedItem> filesAndFol
3737

3838
// In ascending order, show folders first, then files.
3939
// So, we use == StorageItemTypes.File to make the value for a folder equal to 0, and equal to 1 for the rest.
40-
static bool folderThenFileAsync(ListedItem listedItem) => (listedItem.PrimaryItemAttribute == StorageItemTypes.File || listedItem.IsZipItem);
40+
static bool folderThenFileAsync(ListedItem listedItem) => (listedItem.PrimaryItemAttribute == StorageItemTypes.File || listedItem.IsShortcutItem || listedItem.IsZipItem);
4141
IOrderedEnumerable<ListedItem> ordered;
4242

4343
IUserSettingsService userSettingsService = Ioc.Default.GetService<IUserSettingsService>();

0 commit comments

Comments
 (0)