]> O.S.I.I.S - jp/crow.git/commitdiff
ISelectable handling improvments
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sat, 27 Mar 2021 13:11:27 +0000 (14:11 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Sat, 27 Mar 2021 13:11:27 +0000 (14:11 +0100)
Crow/src/Widgets/TemplatedContainer.cs
Crow/src/Widgets/TemplatedGroup.cs

index b607ff918f8820c3808492322ceb6a83225fa12b..b8d7a1286d2a7a8aa0980017024b9c55a1f6f770 100644 (file)
@@ -1,6 +1,7 @@
-// Copyright (c) 2013-2019  Bruyère Jean-Philippe jp_bruyere@hotmail.com
+// Copyright (c) 2013-2021  Bruyère Jean-Philippe jp_bruyere@hotmail.com
 //
 // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
+using System;
 
 namespace Crow
 {
@@ -38,6 +39,8 @@ namespace Crow
                                return _contentContainer == null ? null : _contentContainer.Child;
                        }
                        set {
+                               if (_contentContainer == null)
+                                       throw new Exception ("TemplatedContainer template Must contain a Container named 'Content'");
                                _contentContainer.SetChild(value);
                                NotifyValueChanged ("HasContent", HasContent);
                        }
index 3e22480e4b958d1c1a00c78fbecf986a427df220..713f4979431fd8702dee54ee56426c34384b82cf 100644 (file)
@@ -454,9 +454,8 @@ namespace Crow {
                                }
                        }
 
-                       if (g is ListItem li) {
+                       if (g is ISelectable li)
                                li.Selected += Li_Selected;
-                       }
 
                        g.DataSource = o;
                }
@@ -464,6 +463,10 @@ namespace Crow {
                //void expandable_expandevent (object sender, EventHandler )
                void Li_Selected (object sender, EventArgs e)
                {
+                       if (selectedItemContainer is ISelectable li)
+                               li.IsSelected = false;
+                       selectedItemContainer = sender as Widget;
+
                        SelectedItemContainerChanged.Raise (this, new SelectionChangeEventArgs (sender));
                }
 
@@ -498,11 +501,11 @@ namespace Crow {
                }
                internal virtual void itemClick(object sender, MouseButtonEventArgs e){
                        //SelectedIndex = (int)((IList)data)?.IndexOf((sender as Widget).DataSource);
-                       if (selectedItemContainer is ISelectable li)
-                               li.IsSelected = false;
-                       selectedItemContainer = sender as Widget;
-                       if (selectedItemContainer is ISelectable nli)
+                       
+                       if (sender is ISelectable nli)
                                nli.IsSelected = true;
+                       else
+                               selectedItemContainer = sender as Widget;
                        if (selectedItemContainer == null)
                                return;
                        SelectedItem = selectedItemContainer.DataSource;