mirror of
https://github.com/brues-code/SuperCleveRoidMacros.git
synced 2026-09-16 03:38:00 +00:00
Name the macro slot count
Three loops walked 1..36 by hand, two of them re-arguing in comments why 36 is the right number. It is: the client addresses 18 account-wide macros at 1-18 and 18 character-specific ones at 19-36, and that range is what GetMacroInfo and C_Macro.SetMacroDisplay index. Nothing in the API hands it back -- GetNumMacros() returns how many of each tab are used, which cannot be summed into a range, because the character block still starts at 19 when the account block is empty. Blizzard's MAX_MACROS is no better: it lives in the load-on-demand Blizzard_MacroUI and is nil until the macro window is opened. So CleveRoids.MAX_MACRO_SLOTS in Init.lua, carrying that reasoning once. ValidateAllMacros also dropped a numAccountMacros it computed and never read. ReleaseDisplays keeps sweeping the full range rather than the macros it knows it published: PublishAllDisplays clears that record on each re-parse, so a macro claimed before one and gone after it would keep our last published value forever. Releasing a slot we never claimed costs nothing, and it runs once.
This commit is contained in:
@@ -1173,7 +1173,11 @@ end
|
||||
-- Hand every macro back to ClassicAPI's own parser and stop claiming ownership.
|
||||
function CleveRoids.ReleaseDisplays()
|
||||
if not CleveRoids.ClassicAPIMacroDisplay then return end
|
||||
for i = 1, 36 do
|
||||
-- Sweep the whole index space rather than the macros we know we published:
|
||||
-- PublishAllDisplays clears that record on every re-parse, so a macro claimed
|
||||
-- before one and gone after it would keep our last value forever. Releasing a
|
||||
-- slot we never claimed costs nothing, and this runs once.
|
||||
for i = 1, CleveRoids.MAX_MACRO_SLOTS do
|
||||
C_Macro.SetMacroDisplay(i, nil)
|
||||
end
|
||||
publishedDisplay = {}
|
||||
|
||||
Reference in New Issue
Block a user