Skip to content

Commit ed3fc4c

Browse files
authored
Fix: Fixed InvalidOperationException in ColumnsLayoutPage (#14746)
1 parent eaeeff7 commit ed3fc4c

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
using Windows.Storage;
1515
using Windows.System;
1616
using Windows.UI.Core;
17-
using static Files.App.Constants;
1817
using DispatcherQueueTimer = Microsoft.UI.Dispatching.DispatcherQueueTimer;
1918

2019
namespace Files.App.Views.Layouts

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

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using Microsoft.UI.Xaml.Controls;
99
using Microsoft.UI.Xaml.Navigation;
1010
using Windows.Storage;
11-
using static Files.App.Constants;
1211
using static Files.App.Helpers.PathNormalization;
1312

1413
namespace Files.App.Views.Layouts
@@ -38,7 +37,7 @@ public ColumnsLayoutPage() : base()
3837

3938
public void HandleSelectionChange(ColumnLayoutPage initiator)
4039
{
41-
foreach (var blade in ColumnHost.ActiveBlades)
40+
foreach (var blade in ColumnHost.ActiveBlades.ToList())
4241
{
4342
var columnView = blade.FindDescendant<ColumnLayoutPage>();
4443
if (columnView != null && columnView != initiator)
@@ -64,7 +63,7 @@ private void ColumnViewBase_ItemInvoked(object? sender, EventArgs e)
6463
return;
6564

6665
var nextBladeIndex = ColumnHost.ActiveBlades.IndexOf(column.ListView.FindAscendant<BladeItem>()) + 1;
67-
var nextBlade = ColumnHost.ActiveBlades.ElementAtOrDefault(nextBladeIndex);
66+
var nextBlade = ColumnHost.ActiveBlades.ToList().ElementAtOrDefault(nextBladeIndex);
6867
var arePathsDifferent = ((nextBlade?.Content as Frame)?.Content as IShellPage)?.FilesystemViewModel?.WorkingDirectory != column.NavPathParam;
6968

7069
if (nextBlade is null || arePathsDifferent)
@@ -240,11 +239,11 @@ private void ColumnViewBrowser_GotFocus(object sender, RoutedEventArgs e)
240239
if (sender is not IShellPage shPage || shPage.IsCurrentInstance)
241240
return;
242241

243-
var currentBlade = ColumnHost.ActiveBlades.Single(x => (x.Content as Frame)?.Content == sender);
242+
var currentBlade = ColumnHost.ActiveBlades.ToList().Single(x => (x.Content as Frame)?.Content == sender);
244243
currentBlade.StartBringIntoView();
245244
if (ColumnHost.ActiveBlades is not null)
246245
{
247-
ColumnHost.ActiveBlades.ForEach(x =>
246+
ColumnHost.ActiveBlades.ToList().ForEach(x =>
248247
{
249248
var shellPage = (x.Content as Frame)?.Content as ColumnShellPage;
250249
shellPage.IsCurrentInstance = false;
@@ -295,7 +294,7 @@ public void NavigateUp()
295294
DismissOtherBlades(ColumnHost.ActiveBlades[ColumnHost.ActiveBlades.Count - 2]);
296295
else
297296
{
298-
var workingDirectory = ((ColumnHost.ActiveBlades?.FirstOrDefault()?.Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
297+
var workingDirectory = ((ColumnHost.ActiveBlades?.ToList().FirstOrDefault()?.Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
299298
if (workingDirectory is null || string.Equals(workingDirectory, GetPathRoot(workingDirectory), StringComparison.OrdinalIgnoreCase))
300299
ParentShellPageInstance?.NavigateHome();
301300
else
@@ -358,8 +357,8 @@ public void SetSelectedPathOrNavigate(string navigationPath, Type sourcePageType
358357
}
359358

360359
var destPath = navArgs is not null ? navArgs.NavPathParam : navigationPath;
361-
var columnPath = ((ColumnHost.ActiveBlades.Last().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
362-
var columnFirstPath = ((ColumnHost.ActiveBlades.First().Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
360+
var columnPath = ((ColumnHost.ActiveBlades.ToList().LastOrDefault()?.Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
361+
var columnFirstPath = ((ColumnHost.ActiveBlades.ToList().FirstOrDefault()?.Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel.WorkingDirectory;
363362

364363
if (string.IsNullOrEmpty(destPath) || string.IsNullOrEmpty(columnPath) || string.IsNullOrEmpty(columnFirstPath))
365364
{
@@ -403,7 +402,7 @@ public void SetSelectedPathOrNavigate(PathNavigationEventArgs e)
403402
{
404403
if (ColumnHost.ActiveBlades?.Count > 1)
405404
{
406-
foreach (var item in ColumnHost.ActiveBlades)
405+
foreach (var item in ColumnHost.ActiveBlades.ToList())
407406
{
408407
if ((item.Content as Frame)?.Content is ColumnShellPage s &&
409408
NormalizePath(s.FilesystemViewModel?.WorkingDirectory) == NormalizePath(e.ItemPath))
@@ -429,7 +428,7 @@ public IShellPage ActiveColumnShellPage
429428
{
430429
if (ColumnHost.ActiveBlades?.Count > 0)
431430
{
432-
var shellPages = ColumnHost.ActiveBlades.Select(x => (x.Content as Frame).Content as IShellPage);
431+
var shellPages = ColumnHost.ActiveBlades.ToList().Select(x => (x.Content as Frame).Content as IShellPage);
433432
var activeInstance = shellPages.SingleOrDefault(x => x.IsCurrentInstance);
434433
return activeInstance ?? shellPages.Last();
435434
}
@@ -467,7 +466,7 @@ private void CloseUnnecessaryColumns(ColumnParam column)
467466
if (relativeIndex is -1)
468467
{
469468
// Get the index of the blade with the same path as the requested
470-
var blade = ColumnHost.ActiveBlades.FirstOrDefault(b =>
469+
var blade = ColumnHost.ActiveBlades.ToList().FirstOrDefault(b =>
471470
column.NavPathParam.Equals(((b.Content as Frame)?.Content as ColumnShellPage)?.FilesystemViewModel?.WorkingDirectory));
472471

473472
if (blade is not null)

0 commit comments

Comments
 (0)