diff --git a/src/dlangui/core/signals.d b/src/dlangui/core/signals.d index 691fa60f..d487a49c 100644 --- a/src/dlangui/core/signals.d +++ b/src/dlangui/core/signals.d @@ -164,6 +164,10 @@ struct Listener(RETURN_T, T1...) final slot_t get() { return _listener; } + /// disconnect all listeners + final void clear() { + _listener = null; + } alias get this; } @@ -235,6 +239,10 @@ struct Signal(T1) if (is(T1 == interface) && __traits(allMembers, T1).length == final void disconnect(T1 listener) { disconnect(&__traits(getMember, listener, __traits(allMembers, T1)[0])); } + /// disconnect all listeners + final void clear() { + _listeners.clear(); + } } /// Multiple listeners; implicitly specified return and parameter types @@ -287,4 +295,8 @@ struct Signal(RETURN_T, T1...) final void disconnect(slot_t listener) { _listeners -= listener; } + /// disconnect all listeners + final void clear() { + _listeners.clear(); + } } diff --git a/src/dlangui/widgets/menu.d b/src/dlangui/widgets/menu.d index f251ab02..7d7eb308 100644 --- a/src/dlangui/widgets/menu.d +++ b/src/dlangui/widgets/menu.d @@ -232,6 +232,12 @@ class MenuItem { } return res; } + /// removes all subitems + void clear() { + foreach(ref item; _subitems) + item = null; + _subitems.length = 0; + } /// returns text description for first accelerator of action; null if no accelerators @property dstring acceleratorText() { if (!_action) diff --git a/views/DLANGUI_VERSION b/views/DLANGUI_VERSION index 02dc99f7..d9e6b023 100644 --- a/views/DLANGUI_VERSION +++ b/views/DLANGUI_VERSION @@ -1 +1 @@ -v0.9.145 \ No newline at end of file +v0.9.146 \ No newline at end of file