From 4de9fac5c107f75f6a8dc51ff0325a0fa18b6ce1 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 4 Feb 2020 10:23:36 +0100 Subject: [PATCH] Don't reset selection if source hasn't changed. Also remove some `?.` operators that aren't needed. --- src/Avalonia.Controls/SelectionModel.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Controls/SelectionModel.cs b/src/Avalonia.Controls/SelectionModel.cs index 34d5f78434..a501946365 100644 --- a/src/Avalonia.Controls/SelectionModel.cs +++ b/src/Avalonia.Controls/SelectionModel.cs @@ -33,13 +33,16 @@ namespace Avalonia.Controls public object? Source { - get => _rootNode?.Source; + get => _rootNode.Source; set { - ClearSelection(resetAnchor: true, raiseSelectionChanged: false); - _rootNode.Source = value; - OnSelectionChanged(); - RaisePropertyChanged("Source"); + if (_rootNode.Source != value) + { + ClearSelection(resetAnchor: true, raiseSelectionChanged: false); + _rootNode.Source = value; + OnSelectionChanged(); + RaisePropertyChanged("Source"); + } } } @@ -76,7 +79,7 @@ namespace Avalonia.Controls { IndexPath anchor = default; - if (_rootNode?.AnchorIndex >= 0) + if (_rootNode.AnchorIndex >= 0) { var path = new List(); SelectionNode? current = _rootNode; @@ -290,7 +293,7 @@ namespace Avalonia.Controls public void Dispose() { ClearSelection(resetAnchor: false, raiseSelectionChanged: false); - _rootNode?.Dispose(); + _rootNode.Dispose(); _selectedIndicesCached = null; _selectedItemsCached = null; }