Fix first Speech Message size

This commit is contained in:
Roman Jaroš 2025-03-08 08:48:11 +01:00
parent b17f37ee42
commit 45c722e271
5 changed files with 39 additions and 297 deletions

View file

@ -3,18 +3,39 @@ local messages = {}
local GAP = 2
local function ReflowMessages()
local function ShowSpeech(Frame, offsetY)
Frame:ClearAllPoints()
Frame:SetPoint("BOTTOMLEFT", addon.SpeechFrame, "BOTTOMLEFT", 0, offsetY)
Frame:SetHeight(Frame.Message:GetStringHeight() + 10)
return Frame
end
local function ReflowMessages(requery)
local offsetY = 0
for i = #messages, 1, -1 do
local Frame = messages[i]
Frame:ClearAllPoints()
Frame:SetPoint("BOTTOMLEFT", addon.SpeechFrame, "BOTTOMLEFT", 0, offsetY)
Frame:Show()
offsetY = offsetY + Frame:GetHeight() + GAP
end
if #messages == 0 then
addon.SpeechFrame:Hide()
return
end
if #messages == 1 then
local Frame = messages[1]
ShowSpeech(Frame, offsetY)
Frame:Show()
local height = Frame.Message:GetStringHeight()
if height == 0 and not requery then
Frame:Hide()
C_Timer.After(0.5, function()
ReflowMessages(true)
end)
return
end
end
for i = #messages, 1, -1 do
local Frame = messages[i]
ShowSpeech(Frame, offsetY)
offsetY = offsetY + Frame:GetHeight() + GAP
end
end
@ -39,14 +60,15 @@ local function RemoveMessage(frame)
end
local function AddMessage(sender, message)
local text = string.format("|cffffd200%s|r\n%s", sender, message)
local MessageFrame = addon.SpeechFrame:CreateMessage(text)
addon.SpeechFrame:Show()
local text = string.format("|cffffd200%s|r\n%s", sender, message)
local MessageFrame = addon.SpeechFrame:CreateMessage()
MessageFrame.Message:SetText(text)
-- put into table and rerender while queue
table.insert(messages, MessageFrame)
ReflowMessages()
-- hide after timeout
C_Timer.After(20, function()
RemoveMessage(MessageFrame)
end)
@ -58,7 +80,6 @@ local function ShowSpeechTranslation(sender, message)
text = message
end
if text ~= nil then
addon.SpeechFrame:Show()
AddMessage(sender, text)
end
end

View file

@ -35,7 +35,7 @@ function SpeechFrame:UpdateSettings()
)
end
function SpeechFrame:CreateMessage(message)
function SpeechFrame:CreateMessage()
local frame = self
local MessageFrame = CreateFrame("Frame", nil, frame)
@ -58,8 +58,5 @@ function SpeechFrame:CreateMessage(message)
MessageFrame.Texture:SetPoint("TOPLEFT", MessageFrame ,"TOPLEFT", 0, 0)
MessageFrame.Texture:SetPoint("BOTTOMRIGHT", MessageFrame ,"BOTTOMRIGHT", 0, 0)
MessageFrame.Message:SetText(message)
MessageFrame:SetHeight(MessageFrame.Message:GetHeight() + 10)
return MessageFrame
end