Browse Source

Added #nullable to SelectingItemsControl.

Steven Kirk 5 years ago
parent
commit
a9f05f22c2
1 changed files with 20 additions and 18 deletions
  1. 20 18
      src/Avalonia.Controls/Primitives/SelectingItemsControl.cs

+ 20 - 18
src/Avalonia.Controls/Primitives/SelectingItemsControl.cs

@@ -16,6 +16,8 @@ using Avalonia.Interactivity;
 using Avalonia.Logging;
 using Avalonia.VisualTree;
 
+#nullable enable
+
 namespace Avalonia.Controls.Primitives
 {
     /// <summary>
@@ -61,8 +63,8 @@ namespace Avalonia.Controls.Primitives
         /// <summary>
         /// Defines the <see cref="SelectedItem"/> property.
         /// </summary>
-        public static readonly DirectProperty<SelectingItemsControl, object> SelectedItemProperty =
-            AvaloniaProperty.RegisterDirect<SelectingItemsControl, object>(
+        public static readonly DirectProperty<SelectingItemsControl, object?> SelectedItemProperty =
+            AvaloniaProperty.RegisterDirect<SelectingItemsControl, object?>(
                 nameof(SelectedItem),
                 o => o.SelectedItem,
                 (o, v) => o.SelectedItem = v,
@@ -105,13 +107,13 @@ namespace Avalonia.Controls.Primitives
         private static readonly IList Empty = Array.Empty<object>();
         private readonly Selection _selection = new Selection();
         private int _selectedIndex = -1;
-        private object _selectedItem;
-        private IList _selectedItems;
+        private object? _selectedItem;
+        private IList? _selectedItems;
         private bool _ignoreContainerSelectionChanged;
         private bool _syncingSelectedItems;
         private int _updateCount;
         private int _updateSelectedIndex;
-        private object _updateSelectedItem;
+        private object? _updateSelectedItem;
 
         /// <summary>
         /// Initializes static members of the <see cref="SelectingItemsControl"/> class.
@@ -163,7 +165,7 @@ namespace Avalonia.Controls.Primitives
         /// <summary>
         /// Gets or sets the selected item.
         /// </summary>
-        public object SelectedItem
+        public object? SelectedItem
         {
             get => _selectedItem;
             set
@@ -261,7 +263,7 @@ namespace Avalonia.Controls.Primitives
         /// </summary>
         /// <param name="eventSource">The control that raised the event.</param>
         /// <returns>The container or null if the event did not originate in a container.</returns>
-        protected IControl GetContainerFromEventSource(IInteractive eventSource)
+        protected IControl? GetContainerFromEventSource(IInteractive eventSource)
         {
             var parent = (IVisual)eventSource;
 
@@ -290,7 +292,7 @@ namespace Avalonia.Controls.Primitives
 
                 if (SelectedIndex != -1)
                 {
-                    newIndex = IndexOf((IEnumerable)e.NewValue, SelectedItem);
+                    newIndex = IndexOf((IEnumerable?)e.NewValue, SelectedItem);
                 }
 
                 if (AlwaysSelected && Items != null && Items.Cast<object>().Any())
@@ -483,7 +485,7 @@ namespace Avalonia.Controls.Primitives
         /// <param name="direction">The direction to move.</param>
         /// <param name="wrap">Whether to wrap when the selection reaches the first or last item.</param>
         /// <returns>True if the selection was moved; otherwise false.</returns>
-        protected bool MoveSelection(IControl from, NavigationDirection direction, bool wrap)
+        protected bool MoveSelection(IControl? from, NavigationDirection direction, bool wrap)
         {
             if (Presenter?.Panel is INavigableContainer container &&
                 GetNextControl(container, direction, from, wrap) is IControl next)
@@ -833,14 +835,14 @@ namespace Avalonia.Controls.Primitives
         /// </summary>
         /// <param name="sender">The event sender.</param>
         /// <param name="e">The event args.</param>
-        private void SelectedItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
+        private void SelectedItemsCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e)
         {
             if (_syncingSelectedItems)
             {
                 return;
             }
 
-            void Add(IList newItems, IList addedItems = null)
+            void Add(IList newItems, IList? addedItems = null)
             {
                 foreach (var item in newItems)
                 {
@@ -865,8 +867,8 @@ namespace Avalonia.Controls.Primitives
                 }
             }
 
-            IList added = null;
-            IList removed = null;
+            IList? added = null;
+            IList? removed = null;
 
             switch (e.Action)
             {
@@ -983,8 +985,8 @@ namespace Avalonia.Controls.Primitives
             var item = ElementAt(Items, index);
             var itemChanged = !Equals(item, oldItem);
             var added = -1;
-            HashSet<int> removedIndexes = null;
-            List<object> removedItems = null;
+            HashSet<int>? removedIndexes = null;
+            List<object?>? removedItems = null;
 
             _selectedIndex = index;
             _selectedItem = item;
@@ -1011,7 +1013,7 @@ namespace Avalonia.Controls.Primitives
                 }
                 else
                 {
-                    removedItems ??= new List<object>();
+                    removedItems ??= new List<object?>();
                     removedItems.Add(oldItem);
                 }
 
@@ -1050,7 +1052,7 @@ namespace Avalonia.Controls.Primitives
 
                 if (removedIndexes is object)
                 {
-                    removedItems ??= new List<object>();
+                    removedItems ??= new List<object?>();
 
                     foreach (var removed in removedIndexes)
                     {
@@ -1065,7 +1067,7 @@ namespace Avalonia.Controls.Primitives
 
                 var e = new SelectionChangedEventArgs(
                     SelectionChangedEvent,
-                    (IList)removedItems ?? Array.Empty<object>(),
+                    (IList?)removedItems ?? Array.Empty<object>(),
                     added != -1 ? new[] { ElementAt(Items, added) } : Array.Empty<object>());
                 RaiseEvent(e);
             }