local barTexture = "Interface\\AddOns\\kehys\\images\\minimalist";
+local function showTooltip(frame)
+ GameTooltip_SetDefaultAnchor(GameTooltip, frame);
+ GameTooltip:SetUnit(frame:GetAttribute("unit"));
+end
+
+local function hideTooltip()
+ GameTooltip:FadeOut();
+end
+
local targetUpdate = nil;
local function initTarget(parent, width, height, update, event)
assert(type(parent) == "table", "Target frame creation missing parent!");
f:SetAttribute("displayed", "target");
f.unit = "target";
f.displayed = "target";
+ f.constant = true;
f.prev = {};
targetUpdate = function()
- CTimerAfter(0.1, targetUpdate);
- update(f);
+ if f.updating then
+ CTimerAfter(0.1, targetUpdate);
+ return update(f);
+ end
end
f:SetScript("OnEvent", event);
- f:SetScript("OnHide", function (frame) frame.prev = {} end);
- f:SetScript("OnShow", function (frame) update(frame) end);
+ f:SetScript("OnHide", function()
+ f:UnregisterAllEvents();
+ f.updating = false;
+ f.prev = {};
+ end);
+ f:SetScript("OnShow", function()
+ addon.RegisterEvents(f);
+ addon.RegisterUnitEvents(f);
+ event(f, "UPDATE_ALL_BARS");
+ f.updating = true;
+ targetUpdate();
+ end);
+ f:SetScript("OnEnter", showTooltip);
+ f:SetScript("OnLeave", hideTooltip);
f:RegisterForClicks("AnyDown");
f:SetAttribute("*type1", "target");
f:SetAttribute("*type2", "togglemenu");
f:SetAttribute("toggleForVehicle", false);
- RegisterUnitWatch(f);
-- create visuals
f.base = f:CreateTexture(nil, "BACKGROUND");
f.name:SetPoint("LEFT", f, "LEFT", 2, 8);
f.text = f:CreateFontString(nil, "OVERLAY", "GameFontHighlight");
f.text:SetPoint("RIGHT", f, "RIGHT", -2, 8);
- f.text:SetFont(STANDARD_TEXT_FONT, 13);
+ f.text:SetFont(STANDARD_TEXT_FONT, 15);
f.text:Hide();
f.targeticon = f:CreateTexture(nil, "OVERLAY");
f.targeticon:SetPoint("CENTER", f, "TOP", 0, -1);
f.targeticon:SetHeight(12);
f.targeticon:SetTexture("Interface\\TARGETINGFRAME\\UI-RaidTargetingIcons");
f.targeticon:Hide();
- f.status = f:CreateTexture(nil, "OVERLAY");
- f.status:SetPoint("TOPLEFT", f.background, "BOTTOMLEFT", -8, 8);
- f.status:SetPoint("BOTTOMRIGHT", f.background, "BOTTOMLEFT", 8, -8);
- f.status:SetTexture("Interface\\CHARACTERFRAME\\UI-StateIcon");
- f.status:Hide();
- addon.RegisterEvents(f);
- addon.RegisterUnitEvents(f);
- event(f, "UPDATE_ALL_BARS");
- targetUpdate();
- f:Show();
+ RegisterUnitWatch(f);
return f;
end