mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Use ClassicAPI EventUtil for addon-load/login extension wiring
Replace hand-rolled ADDON_LOADED/PLAYER_LOGIN handlers with
EventUtil.ContinueOnAddOnLoaded / ContinueOnPlayerLogin, which fire
immediately if the event already happened -- removing the "we loaded before
the target addon and missed its ADDON_LOADED" workarounds.
- pfUI compat: ContinueOnAddOnLoaded("pfUI") + ContinueOnPlayerLogin; drops
the missed-event fallback (login path still re-runs SetupCompatibility).
- MacroErrorUI / MacroLengthWarn: ContinueOnAddOnLoaded("Blizzard_MacroUI"),
folding their manual "already loaded" checks.
- 9 Mouseover extensions (ag_UnitFrames, CT_RaidAssist, CT_UnitFrames,
DiscordUnitFrames, Grid, NotGrid, Cursive, sRaidFrames, PerfectRaid):
ContinueOnAddOnLoaded("<AddonName>", OnLoad). Since immediate-fire passes no
event args, the old `arg1 == "X"` checks are replaced by the addon-name gate
(global guards kept where present); also removes the buggy
UnregisterEvent("ADDON_LOADED", "Onload") no-ops that never fired.
Addon names match file names; drops support for renamed folders (e.g. -master).
This commit is contained in:
+22
-16
@@ -2,9 +2,10 @@ local _G = _G or getfenv(0)
|
||||
local CleveRoids = _G.CleveRoids or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("Compatibility_pfUI")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "ADDON_LOADED")
|
||||
Extension.RegisterEvent("PLAYER_LOGIN", "PLAYER_LOGIN")
|
||||
Extension.Debug = false
|
||||
-- pfUI-loaded and player-login handlers are wired via ClassicAPI's EventUtil at
|
||||
-- the bottom of the file (ContinueOnAddOnLoaded fires immediately if pfUI already
|
||||
-- loaded, so no separate "we missed pfUI's ADDON_LOADED" fallback is needed).
|
||||
|
||||
-- Track pfUI state
|
||||
Extension.pfUILoaded = false
|
||||
@@ -726,23 +727,22 @@ function Extension.OnLoad()
|
||||
SLASH_PFUICD1 = "/pfuicd"
|
||||
end
|
||||
|
||||
function Extension.ADDON_LOADED()
|
||||
-- Check if pfUI just loaded AND the global actually exists
|
||||
-- (another addon could be named "pfUI" without being the real UI framework)
|
||||
if arg1 == "pfUI" and pfUI then
|
||||
Extension.pfUILoaded = true
|
||||
-- pfUI modules load after ADDON_LOADED, so schedule a check
|
||||
if CleveRoids.ScheduleTimer then
|
||||
CleveRoids.ScheduleTimer(function()
|
||||
Extension.SetupCompatibility()
|
||||
end, 0.5)
|
||||
end
|
||||
-- Fires once pfUI has loaded (immediately if it loaded before us, via EventUtil).
|
||||
function Extension.OnPfUILoaded()
|
||||
-- Guard: only the real pfUI framework sets this global (another addon could be
|
||||
-- named "pfUI" without being the UI framework).
|
||||
if not pfUI then return end
|
||||
Extension.pfUILoaded = true
|
||||
-- pfUI's submodules initialize after its ADDON_LOADED, so defer the setup.
|
||||
if CleveRoids.ScheduleTimer then
|
||||
CleveRoids.ScheduleTimer(function()
|
||||
Extension.SetupCompatibility()
|
||||
end, 0.5)
|
||||
end
|
||||
end
|
||||
|
||||
function Extension.PLAYER_LOGIN()
|
||||
-- If pfUI loaded before SCRM (alphabetical order), ADDON_LOADED for pfUI was missed.
|
||||
-- Re-run InitPfUIIntegration here to ensure lib.objects is linked correctly.
|
||||
function Extension.OnPlayerLogin()
|
||||
-- Ensure lib.objects is linked correctly (InitPfUIIntegration is idempotent).
|
||||
if pfUI and not CleveRoids.hasPfUI76 then
|
||||
local lib = CleveRoids.libdebuff
|
||||
if lib and lib.InitPfUIIntegration then
|
||||
@@ -797,4 +797,10 @@ if not CleveRoids.ScheduleTimer then
|
||||
end
|
||||
end
|
||||
|
||||
-- Wire handlers via ClassicAPI EventUtil (fires immediately if the event already
|
||||
-- happened, so load order relative to pfUI no longer matters). Registered here,
|
||||
-- after the handlers are defined, since ContinueOnAddOnLoaded may fire inline.
|
||||
EventUtil.ContinueOnAddOnLoaded("pfUI", Extension.OnPfUILoaded)
|
||||
EventUtil.ContinueOnPlayerLogin(Extension.OnPlayerLogin)
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
|
||||
@@ -1391,12 +1391,6 @@ end
|
||||
-- Extension Entry Points
|
||||
-- ============================================================================
|
||||
|
||||
function Extension.OnAddonLoaded()
|
||||
if arg1 == "Blizzard_MacroUI" then
|
||||
InstallHooks()
|
||||
end
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
-- Skip if macro checker is disabled
|
||||
if CleveRoidMacros and CleveRoidMacros.macrocheck == 0 then return end
|
||||
@@ -1404,13 +1398,9 @@ function Extension.OnLoad()
|
||||
-- Skip if SuperMacro is loaded (detected at load time)
|
||||
if SuperMacroFrame ~= nil then return end
|
||||
|
||||
-- Listen for macro UI loading
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnAddonLoaded")
|
||||
|
||||
-- If MacroFrame already exists (unlikely but safe), hook immediately
|
||||
if MacroFrame and MacroFrameText then
|
||||
InstallHooks()
|
||||
end
|
||||
-- Install once Blizzard's macro UI is available (fires immediately if already
|
||||
-- loaded), replacing the ADDON_LOADED listener + manual "already loaded" check.
|
||||
EventUtil.ContinueOnAddOnLoaded("Blizzard_MacroUI", InstallHooks)
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
|
||||
@@ -133,12 +133,6 @@ function Extension.OnMacroFrameLoad()
|
||||
end
|
||||
end
|
||||
|
||||
function Extension.OnAddonLoaded()
|
||||
if arg1 == "Blizzard_MacroUI" then
|
||||
Extension.OnMacroFrameLoad()
|
||||
end
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
-- Schedule messages to show after UI is ready
|
||||
local function ShowMessages()
|
||||
@@ -178,16 +172,11 @@ function Extension.OnLoad()
|
||||
end
|
||||
end
|
||||
|
||||
-- Listen for macro UI loading
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnAddonLoaded")
|
||||
-- Hook the macro UI once available (fires immediately if already loaded).
|
||||
EventUtil.ContinueOnAddOnLoaded("Blizzard_MacroUI", Extension.OnMacroFrameLoad)
|
||||
|
||||
-- Also try to hook MacroFrame_SaveMacro if it already exists
|
||||
if MacroFrame_SaveMacro then
|
||||
Extension.OnMacroFrameLoad()
|
||||
end
|
||||
|
||||
-- Register PLAYER_LOGIN to show status messages
|
||||
Extension.RegisterEvent("PLAYER_LOGIN", "OnPlayerLogin")
|
||||
-- Status messages on login (currently disabled inside OnPlayerLogin).
|
||||
EventUtil.ContinueOnPlayerLogin(Extension.OnPlayerLogin)
|
||||
|
||||
-- Store the message function for later
|
||||
Extension.ShowMessages = ShowMessages
|
||||
|
||||
@@ -6,7 +6,6 @@ local _G = _G or getfenv(0)
|
||||
local CleveRoids = _G.CleveRoids or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("CT_RaidAssist")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.OnEnter()
|
||||
local tempOptions = CT_RAMenu_Options["temp"]
|
||||
@@ -49,14 +48,10 @@ function Extension.OnLeave()
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
if arg1 ~= "CT_RaidAssist" then
|
||||
return
|
||||
end
|
||||
|
||||
Extension.Hook("CT_RA_MemberFrame_OnEnter", "OnEnter")
|
||||
Extension.HookMethod(_G["GameTooltip"], "Hide", "OnLeave")
|
||||
Extension.HookMethod(_G["GameTooltip"], "FadeOut", "OnLeave")
|
||||
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("CT_RaidAssist", Extension.OnLoad)
|
||||
|
||||
@@ -6,7 +6,6 @@ local _G = _G or getfenv(0)
|
||||
local CleveRoids = _G.CleveRoids or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("CT_UnitFrames")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.SetHook(widget)
|
||||
local hookedOnEnter = widget:GetScript("OnEnter")
|
||||
@@ -25,7 +24,7 @@ function Extension.SetHook(widget)
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
if arg1 ~= "CT_UnitFrames" or not CT_AssistFrame then
|
||||
if not CT_AssistFrame then
|
||||
return
|
||||
end
|
||||
CleveRoids.Print("CT_UnitFrames module loaded.")
|
||||
@@ -36,4 +35,4 @@ function Extension.OnLoad()
|
||||
Extension.SetHook(CT_AssistFrame_Drag)
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("CT_UnitFrames", Extension.OnLoad)
|
||||
|
||||
@@ -9,7 +9,6 @@ local CleveRoids = _G.CleveRoids or {}
|
||||
CleveRoids.Hooks = CleveRoids.Hooks or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("CursiveMouseover")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
local hooked = false
|
||||
|
||||
@@ -66,16 +65,13 @@ local function HookCursiveUI()
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
-- Try to hook when Cursive loads
|
||||
if arg1 == "Cursive" then
|
||||
-- Delay slightly to ensure Cursive.ui is initialized
|
||||
local frame = CreateFrame("Frame")
|
||||
frame:SetScript("OnUpdate", function()
|
||||
if HookCursiveUI() then
|
||||
this:Hide()
|
||||
end
|
||||
end)
|
||||
end
|
||||
-- Delay slightly to ensure Cursive.ui is initialized
|
||||
local frame = CreateFrame("Frame")
|
||||
frame:SetScript("OnUpdate", function()
|
||||
if HookCursiveUI() then
|
||||
this:Hide()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Also try to hook immediately in case Cursive is already loaded
|
||||
@@ -83,4 +79,4 @@ if Cursive and Cursive.ui then
|
||||
HookCursiveUI()
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("Cursive", Extension.OnLoad)
|
||||
|
||||
@@ -6,7 +6,6 @@ local _G = _G or getfenv(0)
|
||||
local CleveRoids = _G.CleveRoids or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("DiscordUnitFrames")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.OnEnterFrame()
|
||||
CleveRoids.SetMouseoverFrom("duf", this.unit)
|
||||
@@ -27,10 +26,6 @@ function Extension.OnLeaveElement()
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
if arg1 ~= "DiscordUnitFrames" then
|
||||
return
|
||||
end
|
||||
|
||||
CleveRoids.ClearHooks()
|
||||
Extension.Hook("DUF_UnitFrame_OnEnter", "OnEnterFrame")
|
||||
Extension.Hook("DUF_UnitFrame_OnLeave", "OnLeaveFrame")
|
||||
@@ -39,4 +34,4 @@ function Extension.OnLoad()
|
||||
Extension.Hook("DUF_Element_OnLeave", "OnLeaveElement")
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("DiscordUnitFrames", Extension.OnLoad)
|
||||
|
||||
@@ -8,7 +8,6 @@ local CleveRoids = _G.CleveRoids or {}
|
||||
CleveRoids.Hooks = CleveRoids.Hooks or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("Grid")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.OnEnter(unit)
|
||||
CleveRoids.SetMouseoverFrom("grid", unit)
|
||||
@@ -20,10 +19,6 @@ function Extension.OnLeave()
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
if arg1 ~= "Grid" then
|
||||
return
|
||||
end
|
||||
|
||||
CleveRoids.Hooks.Grid = { CreateFrames = GridFrame.frameClass.prototype.CreateFrames}
|
||||
GridFrame.frameClass.prototype.CreateFrames = CleveRoids.GrdCreateFrames
|
||||
end
|
||||
@@ -111,4 +106,4 @@ function CleveRoids:GrdCreateFrames()
|
||||
ClickCastFrames[self.frame] = true
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("Grid", Extension.OnLoad)
|
||||
|
||||
@@ -8,7 +8,6 @@ local CleveRoids = _G.CleveRoids or {}
|
||||
local CreateFrames = nil
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("NotGrid")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.OnEnter()
|
||||
CleveRoids.SetMouseoverFrom("ngrid", this.unit)
|
||||
@@ -48,7 +47,6 @@ function Extension.OnLoad()
|
||||
CreateFrames = NotGrid.CreateFrames
|
||||
NotGrid.CreateFrames = CleveRoids.NotGrid_CreateFrames
|
||||
|
||||
Extension.UnregisterEvent("ADDON_LOADED", "Onload")
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("NotGrid", Extension.OnLoad)
|
||||
|
||||
@@ -8,7 +8,6 @@ local CleveRoids = _G.CleveRoids or {}
|
||||
CleveRoids.Hooks = CleveRoids.Hooks or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("PerfectRaid")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.OnEnter(unit)
|
||||
CleveRoids.SetMouseoverFrom("praid", unit)
|
||||
@@ -20,10 +19,6 @@ function Extension.OnLeave()
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
if arg1 ~= "PerfectRaid" then
|
||||
return
|
||||
end
|
||||
|
||||
CleveRoids.Hooks.PerfectRaid = { CreateFrame = PerfectRaid.CreateFrame }
|
||||
PerfectRaid.CreateFrame = CleveRoids.PerfectRaidCreateFrame
|
||||
end
|
||||
@@ -134,4 +129,4 @@ function CleveRoids.PerfectRaidCreateFrame(self, num)
|
||||
--]]
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("PerfectRaid", Extension.OnLoad)
|
||||
|
||||
@@ -4,7 +4,6 @@ local CleveRoids = _G.CleveRoids or {}
|
||||
CleveRoids.Hooks = CleveRoids.Hooks or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("ag_UnitFrames")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension.OnEnter(unit)
|
||||
CleveRoids.SetMouseoverFrom("aguf", unit)
|
||||
@@ -23,7 +22,6 @@ function Extension.OnLoad()
|
||||
CleveRoids.Hooks.ag_UnitFrames = { OnEnter = aUF.classes.aUFunit.prototype.OnEnter, OnLeave = aUF.classes.aUFunit.prototype.OnLeave}
|
||||
aUF.classes.aUFunit.prototype.OnEnter = CleveRoids.aUFOnEnter
|
||||
aUF.classes.aUFunit.prototype.OnLeave = CleveRoids.aUFOnLeave
|
||||
Extension.UnregisterEvent("ADDON_LOADED", "Onload")
|
||||
end
|
||||
|
||||
-- Taken from ag_UnitClass.lua
|
||||
@@ -41,4 +39,4 @@ function CleveRoids:aUFOnLeave()
|
||||
end
|
||||
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("ag_UnitFrames", Extension.OnLoad)
|
||||
|
||||
@@ -6,7 +6,6 @@ local _G = _G or getfenv(0)
|
||||
local CleveRoids = _G.CleveRoids or {}
|
||||
|
||||
local Extension = CleveRoids.RegisterExtension("sRaidFrames")
|
||||
Extension.RegisterEvent("ADDON_LOADED", "OnLoad")
|
||||
|
||||
function Extension:OnEnter(frame)
|
||||
CleveRoids.SetMouseoverFrom("sraid", frame.unit)
|
||||
@@ -18,13 +17,9 @@ function Extension.OnLeave()
|
||||
end
|
||||
|
||||
function Extension.OnLoad()
|
||||
if arg1 ~= "sRaidFrames" then
|
||||
return
|
||||
end
|
||||
|
||||
Extension.HookMethod(sRaidFrames, "UnitTooltip", "OnEnter")
|
||||
Extension.HookMethod(_G["GameTooltip"], "Hide", "OnLeave")
|
||||
Extension.HookMethod(_G["GameTooltip"], "FadeOut", "OnLeave")
|
||||
end
|
||||
|
||||
_G["CleveRoids"] = CleveRoids
|
||||
EventUtil.ContinueOnAddOnLoaded("sRaidFrames", Extension.OnLoad)
|
||||
|
||||
Reference in New Issue
Block a user