Skip to content

Commit 09d65c0

Browse files
Fix: Fixed issue where column view jumps from left to right (#11986)
1 parent c9962cd commit 09d65c0

File tree

2 files changed

+12
-20
lines changed

2 files changed

+12
-20
lines changed

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

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
using Windows.System;
2121
using Windows.UI.Core;
2222
using static Files.App.Constants;
23-
using DispatcherQueueTimer = Microsoft.UI.Dispatching.DispatcherQueueTimer;
2423

2524
namespace Files.App.Views.LayoutModes
2625
{
@@ -41,7 +40,6 @@ public ColumnViewBase() : base()
4140
InitializeComponent();
4241
var selectionRectangle = RectangleSelection.Create(FileList, SelectionRectangle, FileList_SelectionChanged);
4342
selectionRectangle.SelectionEnded += SelectionRectangle_SelectionEnded;
44-
tapDebounceTimer = DispatcherQueue.CreateTimer();
4543
ItemInvoked += ColumnViewBase_ItemInvoked;
4644
GotFocus += ColumnViewBase_GotFocus;
4745
}
@@ -232,22 +230,11 @@ private void HandleRightClick(object sender, RightTappedRoutedEventArgs e)
232230
HandleRightClick(e.OriginalSource);
233231
}
234232

235-
private readonly DispatcherQueueTimer tapDebounceTimer;
236-
237233
private void FileList_PreviewKeyUp(object sender, KeyRoutedEventArgs e)
238234
{
239235
// Open selected directory
240-
tapDebounceTimer.Stop();
241-
if (IsItemSelected && SelectedItem.PrimaryItemAttribute == StorageItemTypes.Folder)
242-
{
243-
var currItem = SelectedItem;
244-
tapDebounceTimer.Debounce(() =>
245-
{
246-
if (currItem == SelectedItem)
247-
ItemInvoked?.Invoke(new ColumnParam { NavPathParam = (SelectedItem is ShortcutItem sht ? sht.TargetPath : SelectedItem.ItemPath), ListView = FileList }, EventArgs.Empty);
248-
tapDebounceTimer.Stop();
249-
}, TimeSpan.FromMilliseconds(200));
250-
}
236+
if (IsItemSelected && SelectedItem?.PrimaryItemAttribute == StorageItemTypes.Folder)
237+
ItemInvoked?.Invoke(new ColumnParam { NavPathParam = (SelectedItem is ShortcutItem sht ? sht.TargetPath : SelectedItem.ItemPath), ListView = FileList }, EventArgs.Empty);
251238
}
252239

253240
protected override async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System;
1212
using System.Collections.Generic;
1313
using System.Linq;
14+
using Windows.Storage;
1415
using static Files.App.Constants;
1516
using static Files.App.Helpers.PathNormalization;
1617

@@ -59,9 +60,10 @@ private void ColumnViewBase_ItemInvoked(object? sender, EventArgs e)
5960
return;
6061

6162
var nextBladeIndex = ColumnHost.ActiveBlades.IndexOf(column.ListView.FindAscendant<BladeItem>()) + 1;
63+
var nextBlade = ColumnHost.ActiveBlades.ElementAtOrDefault(nextBladeIndex);
64+
var arePathsDifferent = ((nextBlade?.Content as Frame)?.Content as IShellPage)?.FilesystemViewModel?.WorkingDirectory != column.NavPathParam;
6265

63-
if (ColumnHost.ActiveBlades.ElementAtOrDefault(nextBladeIndex) is not BladeItem nextBlade ||
64-
((nextBlade.Content as Frame)?.Content as IShellPage)?.FilesystemViewModel?.WorkingDirectory != column.NavPathParam)
66+
if (nextBlade is null || arePathsDifferent)
6567
{
6668
DismissOtherBlades(column.ListView);
6769

@@ -75,7 +77,8 @@ private void ColumnViewBase_ItemInvoked(object? sender, EventArgs e)
7577
navigationArguments.NavPathParam = column.NavPathParam;
7678
ParentShellPageInstance.TabItemArguments.NavigationArg = column.NavPathParam;
7779
}
78-
else if (UserSettingsService.FoldersSettingsService.ColumnLayoutOpenFoldersWithOneClick)
80+
else if (UserSettingsService.FoldersSettingsService.ColumnLayoutOpenFoldersWithOneClick &&
81+
arePathsDifferent)
7982
{
8083
CloseUnnecessaryColumns(column);
8184
}
@@ -268,7 +271,9 @@ private void ColumnViewBrowser_ContentChanged(object sender, UserControls.Multit
268271

269272
private void ColumnViewBase_KeyUp(object sender, Microsoft.UI.Xaml.Input.KeyRoutedEventArgs e)
270273
{
271-
CloseUnnecessaryColumns((ActiveColumnShellPage as ColumnShellPage)?.ColumnParams);
274+
var shPage = ActiveColumnShellPage as ColumnShellPage;
275+
if (shPage?.SlimContentPage?.SelectedItem?.PrimaryItemAttribute is not StorageItemTypes.Folder)
276+
CloseUnnecessaryColumns(shPage?.ColumnParams);
272277
}
273278

274279
public void NavigateBack()
@@ -436,7 +441,7 @@ private void ColumnViewBase_ItemTapped(object? sender, EventArgs e)
436441

437442
private void CloseUnnecessaryColumns(ColumnParam column)
438443
{
439-
var columnPath = ((ColumnHost.ActiveBlades.Last().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
444+
var columnPath = ((ColumnHost.ActiveBlades.Last().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel?.WorkingDirectory;
440445
var columnFirstPath = ((ColumnHost.ActiveBlades.First().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
441446
if (string.IsNullOrEmpty(columnPath) || string.IsNullOrEmpty(columnFirstPath))
442447
return;

0 commit comments

Comments
 (0)