local mod = StarTip:NewModule("Nameplates", "AceTimer-3.0") mod.name = "Hide Nameplates" mod.toggled = true mod.desc = "Toggle this module on to cause the tooltip to hide when mousing over nameplates and the control key is down." mod.defaultOff = true local _G = _G local StarTip = _G.StarTip local GameTooltip = _G.GameTooltip local GameTooltipStatusBar = _G.GameTooltipStatusBar local UnitIsPlayer = _G.UnitIsPlayer local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS local UnitSelectionColor = _G.UnitSelectionColor local UnitClass = _G.UnitClass local self = mod local LSM = LibStub("LibSharedMedia-3.0") local WidgetHistogram = LibStub("LibScriptableWidgetHistogram-1.0") local LibCore = LibStub("LibScriptableLCDCore-1.0") local LibTimer = LibStub("LibScriptableUtilsTimer-1.0") local PluginUtils = LibStub("LibScriptablePluginUtils-1.0") local unit local environment = {} local createNameplates local widgets = {} local anchors = { "TOP", "TOPRIGHT", "TOPLEFT", "BOTTOM", "BOTTOMRIGHT", "BOTTOMLEFT", "RIGHT", "LEFT", "CENTER" } local anchorsDict = {} for i, v in ipairs(anchors) do anchorsDict[v] = i end local function copy(tbl) if type(tbl) ~= "table" then return tbl end local newTbl = {} for k, v in pairs(tbl) do newTbl[k] = copy(v) end return newTbl end local defaults = { profile = { } } local options = {} local optionsDefaults = { } local update function mod:OnInitialize() self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) self.timer = LibTimer:New("Nameplates", 300, true, update) end function mod:OnEnable() StarTip:SetOptionsDisabled(options, false) self.timer:Start() end function mod:OnDisable() StarTip:SetOptionsDisabled(options, true) self.timer:Stop() end function mod:GetOptions() return options end local function isNameplate(frame) local region = frame:GetRegions() return region and region:GetObjectType() == "Texture" and region:GetTexture() == "Interface\\TargetingFrame\\UI-TargetingFrame-Flash" end local anchor = CreateFrame("Frame", "StarTipNameplateAnchor") local size = 50 anchor:SetWidth(size) anchor:SetHeight(size) anchor:Show() local frames = {} function update() for i = 1, select("#", WorldFrame:GetChildren()) do frame = select(i, WorldFrame:GetChildren()) if isNameplate(frame) then if UnitExists("mouseover") then local x, y = GetCursorPosition() anchor:ClearAllPoints() anchor:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", x - size / 2, y - size / 2) if PluginUtils.Intersect(anchor, frame) and IsControlKeyDown() then GameTooltip:Hide() break end end end end end function mod:OnHide() self.timer:Stop() end function mod:SetUnit() self.timer:Start() end