Skip to content

Commit 44c365a

Browse files
committed
Fix: Fixed issue where open action not working for search results started from Columns view
1 parent 53466f5 commit 44c365a

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed

src/Files.App/Views/Layouts/DetailsLayoutPage.xaml.cs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,12 @@ protected override async void FileList_PreviewKeyDown(object sender, KeyRoutedEv
471471
if (selectedFolder is not null)
472472
NavigationHelpers.OpenInSecondaryPane(ParentShellPageInstance, selectedFolder);
473473
}
474+
else if (!ctrlPressed && !shiftPressed && !UserSettingsService.FoldersSettingsService.OpenItemsWithOneClick)
475+
{
476+
var selectedItem = SelectedItems?.FirstOrDefault();
477+
if (selectedItem != null)
478+
await OpenItem(selectedItem);
479+
}
474480
}
475481
else if (e.Key == VirtualKey.Enter && e.KeyStatus.IsMenuKeyDown)
476482
{
@@ -607,12 +613,33 @@ clickedItem is Microsoft.UI.Xaml.Shapes.Rectangle
607613
}
608614
}
609615

616+
private async Task OpenItem(ListedItem item)
617+
{
618+
if (!Commands.OpenItem.IsExecutable)
619+
{
620+
var itemType = item.PrimaryItemAttribute == StorageItemTypes.Folder ? FilesystemItemType.Directory : FilesystemItemType.File;
621+
await NavigationHelpers.OpenPath(item.ItemPath, ParentShellPageInstance, itemType);
622+
}
623+
else
624+
{
625+
await Commands.OpenItem.ExecuteAsync();
626+
}
627+
}
628+
610629
private async void FileList_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
611630
{
612631
// Skip opening selected items if the double tap doesn't capture an item
613-
if ((e.OriginalSource as FrameworkElement)?.DataContext is ListedItem item && !UserSettingsService.FoldersSettingsService.OpenItemsWithOneClick)
614-
await Commands.OpenItem.ExecuteAsync();
615-
else if ((e.OriginalSource as FrameworkElement)?.DataContext is not ListedItem && UserSettingsService.FoldersSettingsService.DoubleClickToGoUp)
632+
var originalElement = e.OriginalSource as FrameworkElement;
633+
var dataContext = originalElement?.DataContext;
634+
635+
// Try to get the item from DataContext or from sender (ListView)
636+
ListedItem? item = dataContext as ListedItem;
637+
if (item == null && sender is ListView listView && listView.SelectedItem is ListedItem selectedItem)
638+
item = selectedItem;
639+
640+
if (item != null && !UserSettingsService.FoldersSettingsService.OpenItemsWithOneClick)
641+
await OpenItem(item);
642+
else if (item == null && UserSettingsService.FoldersSettingsService.DoubleClickToGoUp)
616643
await Commands.NavigateUp.ExecuteAsync();
617644

618645
ResetRenameDoubleClick();

src/Files.App/Views/Shells/ColumnShellPage.xaml.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using CommunityToolkit.WinUI;
55
using Microsoft.UI.Xaml;
66
using Microsoft.UI.Xaml.Controls;
7+
using Microsoft.UI.Xaml.Media.Animation;
78
using Microsoft.UI.Xaml.Navigation;
89

910
namespace Files.App.Views.Shells
@@ -185,7 +186,37 @@ public override void NavigateToPath(string navigationPath, Type sourcePageType,
185186
if (string.IsNullOrEmpty(navigationPath))
186187
return;
187188

188-
this.FindAscendant<ColumnsLayoutPage>()?.SetSelectedPathOrNavigate(navigationPath, sourcePageType, navArgs);
189+
var columnsLayoutPage = this.FindAscendant<ColumnsLayoutPage>();
190+
if (columnsLayoutPage != null)
191+
{
192+
columnsLayoutPage.SetSelectedPathOrNavigate(navigationPath, sourcePageType, navArgs);
193+
}
194+
else
195+
{
196+
if (sourcePageType is null)
197+
sourcePageType = InstanceViewModel.FolderSettings.GetLayoutType(navigationPath);
198+
199+
if (navArgs is not null && navArgs.AssociatedTabInstance is not null)
200+
{
201+
ItemDisplayFrame.Navigate(
202+
sourcePageType,
203+
navArgs,
204+
new SuppressNavigationTransitionInfo());
205+
}
206+
else
207+
{
208+
var newNavArgs = new NavigationArguments()
209+
{
210+
NavPathParam = navigationPath,
211+
AssociatedTabInstance = this
212+
};
213+
214+
ItemDisplayFrame.Navigate(
215+
sourcePageType,
216+
newNavArgs,
217+
new SuppressNavigationTransitionInfo());
218+
}
219+
}
189220
}
190221

191222
public override void NavigateHome()

0 commit comments

Comments
 (0)