feat: add hooksecurefunc, UIParent, and noop stubs for addon compat

- hooksecurefunc(tblOrName, name, hook) — hook any function to run
  additional code after it executes without replacing the original.
  Supports both global and table method forms.

- UIParent, WorldFrame — standard parent frames that many addons
  reference as parents for their own frames.

- Noop stubs: SetDesaturation, SetPortraitTexture, PlaySound,
  PlaySoundFile — prevent errors from addons that call these
  visual/audio functions which don't have implementations yet.
This commit is contained in:
Kelsi 2026-03-20 13:27:27 -07:00
parent 0a62529b55
commit 3ff43a530f

View file

@ -932,6 +932,36 @@ void LuaEngine::registerCoreAPI() {
"end\n"
"ChatFrame1 = DEFAULT_CHAT_FRAME\n"
);
// hooksecurefunc — hook a function to run additional code after it
luaL_dostring(L_,
"function hooksecurefunc(tblOrName, nameOrFunc, funcOrNil)\n"
" local tbl, name, hook\n"
" if type(tblOrName) == 'table' then\n"
" tbl, name, hook = tblOrName, nameOrFunc, funcOrNil\n"
" else\n"
" tbl, name, hook = _G, tblOrName, nameOrFunc\n"
" end\n"
" local orig = tbl[name]\n"
" if type(orig) ~= 'function' then return end\n"
" tbl[name] = function(...)\n"
" local r = {orig(...)}\n"
" hook(...)\n"
" return unpack(r)\n"
" end\n"
"end\n"
);
// Noop stubs for commonly called functions that don't need implementation
luaL_dostring(L_,
"function SetDesaturation() end\n"
"function SetPortraitTexture() end\n"
"function PlaySound() end\n"
"function PlaySoundFile() end\n"
"function UIParent_OnEvent() end\n"
"UIParent = CreateFrame('Frame', 'UIParent')\n"
"WorldFrame = CreateFrame('Frame', 'WorldFrame')\n"
);
}
// ---- Event System ----