Skip to content

Commit c8809e8

Browse files
authored
Enable cache mode for LayoutModes (#3464)
1 parent cc85414 commit c8809e8

File tree

6 files changed

+20
-9
lines changed

6 files changed

+20
-9
lines changed

Files/BaseLayout.cs

+1
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ private void FolderSettings_LayoutModeChangeRequested(object sender, EventArgs e
290290

291291
if (layoutType != ParentShellPageInstance.CurrentPageType)
292292
{
293+
FolderSettings.IsLayoutModeChanging = true;
293294
ParentShellPageInstance.ContentFrame.Navigate(layoutType, new NavigationArguments()
294295
{
295296
NavPathParam = navigationArguments.NavPathParam,

Files/ViewModels/ItemViewModel.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2275,10 +2275,10 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
22752275

22762276
public void Dispose()
22772277
{
2278+
CancelLoadAndClearFiles();
22782279
addFilesCTS?.Dispose();
22792280
semaphoreCTS?.Dispose();
22802281
loadPropsCTS?.Dispose();
2281-
CloseWatcher();
22822282
}
22832283

22842284
/// <summary>

Files/Views/LayoutModes/GenericFileBrowser.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
1818
xmlns:usercontrols="using:Files.UserControls"
1919
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
20-
NavigationCacheMode="Disabled"
20+
NavigationCacheMode="Enabled"
2121
PointerWheelChanged="BaseLayout_PointerWheelChanged"
2222
mc:Ignorable="d">
2323

Files/Views/LayoutModes/GenericFileBrowser.xaml.cs

+8-3
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,14 @@ private void SelectionRectangle_SelectionEnded(object sender, EventArgs e)
112112
protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
113113
{
114114
base.OnNavigatedTo(eventArgs);
115-
AllView.ItemsSource = ParentShellPageInstance.FilesystemViewModel.FilesAndFolders;
116115
ParentShellPageInstance.FilesystemViewModel.PropertyChanged += ViewModel_PropertyChanged;
117116
AllView.LoadingRow += AllView_LoadingRow;
118117
AllView.UnloadingRow += AllView_UnloadingRow;
119118
AppSettings.ThemeModeChanged += AppSettings_ThemeModeChanged;
119+
if (AllView.ItemsSource == null)
120+
{
121+
AllView.ItemsSource = ParentShellPageInstance.FilesystemViewModel.FilesAndFolders;
122+
}
120123
ViewModel_PropertyChanged(null, new PropertyChangedEventArgs("DirectorySortOption"));
121124
var parameters = (NavigationArguments)eventArgs.Parameter;
122125
if (parameters.IsLayoutSwitch)
@@ -154,8 +157,10 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
154157
AllView.LoadingRow -= AllView_LoadingRow;
155158
AllView.UnloadingRow -= AllView_UnloadingRow;
156159
AppSettings.ThemeModeChanged -= AppSettings_ThemeModeChanged;
157-
158-
AllView.ItemsSource = null;
160+
if (e.SourcePageType != typeof(GenericFileBrowser))
161+
{
162+
AllView.ItemsSource = null;
163+
}
159164
}
160165

161166
private void AppSettings_ThemeModeChanged(object sender, EventArgs e)

Files/Views/LayoutModes/GridViewBrowser.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
1616
x:Name="PageRoot"
1717
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
18-
NavigationCacheMode="Disabled"
18+
NavigationCacheMode="Enabled"
1919
PointerPressed="GridViewBrowserViewer_PointerPressed"
2020
PointerWheelChanged="BaseLayout_PointerWheelChanged"
2121
mc:Ignorable="d">

Files/Views/LayoutModes/GridViewBrowser.xaml.cs

+8-3
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,14 @@ public GridViewBrowser()
3535
protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
3636
{
3737
base.OnNavigatedTo(eventArgs);
38-
FileList.ItemsSource = ParentShellPageInstance.FilesystemViewModel.FilesAndFolders;
3938
currentIconSize = GetIconSize();
4039
FolderSettings.LayoutModeChangeRequested -= FolderSettings_LayoutModeChangeRequested;
4140
FolderSettings.LayoutModeChangeRequested += FolderSettings_LayoutModeChangeRequested;
4241
SetItemTemplate(); // Set ItemTemplate
42+
if (FileList.ItemsSource == null)
43+
{
44+
FileList.ItemsSource = ParentShellPageInstance.FilesystemViewModel.FilesAndFolders;
45+
}
4346
var parameters = (NavigationArguments)eventArgs.Parameter;
4447
if (parameters.IsLayoutSwitch)
4548
{
@@ -60,8 +63,10 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
6063
base.OnNavigatingFrom(e);
6164
FolderSettings.LayoutModeChangeRequested -= FolderSettings_LayoutModeChangeRequested;
6265
FolderSettings.GridViewSizeChangeRequested -= FolderSettings_GridViewSizeChangeRequested;
63-
64-
FileList.ItemsSource = null;
66+
if (e.SourcePageType != typeof(GridViewBrowser))
67+
{
68+
FileList.ItemsSource = null;
69+
}
6570
}
6671

6772
private async void SelectionRectangle_SelectionEnded(object sender, EventArgs e)

0 commit comments

Comments
 (0)