From 589e848f441e9a2e9febb9a56f073ed3c5019794 Mon Sep 17 00:00:00 2001 From: "Frank A. Krueger" Date: Fri, 2 Feb 2018 21:03:42 -0800 Subject: [PATCH] Trigger Change event when changing the checked state --- Ooui/EventTarget.cs | 18 ++++++++++++++++++ Ooui/Input.cs | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Ooui/EventTarget.cs b/Ooui/EventTarget.cs index 4e8c273..a37b69a 100644 --- a/Ooui/EventTarget.cs +++ b/Ooui/EventTarget.cs @@ -182,6 +182,24 @@ namespace Ooui return true; } + protected virtual bool TriggerEvent (string name) + { + List handlers = null; + lock (eventListeners) { + List hs; + if (eventListeners.TryGetValue (name, out hs)) { + handlers = new List (hs); + } + } + if (handlers != null) { + var args = new TargetEventArgs (); + foreach (var h in handlers) { + h.Invoke (this, args); + } + } + return true; + } + protected virtual bool TriggerEventFromMessage (Message message) { if (message.TargetId != Id) diff --git a/Ooui/Input.cs b/Ooui/Input.cs index d114c2d..966bf08 100644 --- a/Ooui/Input.cs +++ b/Ooui/Input.cs @@ -40,7 +40,11 @@ namespace Ooui public bool IsChecked { get => GetBooleanAttribute ("checked"); - set => SetBooleanAttributeProperty ("checked", value); + set { + if (SetBooleanAttributeProperty ("checked", value)) { + TriggerEvent ("change"); + } + } } public double Minimum {