You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.7 KiB

local _G = _G
local next = next
local hooksecurefunc = hooksecurefunc
local CreateFrame = CreateFrame
local IsAddOnLoaded = C_AddOns.IsAddOnLoaded
-- GLOBALS: ElvUI
local function OnMouseDown(self, button)
local text = self.Text:GetText()
if button == 'RightButton' then
ElvUI[1]:GetModule('Chat'):SetChatEditBoxMessage(text)
elseif button == 'MiddleButton' then
local rawData = self:GetParent():GetAttributeData().rawValue
if rawData.IsObjectType and rawData:IsObjectType('Texture') then
_G.TEX = rawData
ElvUI[1]:Print('_G.TEX set to: ', text)
else
_G.FRAME = rawData
ElvUI[1]:Print('_G.FRAME set to: ', text)
end
else
_G.TableAttributeDisplayValueButton_OnMouseDown(self)
end
end
local function UpdateLines(self)
local scrollFrame = self.LinesScrollFrame or _G.TableAttributeDisplay.LinesScrollFrame -- tinspect, or fstack ctrl
if not scrollFrame then return end
for _, child in next, { scrollFrame.LinesContainer:GetChildren() } do
if child.ValueButton and child.ValueButton:GetScript('OnMouseDown') ~= OnMouseDown then
child.ValueButton:SetScript('OnMouseDown', OnMouseDown)
end
end
end
local event = 'ADDON_LOADED'
local function Setup(frame)
if frame.Registered then return end
local debugTools = IsAddOnLoaded('Blizzard_DebugTools')
if debugTools then
hooksecurefunc(_G.TableInspectorMixin, 'RefreshAllData', UpdateLines) -- /tinspect
hooksecurefunc(_G.TableAttributeDisplay.dataProviders[2], 'RefreshData', UpdateLines) -- fstack ctrl
frame.Registered = true
if frame:IsEventRegistered(event) then
frame:UnregisterEvent(event)
end
elseif not frame:IsEventRegistered(event) then
frame:RegisterEvent(event)
end
end
local frame = CreateFrame('Frame')
frame:SetScript('OnEvent', Setup)
Setup(frame)