Fix first Speech Message size
This commit is contained in:
parent
b17f37ee42
commit
45c722e271
5 changed files with 39 additions and 297 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue