Skip to content

Commit 1654ab9

Browse files
authored
Fix: Fixed issue with opening and closing folder in column layout (#12579)
1 parent 1d425c7 commit 1654ab9

File tree

2 files changed

+19
-21
lines changed

2 files changed

+19
-21
lines changed

src/Files.App/Views/LayoutModes/ColumnViewBase.xaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@
170170
IsTabStop="True"
171171
ItemsSource="{x:Bind CollectionViewSource.View, Mode=OneWay}"
172172
PreviewKeyDown="FileList_PreviewKeyDown"
173-
PreviewKeyUp="FileList_PreviewKeyUp"
174173
RightTapped="FileList_RightTapped"
175174
ScrollViewer.IsScrollInertiaEnabled="True"
176175
SelectionChanged="FileList_SelectionChanged"

src/Files.App/Views/LayoutModes/ColumnViewBase.xaml.cs

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
using DispatcherQueueTimer = Microsoft.UI.Dispatching.DispatcherQueueTimer;
1818
using static Files.App.Constants;
1919
using Microsoft.UI.Dispatching;
20-
using Files.App.Data.EventArguments;
2120

2221
namespace Files.App.Views.LayoutModes
2322
{
@@ -223,14 +222,29 @@ protected override void FileList_SelectionChanged(object sender, SelectionChange
223222
presenter!.Background = this.Resources["ListViewItemBackgroundSelected"] as SolidColorBrush;
224223
}
225224

226-
if (SelectedItems?.Count > 1 || SelectedItem?.PrimaryItemAttribute is StorageItemTypes.File)
225+
if (SelectedItems?.Count == 1 && SelectedItem?.PrimaryItemAttribute is StorageItemTypes.Folder && openedFolderPresenter != FileList.ContainerFromItem(SelectedItem))
227226
{
228-
var currentBladeIndex = (ParentShellPageInstance is ColumnShellPage associatedColumnShellPage) ? associatedColumnShellPage.ColumnParams.Column : 0;
229-
this.FindAscendant<ColumnViewBrowser>()?.DismissOtherBlades(currentBladeIndex);
230-
ClearOpenedFolderSelectionIndicator();
227+
if (UserSettingsService.FoldersSettingsService.ColumnLayoutOpenFoldersWithOneClick)
228+
ItemInvoked?.Invoke(new ColumnParam { Source = this, NavPathParam = (SelectedItem is ShortcutItem sht ? sht.TargetPath : SelectedItem.ItemPath), ListView = FileList }, EventArgs.Empty);
229+
else
230+
CloseFolder();
231+
}
232+
else if (SelectedItems?.Count > 1
233+
|| SelectedItem?.PrimaryItemAttribute is StorageItemTypes.File
234+
|| openedFolderPresenter != null && ParentShellPageInstance != null &&
235+
!ParentShellPageInstance.FilesystemViewModel.FilesAndFolders.Contains(FileList.ItemFromContainer(openedFolderPresenter)))
236+
{
237+
CloseFolder();
231238
}
232239
}
233240

241+
private void CloseFolder()
242+
{
243+
var currentBladeIndex = (ParentShellPageInstance is ColumnShellPage associatedColumnShellPage) ? associatedColumnShellPage.ColumnParams.Column : 0;
244+
this.FindAscendant<ColumnViewBrowser>()?.DismissOtherBlades(currentBladeIndex);
245+
ClearOpenedFolderSelectionIndicator();
246+
}
247+
234248
private void FileList_RightTapped(object sender, RightTappedRoutedEventArgs e)
235249
{
236250
if (!IsRenamingItem)
@@ -242,21 +256,6 @@ private void HandleRightClick(object sender, RightTappedRoutedEventArgs e)
242256
HandleRightClick(e.OriginalSource);
243257
}
244258

245-
private void FileList_PreviewKeyUp(object sender, KeyRoutedEventArgs e)
246-
{
247-
if
248-
(
249-
IsRenamingItem ||
250-
!(e.Key is VirtualKey.Up or VirtualKey.Down or VirtualKey.Right) ||
251-
SelectedItems?.Count > 1
252-
)
253-
return;
254-
255-
// Open selected directory
256-
if (IsItemSelected && SelectedItem?.PrimaryItemAttribute == StorageItemTypes.Folder)
257-
ItemInvoked?.Invoke(new ColumnParam { Source = this, NavPathParam = (SelectedItem is ShortcutItem sht ? sht.TargetPath : SelectedItem.ItemPath), ListView = FileList }, EventArgs.Empty);
258-
}
259-
260259
protected override async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
261260
{
262261
if

0 commit comments

Comments
 (0)