88using Microsoft . UI . Xaml . Controls ;
99using Microsoft . UI . Xaml . Navigation ;
1010using Windows . Storage ;
11- using static Files . App . Constants ;
1211using static Files . App . Helpers . PathNormalization ;
1312
1413namespace 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