local CreateFrame = CreateFrame;
local CTimerAfter = C_Timer.After;
+local guids = addon.FrameGuids;
local updaters = {};
local function showTooltip(frame)
GameTooltip_SetDefaultAnchor(GameTooltip, frame);
assert(type(width) == "number", "Frame creation missing width!");
assert(type(height) == "number", "Frame creation missing height!");
assert(type(unit) == "string", "Frame creation missing unit!");
- assert(type(attributes) == "table",
- "Frame creation missing attributes table!");
assert(type(update) == "function",
"Frame creation missing update function!");
assert(type(event) == "function",
"Frame creation missing event function!");
assert(type(onshow) == "function",
"Frame creation missing onshow function!");
+ if type(attributes) ~= "table" then
+ attributes = {};
+ end
local f = CreateFrame(
"Button",
f.displayed = unit;
f.vehicle = unit == "player" and "vehicle" or format("%spet", unit);
f.prev = {} -- values stored from previous update
+ f.alert = {}; -- alerting auras
+ f.heal = {}; -- high healing auras
-- set up periodic updates
updaters[f] = function()
if f.updating then
f:SetScript("OnHide", function()
f:UnregisterAllEvents();
f.updating = false;
+ if f.guid then
+ guids[f.guid] = nil;
+ f.guid = nil;
+ end
end);
f:SetScript("OnEvent", event);
f:SetScript("OnEnter", showTooltip);