vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- Set both the parent and the position of GameTooltip
function TitanTooltip_SetOwnerPosition(parent, anchorPoint, relativeToFrame, relativePoint, xOffset, yOffset)
        GameTooltip:SetOwner(parent, "ANCHOR_NONE");
        GameTooltip:SetPoint(anchorPoint, relativeToFrame, relativePoint, xOffset, yOffset);
end

function TitanTooltip_SetGameTooltip()
        local fontscale = TitanPanelGetVar("FontScale");
        if ( this.tooltipCustomFunction ) then
                this.tooltipCustomFunction();
        elseif ( this.tooltipTitle ) then
                GameTooltip:SetText(this.tooltipTitle, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b); 
                if ( this.tooltipText ) then
                        TitanTooltip_AddTooltipText(this.tooltipText);
                end
        end
        if not TitanPanelGetVar("DisableFont") then
                GameTooltip:SetScale(fontscale);
        end

        GameTooltip:Show();
end

function TitanTooltip_SetPanelTooltip(id)
        if not TitanPanelGetVar("ToolTipsShown") then
                return;
        end

        if ( not this.tooltipCustomFunction and not this.tooltipTitle ) then
                return;
        end

        TITAN_PANEL_DROPOFF_ADDON = id;

        -- Set GameTooltip
        local button = TitanUtils_GetButton(id);
        local position = TitanPanelGetVar("Position");
        local scale = TitanPanelGetVar("Scale");        
        local offscreenX, offscreenY;
        local i = TitanPanel_GetButtonNumber(id);

        if (TitanPanelSettings.Location[i] == "Bar") then 
                if position == TITAN_PANEL_PLACE_TOP then
                        TitanTooltip_SetOwnerPosition(button, "TOPLEFT", button:GetName(), "BOTTOMLEFT", -10, -4 * scale);
                        TitanTooltip_SetGameTooltip();
        
                        -- Adjust GameTooltip position if it's off the screen
                        offscreenX, offscreenY = TitanUtils_GetOffscreen(GameTooltip);
                        if ( offscreenX == -1 ) then
                                TitanTooltip_SetOwnerPosition(button, "TOPLEFT", "TitanPanelBarButton", "BOTTOMLEFT", 0, 0);
                                TitanTooltip_SetGameTooltip();
                        elseif ( offscreenX == 1 ) then
                                TitanTooltip_SetOwnerPosition(button, "TOPRIGHT", "TitanPanelBarButton", "BOTTOMRIGHT", 0, 0);
                                TitanTooltip_SetGameTooltip();  
                        end     
                else
                        TitanTooltip_SetOwnerPosition(button, "BOTTOMLEFT", button:GetName(), "TOPLEFT", -10, 4 * scale);
                        TitanTooltip_SetGameTooltip();
        
                        -- Adjust GameTooltip position if it's off the screen
                        offscreenX, offscreenY = TitanUtils_GetOffscreen(GameTooltip);
                        if ( offscreenX == -1 ) then
                                TitanTooltip_SetOwnerPosition(button, "BOTTOMLEFT", "TitanPanel" .. TitanPanelSettings.Location[i] .."Button", "TOPLEFT", 0, 0);
                                TitanTooltip_SetGameTooltip();  
                        elseif ( offscreenX == 1 ) then
                                TitanTooltip_SetOwnerPosition(button, "BOTTOMRIGHT", "TitanPanel" .. TitanPanelSettings.Location[i] .."Button", "TOPRIGHT", 0, 0);
                                TitanTooltip_SetGameTooltip();  
                        end
                end
        else
                TitanTooltip_SetOwnerPosition(button, "BOTTOMLEFT", button:GetName(), "TOPLEFT", -10, 4 * scale);
                TitanTooltip_SetGameTooltip();
        
                -- Adjust GameTooltip position if it's off the screen
                offscreenX, offscreenY = TitanUtils_GetOffscreen(GameTooltip);
                if ( offscreenX == -1 ) then
                        TitanTooltip_SetOwnerPosition(button, "BOTTOMLEFT", "TitanPanelAuxBarButton", "TOPLEFT", 0, 0);
                        TitanTooltip_SetGameTooltip();  
                elseif ( offscreenX == 1 ) then
                        TitanTooltip_SetOwnerPosition(button, "BOTTOMRIGHT", "TitanPanelAuxBarButton", "TOPRIGHT", 0, 0);
                        TitanTooltip_SetGameTooltip();  
                end
        end
end

function TitanTooltip_AddTooltipText(text)
        if ( text ) then
                -- Append a "\n" to the end 
                if ( string.sub(text, -1, -1) ~= "\n" ) then
                        text = text.."\n";
                end
                
                for text1, text2 in string.gfind(text, "([^\t\n]*)\t?([^\t\n]*)\n") do
                        if ( text2 ~= "" ) then
                                GameTooltip:AddDoubleLine(text1, text2);
                        elseif ( text1 ~= "" ) then
                                GameTooltip:AddLine(text1);
                        else
                                GameTooltip:AddLine("\n");
                        end                     
                end
        end
end