aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-03-27 14:11:27 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-03-27 14:11:27 +0100
commit8acdcdfe818c682964d00665d6e92a3b01bcf0eb (patch)
treee3995eef6b7d019dff48e141f8cd4b292946c557
parenteb5af95343473183385a4446f1a74c3ac39ad89c (diff)
ISelectable handling improvments
-rw-r--r--Crow/src/Widgets/TemplatedContainer.cs5
-rw-r--r--Crow/src/Widgets/TemplatedGroup.cs15
2 files changed, 13 insertions, 7 deletions
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;