From: Jean-Philippe Bruyère Date: Sat, 27 Mar 2021 13:11:27 +0000 (+0100) Subject: ISelectable handling improvments X-Git-Tag: v0.9.5-beta~47 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=8acdcdfe818c682964d00665d6e92a3b01bcf0eb;p=jp%2Fcrow.git ISelectable handling improvments --- diff --git a/Crow/src/Widgets/TemplatedContainer.cs b/Crow/src/Widgets/TemplatedContainer.cs index b607ff91..b8d7a128 100644 --- a/Crow/src/Widgets/TemplatedContainer.cs +++ b/Crow/src/Widgets/TemplatedContainer.cs @@ -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); } diff --git a/Crow/src/Widgets/TemplatedGroup.cs b/Crow/src/Widgets/TemplatedGroup.cs index 3e22480e..713f4979 100644 --- a/Crow/src/Widgets/TemplatedGroup.cs +++ b/Crow/src/Widgets/TemplatedGroup.cs @@ -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;