Skip to content

Commit 407d1fd

Browse files
authored
Fix: Fixed crash when switching to the List View layout (#14533)
1 parent 7f9d085 commit 407d1fd

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

src/Files.App/UserControls/Selection/RectangleSelection_ListViewBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ private void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEven
186186

187187
private void RectangleSelection_PointerReleased(object sender, PointerRoutedEventArgs e)
188188
{
189+
if (scrollViewer is null) return;
189190
Canvas.SetLeft(selectionRectangle, 0);
190191
Canvas.SetTop(selectionRectangle, 0);
191192
selectionRectangle.Width = 0;

src/Files.App/Views/Layouts/GridLayoutPage.xaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@
3232
</i:Interaction.Behaviors>
3333

3434
<local:BaseGroupableLayoutPage.Resources>
35-
<ItemsPanelTemplate x:Key="VerticalItemsTemplate">
36-
<ItemsWrapGrid Orientation="Vertical" />
37-
</ItemsPanelTemplate>
38-
<ItemsPanelTemplate x:Key="HorizontalItemsTemplate">
39-
<ItemsWrapGrid Orientation="Horizontal" />
40-
</ItemsPanelTemplate>
4135
<Style x:Key="VerticalLayoutGridView" TargetType="GridView">
4236
<Style.Setters>
4337
<Setter Property="ItemsPanel">
4438
<Setter.Value>
45-
<ItemsPanelTemplate />
39+
<ItemsPanelTemplate>
40+
<ItemsWrapGrid Orientation="Vertical" />
41+
</ItemsPanelTemplate>
4642
</Setter.Value>
4743
</Setter>
44+
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
45+
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
46+
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" />
47+
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
4848
</Style.Setters>
4949
</Style>
5050

@@ -57,6 +57,10 @@
5757
</ItemsPanelTemplate>
5858
</Setter.Value>
5959
</Setter>
60+
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Enabled" />
61+
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
62+
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Disabled" />
63+
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden" />
6064
</Style.Setters>
6165
</Style>
6266

@@ -824,11 +828,7 @@
824828
IsTabStop="True"
825829
ItemsSource="{x:Bind CollectionViewSource.View, Mode=OneWay}"
826830
PreviewKeyDown="FileList_PreviewKeyDown"
827-
ScrollViewer.HorizontalScrollBarVisibility="Auto"
828-
ScrollViewer.HorizontalScrollMode="Auto"
829831
ScrollViewer.IsHorizontalScrollChainingEnabled="False"
830-
ScrollViewer.VerticalScrollBarVisibility="Auto"
831-
ScrollViewer.VerticalScrollMode="Auto"
832832
SelectionChanged="FileList_SelectionChanged"
833833
SelectionMode="Extended"
834834
ShowsScrollingPlaceholders="True"

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

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,20 +159,31 @@ private async void FolderSettings_LayoutModeChangeRequested(object? sender, Layo
159159

160160
private void SetItemTemplate()
161161
{
162-
switch (FolderSettings.LayoutMode)
162+
var newFileListStyle = FolderSettings.LayoutMode switch
163+
{
164+
FolderLayoutModes.ListView => (Style)Resources["VerticalLayoutGridView"],
165+
FolderLayoutModes.TilesView => (Style)Resources["HorizontalLayoutGridView"],
166+
_ => (Style)Resources["HorizontalLayoutGridView"]
167+
};
168+
169+
if (FileList.Style != newFileListStyle)
163170
{
171+
var oldSource = FileList.ItemsSource;
172+
FileList.ItemsSource = null;
173+
FileList.Style = newFileListStyle;
174+
FileList.ItemsSource = oldSource;
175+
}
164176

177+
switch (FolderSettings.LayoutMode)
178+
{
165179
case FolderLayoutModes.ListView:
166180
FileList.ItemTemplate = ListViewBrowserTemplate;
167-
FileList.ItemsPanel = (ItemsPanelTemplate)Resources["VerticalItemsTemplate"];
168181
break;
169182
case FolderLayoutModes.TilesView:
170183
FileList.ItemTemplate = TilesBrowserTemplate;
171-
FileList.ItemsPanel = (ItemsPanelTemplate)Resources["HorizontalItemsTemplate"];
172184
break;
173185
default:
174186
FileList.ItemTemplate = GridViewBrowserTemplate;
175-
FileList.ItemsPanel = (ItemsPanelTemplate)Resources["HorizontalItemsTemplate"];
176187
break;
177188
}
178189

0 commit comments

Comments
 (0)