Skip to content

Commit c4cbe13

Browse files
authored
Code Quality: Properly dispose events in layout pages (#17437)
1 parent 9a02bde commit c4cbe13

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public sealed partial class DetailsLayoutPage : BaseGroupableLayoutPage
3737
/// </summary>
3838
private uint currentIconSize;
3939

40+
private RectangleSelection? _rectangleSelection;
41+
4042
// Properties
4143

4244
protected override ListViewBase ListViewBase => FileList;
@@ -77,8 +79,8 @@ public DetailsLayoutPage() : base()
7779
{
7880
InitializeComponent();
7981
DataContext = this;
80-
var selectionRectangle = RectangleSelection.Create(FileList, SelectionRectangle, FileList_SelectionChanged);
81-
selectionRectangle.SelectionEnded += SelectionRectangle_SelectionEnded;
82+
_rectangleSelection = RectangleSelection.Create(FileList, SelectionRectangle, FileList_SelectionChanged);
83+
_rectangleSelection.SelectionEnded += SelectionRectangle_SelectionEnded;
8284

8385
UpdateSortOptionsCommand = new RelayCommand<string>(x =>
8486
{
@@ -202,6 +204,11 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
202204
FolderSettings.SortOptionPreferenceUpdated -= FolderSettings_SortOptionPreferenceUpdated;
203205
ParentShellPageInstance.ShellViewModel.PageTypeUpdated -= FilesystemViewModel_PageTypeUpdated;
204206
UserSettingsService.LayoutSettingsService.PropertyChanged -= LayoutSettingsService_PropertyChanged;
207+
if (_rectangleSelection is not null)
208+
{
209+
_rectangleSelection.SelectionEnded -= SelectionRectangle_SelectionEnded;
210+
_rectangleSelection = null;
211+
}
205212
}
206213

207214
private void LayoutSettingsService_PropertyChanged(object? sender, PropertyChangedEventArgs e)
@@ -1053,4 +1060,4 @@ private static GitProperties GetEnabledGitProperties(ColumnsViewModel columnsVie
10531060
};
10541061
}
10551062
}
1056-
}
1063+
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public sealed partial class GridLayoutPage : BaseGroupableLayoutPage
3131

3232
private volatile bool shouldSetVerticalScrollMode;
3333

34+
private RectangleSelection? _rectangleSelection;
35+
3436
// Properties
3537

3638
public ScrollViewer? ContentScroller { get; private set; }
@@ -149,8 +151,8 @@ public GridLayoutPage() : base()
149151
InitializeComponent();
150152
DataContext = this;
151153

152-
var selectionRectangle = RectangleSelection.Create(ListViewBase, SelectionRectangle, FileList_SelectionChanged);
153-
selectionRectangle.SelectionEnded += SelectionRectangle_SelectionEnded;
154+
_rectangleSelection = RectangleSelection.Create(ListViewBase, SelectionRectangle, FileList_SelectionChanged);
155+
_rectangleSelection.SelectionEnded += SelectionRectangle_SelectionEnded;
154156
}
155157

156158
// Methods
@@ -222,6 +224,12 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
222224
FolderSettings.LayoutModeChangeRequested -= FolderSettings_LayoutModeChangeRequested;
223225

224226
UserSettingsService.LayoutSettingsService.PropertyChanged -= LayoutSettingsService_PropertyChanged;
227+
228+
if (_rectangleSelection is not null)
229+
{
230+
_rectangleSelection.SelectionEnded -= SelectionRectangle_SelectionEnded;
231+
_rectangleSelection = null;
232+
}
225233
}
226234

227235
private void LayoutSettingsService_PropertyChanged(object? sender, PropertyChangedEventArgs e)
@@ -827,4 +835,4 @@ private void UpdateCheckboxVisibility(object sender, bool isPointerOver)
827835
}
828836
}
829837
}
830-
}
838+
}

0 commit comments

Comments
 (0)