Quantcast

local f = CreateFrame("frame","xanHoudiniTooltip_frame",UIParent)
f:SetScript("OnEvent", function(self, event, ...) if self[event] then return self[event](self, event, ...) end end)

local auraSwitch = false

----------------------
--      Enable      --
----------------------

local function processAuraTooltip(self, unitid, index, filter)
	auraSwitch = true
end

local function processCombatTooltip(self, unitid, index, filter)
	if InCombatLockdown() then
		self:Hide()
		return
	end
end

function f:PLAYER_LOGIN()

	-- GameTooltip:HookScript("OnShow", function(self)
		-- local name, unitid = self:GetUnit()
		-- local parent = self:GetParent()
		-- if InCombatLockdown() and not auraSwitch then
			-- self:Hide()
			-- return
		-- end
	-- end)

	GameTooltip:HookScript("OnHide", function(self)
		auraSwitch = false
	end)

	GameTooltip:HookScript("OnUpdate", function(self, elapsed)
		if self:IsShown() and InCombatLockdown() and not auraSwitch then
			self:Hide()
		end
	end)

	--decide if we want to show aura tooltips while in battle
	hooksecurefunc(GameTooltip, "SetUnitAura", processAuraTooltip)
	hooksecurefunc(GameTooltip, "SetUnitBuff", processAuraTooltip)
	hooksecurefunc(GameTooltip, "SetUnitDebuff", processAuraTooltip)

	-- hooksecurefunc(GameTooltip, "SetUnit", processCombatTooltip)
	-- hooksecurefunc(GameTooltip, "SetAction", processCombatTooltip)
	-- hooksecurefunc(GameTooltip, "SetPetAction", processCombatTooltip)
	-- hooksecurefunc(GameTooltip, "SetShapeshift", processCombatTooltip)
	-- hooksecurefunc(GameTooltip, "SetInventoryItem", processCombatTooltip)

	-- hooksecurefunc(GameTooltip, "SetBagItem", processCombatTooltip)
	-- hooksecurefunc(GameTooltip, "SetHyperlink", processCombatTooltip)

	self:UnregisterEvent("PLAYER_LOGIN")
	self.PLAYER_LOGIN = nil
end

if IsLoggedIn() then f:PLAYER_LOGIN() else f:RegisterEvent("PLAYER_LOGIN") end