|
|
|
|
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
|