[NUI] Fix collectionView Selection on Item.
authorEverLEEst(SangHyeon Lee) <sh10233.lee@samsung.com>
Fri, 10 Mar 2023 06:49:15 +0000 (15:49 +0900)
committertscholb <scholb.kim@samsung.com>
Mon, 13 Mar 2023 10:02:21 +0000 (19:02 +0900)
src/Tizen.NUI.Components/Controls/RecyclerView/Item/RecyclerViewItem.cs
src/Tizen.NUI.Components/Controls/RecyclerView/Layouter/LinearLayouter.cs

index edec1db59d54ffad3314a1c3b0afaf6c146a5ad5..73d26ad9ef97059e44f0aa537197de0f1008cdcb 100755 (executable)
@@ -50,6 +50,35 @@ namespace Tizen.NUI.Components
                     {
                         instance.UpdateState();
                     }
+                    if (instance.ParentItemsView is CollectionView colView)
+                    {
+                        var context = instance.BindingContext;
+                        if (colView.SelectionMode is ItemSelectionMode.Single ||
+                            colView.SelectionMode is ItemSelectionMode.SingleAlways)
+                        {
+                            if (newSelected && colView.SelectedItem != context)
+                            {
+                                colView.SelectedItem = context;
+                            }
+                            else if (!newSelected && colView.SelectedItem == context)
+                            {
+                                colView.SelectedItem = null;
+                            }
+                        }
+                        else if (colView.SelectionMode is ItemSelectionMode.Multiple)
+                        {
+                            var selectedList = colView.SelectedItems;
+                            bool contains = selectedList.Contains(context);
+                            if (newSelected && !contains)
+                            {
+                                selectedList.Add(context);
+                            }
+                            else if (!newSelected && contains)
+                            {
+                                selectedList.Remove(context);
+                            }
+                        }
+                    }
                 }
             }
         },
@@ -123,7 +152,11 @@ namespace Tizen.NUI.Components
         public bool IsSelectable
         {
             get => (bool)GetValue(IsSelectableProperty);
-            set => SetValue(IsSelectableProperty, value);
+            set
+            {
+                SetValue(IsSelectableProperty, value);
+                OnPropertyChanged("IsSelectable");
+            }
         }
 
         /// <summary>
@@ -133,7 +166,11 @@ namespace Tizen.NUI.Components
         public bool IsSelected
         {
             get => (bool)GetValue(IsSelectedProperty);
-            set => SetValue(IsSelectedProperty, value);
+            set
+            {
+                SetValue(IsSelectedProperty, value);
+                OnPropertyChanged("IsSelected");
+            }
         }
 
         /// <summary>
index 8487658a385f4773100f6e2d5bed8d4372a349ff..98d3a08956eaac1f7b3f399e8d74447534aedbac 100755 (executable)
@@ -259,7 +259,7 @@ namespace Tizen.NUI.Components
                 CandidateMargin = new Extents(itemMargin);
                 if (StepCandidate == 0) StepCandidate = 1; //????
 
-                colView.UnrealizeItem(sizeDeligate);
+                colView.UnrealizeItem(sizeDeligate, false);
             }
 
             float Current = IsHorizontal? Padding.Start : Padding.Top;