From 17198939da3eb203bae57a6a612cf3eef81178cc Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 9 Feb 2026 10:48:58 -0600 Subject: [PATCH] feat(ui): add FrameScript_Object::UnregisterScriptEvent --- src/ui/FrameScript_Object.cpp | 19 +++++++++++++++++++ src/ui/FrameScript_Object.hpp | 1 + 2 files changed, 20 insertions(+) diff --git a/src/ui/FrameScript_Object.cpp b/src/ui/FrameScript_Object.cpp index 17ff3db..6a8397e 100644 --- a/src/ui/FrameScript_Object.cpp +++ b/src/ui/FrameScript_Object.cpp @@ -193,6 +193,25 @@ int32_t FrameScript_Object::SetScript(lua_State* L) { return 0; } +void FrameScript_Object::UnregisterScriptEvent(const char* name) { + auto event = FrameScript::s_scriptEventsHash.Ptr(name); + + if (!event) { + return; + } + + if (event->pendingSignalCount) { + for (auto node = event->registerListeners.Head(); node; node = event->registerListeners.Next(node)) { + if (node->listener == this) { + event->registerListeners.DeleteNode(node); + break; + } + } + } + + FrameScript_UnregisterScriptEvent(this, event); +} + void FrameScript_Object::UnregisterScriptObject(const char* name) { auto L = FrameScript_GetContext(); diff --git a/src/ui/FrameScript_Object.hpp b/src/ui/FrameScript_Object.hpp index db4528f..3884042 100644 --- a/src/ui/FrameScript_Object.hpp +++ b/src/ui/FrameScript_Object.hpp @@ -48,6 +48,7 @@ class FrameScript_Object { void RegisterScriptObject(const char* name); void RunScript(ScriptIx const& script, int32_t argCount, const char* a4); int32_t SetScript(lua_State* L); + void UnregisterScriptEvent(const char* name); void UnregisterScriptObject(const char* name); };