Thread Tools Display Modes
03-25-13, 07:55 PM   #1
CobraA1
A Cliff Giant
 
CobraA1's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2008
Posts: 73
Tooltip scanning issues

EDIT: Nevermind, I eventually figured it out.

Sigh - I have the following code:

Code:
print("==LOADED==")

MyScanningTooltip = CreateFrame( "GameTooltip", "MyScanningTooltip", nil, "GameTooltipTemplate" ); -- Tooltip name cannot be nil
MyScanningTooltip:SetOwner( WorldFrame, "ANCHOR_NONE" );

MyScanningTooltip:ClearLines()
 

local function EnumerateTooltipLines_helper(...)
  print("EnumerateTooltipLines_helper")
    for i = 1, select("#", ...) do
    print(i)
        local region = select(i, ...)
        if region and region:GetObjectType() == "FontString" then
            local text = region:GetText() -- string or nil
            if text ~= nil then 
                print("=="..text.."==")
            else
                print("NIL!")
            end
        end
    end
end

function EnumerateTooltipLines(tooltip) -- good for script handlers that pass the tooltip as the first argument.
    EnumerateTooltipLines_helper(tooltip:GetRegions())
end

MyScanningTooltip:ClearLines()
MyScanningTooltip:SetBagItem(bagID, bagSlotID);
EnumerateTooltipLines_helper(MyScanningTooltip:GetRegions())
Problem is, it returns a lot of nil lines, and I'm not entirely sure how tooltip scanning is supposed to work. Help?

Last edited by CobraA1 : 03-25-13 at 11:26 PM.
  Reply With Quote
03-25-13, 11:37 PM   #2
Phanx
Cat.
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 5,617
Enumerating regions is not really ideal... not only will it give you things that aren't fontstrings, but it'll give you all the fontstrings in the tooltip, even the ones that aren't in use. Here's a better way:

Code:
for i = 1, MyScanningTooltip:NumLines() do
    local left = _G["MyScanningTooltipTextLeft"..i]
    local text = left:GetText()
    if text and text ~= "" then
        -- do something with the text
    end
end
Also, when using the SetX methods (SetBagItem, SetItem, SetSpell, etc.) it's not necessary to use ClearLines; that happens automatically. The only reason to use ClearLines is to redraw the contents of an open tooltip without reopening it, and I can't really think of any good use-cases for doing that either.
__________________
Retired author of too many addons.
Message me if you're interested in taking over one of my addons.
Don’t message me about addon bugs or programming questions.
  Reply With Quote

WoWInterface » AddOns, Compilations, Macros » AddOn Help/Support » Tooltip scanning issues

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off