local _, Cell = ... local F = Cell.funcs local P = Cell.pixelPerfectFuncs ----------------------------------------- -- Tooltip ----------------------------------------- local function CreateTooltip(name, hasIcon) local tooltip = CreateFrame("GameTooltip", name, nil, "CellTooltipTemplate,BackdropTemplate") tooltip:SetBackdrop({bgFile = Cell.vars.whiteTexture, edgeFile = Cell.vars.whiteTexture, edgeSize = 1}) tooltip:SetBackdropColor(0.1, 0.1, 0.1, 0.9) tooltip:SetBackdropBorderColor(Cell:GetAccentColorRGB()) tooltip:SetOwner(UIParent, "ANCHOR_NONE") if hasIcon then local iconBG = tooltip:CreateTexture(nil, "BACKGROUND") tooltip.iconBG = iconBG iconBG:SetSize(35, 35) iconBG:SetPoint("TOPRIGHT", tooltip, "TOPLEFT", -1, 0) iconBG:SetColorTexture(Cell:GetAccentColorRGB()) iconBG:Hide() local icon = tooltip:CreateTexture(nil, "ARTWORK") tooltip.icon = icon P:Point(icon, "TOPLEFT", iconBG, 1, -1) P:Point(icon, "BOTTOMRIGHT", iconBG, -1, 1) icon:SetTexCoord(0.08, 0.92, 0.08, 0.92) icon:Hide() hooksecurefunc(tooltip, "SetSpellByID", function(self, id, tex) if tex then iconBG:Show() icon:SetTexture(tex) icon:Show() end end) end if Cell.isRetail then tooltip:RegisterEvent("TOOLTIP_DATA_UPDATE") tooltip:SetScript("OnEvent", function() -- Interface\FrameXML\GameTooltip.lua line924 tooltip:RefreshData() end) end tooltip:SetScript("OnTooltipCleared", function() -- reset border color tooltip:SetBackdropBorderColor(Cell:GetAccentColorRGB()) end) -- tooltip:SetScript("OnTooltipSetItem", function() -- -- color border with item quality color -- tooltip:SetBackdropBorderColor(_G[name.."TextLeft1"]:GetTextColor()) -- end) tooltip:SetScript("OnHide", function() -- SetX with invalid data may or may not clear the tooltip's contents. tooltip:ClearLines() if hasIcon then tooltip.iconBG:Hide() tooltip.icon:Hide() end end) function tooltip:UpdatePixelPerfect() tooltip:SetBackdrop({bgFile = Cell.vars.whiteTexture, edgeFile = Cell.vars.whiteTexture, edgeSize = P:Scale(1)}) tooltip:SetBackdropColor(0.1, 0.1, 0.1, 0.9) tooltip:SetBackdropBorderColor(Cell:GetAccentColorRGB()) if hasIcon then P:Repoint(tooltip.icon) tooltip.iconBG:SetColorTexture(Cell:GetAccentColorRGB()) end end end CreateTooltip("CellTooltip") CreateTooltip("CellSpellTooltip", true) -- CreateTooltip("CellScanningTooltip") function F:ShowSpellTooltips(tooltip, spellID) local tooltipInfo = CreateBaseTooltipInfo("GetSpellByID", spellID) tooltip:ProcessInfo(tooltipInfo) tooltip:Show() end function F:ShowTooltips(anchor, tooltipType, unit, aura, filter) if not CellDB["general"]["enableTooltips"] or (tooltipType == "unit" and CellDB["general"]["hideTooltipsInCombat"] and InCombatLockdown()) then return end if CellDB["general"]["tooltipsPosition"][2] == "Default" then GameTooltip_SetDefaultAnchor(GameTooltip, anchor) elseif CellDB["general"]["tooltipsPosition"][2] == "Cell" then GameTooltip:SetOwner(Cell.frames.mainFrame, "ANCHOR_NONE") GameTooltip:SetPoint(CellDB["general"]["tooltipsPosition"][1], Cell.frames.mainFrame, CellDB["general"]["tooltipsPosition"][3], CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5]) elseif CellDB["general"]["tooltipsPosition"][2] == "Unit Button" then GameTooltip:SetOwner(anchor, "ANCHOR_NONE") GameTooltip:SetPoint(CellDB["general"]["tooltipsPosition"][1], anchor, CellDB["general"]["tooltipsPosition"][3], CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5]) elseif CellDB["general"]["tooltipsPosition"][2] == "Cursor" then GameTooltip:SetOwner(anchor, "ANCHOR_CURSOR") elseif CellDB["general"]["tooltipsPosition"][2] == "Cursor Left" then GameTooltip:SetOwner(anchor, "ANCHOR_CURSOR_LEFT", CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5]) elseif CellDB["general"]["tooltipsPosition"][2] == "Cursor Right" then GameTooltip:SetOwner(anchor, "ANCHOR_CURSOR_RIGHT", CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5]) end if tooltipType == "unit" then GameTooltip:SetUnit(unit) elseif tooltipType == "spell" and unit and aura then -- GameTooltip:SetSpellByID(aura) GameTooltip:SetUnitAura(unit, aura, filter) end end