Browse Source

Don't reset selection if source hasn't changed.

Also remove some `?.` operators that aren't needed.
pull/3469/head
Steven Kirk 7 years ago
parent
commit
4de9fac5c1
  1. 17
      src/Avalonia.Controls/SelectionModel.cs

17
src/Avalonia.Controls/SelectionModel.cs

@ -33,13 +33,16 @@ namespace Avalonia.Controls
public object? Source public object? Source
{ {
get => _rootNode?.Source; get => _rootNode.Source;
set set
{ {
ClearSelection(resetAnchor: true, raiseSelectionChanged: false); if (_rootNode.Source != value)
_rootNode.Source = value; {
OnSelectionChanged(); ClearSelection(resetAnchor: true, raiseSelectionChanged: false);
RaisePropertyChanged("Source"); _rootNode.Source = value;
OnSelectionChanged();
RaisePropertyChanged("Source");
}
} }
} }
@ -76,7 +79,7 @@ namespace Avalonia.Controls
{ {
IndexPath anchor = default; IndexPath anchor = default;
if (_rootNode?.AnchorIndex >= 0) if (_rootNode.AnchorIndex >= 0)
{ {
var path = new List<int>(); var path = new List<int>();
SelectionNode? current = _rootNode; SelectionNode? current = _rootNode;
@ -290,7 +293,7 @@ namespace Avalonia.Controls
public void Dispose() public void Dispose()
{ {
ClearSelection(resetAnchor: false, raiseSelectionChanged: false); ClearSelection(resetAnchor: false, raiseSelectionChanged: false);
_rootNode?.Dispose(); _rootNode.Dispose();
_selectedIndicesCached = null; _selectedIndicesCached = null;
_selectedItemsCached = null; _selectedItemsCached = null;
} }

Loading…
Cancel
Save