From 8e185b368abf161f4086a404f749cb223b772d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Jaro=C5=A1?= Date: Sun, 4 May 2025 12:49:59 +0200 Subject: [PATCH] Show SpeechFrame after resetting its position --- Addon/Code/Options.lua | 1 + Addon/Code/Speech.lua | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Addon/Code/Options.lua b/Addon/Code/Options.lua index effc25e..b37175f 100644 --- a/Addon/Code/Options.lua +++ b/Addon/Code/Options.lua @@ -107,6 +107,7 @@ local function InitSpeeches() CreateButton('Resetovat pozici okna', "RESET", function() CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_X = 0 CzechQuestsAddon_Store.config.SPEECH_FRAME_POSITION_Y = 0 + addon.SpeechFrame:Show() addon.SpeechFrame:UpdateSettings() end) diff --git a/Addon/Code/Speech.lua b/Addon/Code/Speech.lua index b2beb1d..eafb17e 100755 --- a/Addon/Code/Speech.lua +++ b/Addon/Code/Speech.lua @@ -8,11 +8,13 @@ local function ShowSpeech(Frame, offsetY) Frame:ClearAllPoints() Frame:SetPoint("BOTTOMLEFT", addon.SpeechFrame, "BOTTOMLEFT", 0, offsetY) Frame:SetHeight(Frame.Message:GetStringHeight() + 10) + Frame:Show() return Frame end local function ReflowMessages(requery) local offsetY = 0 + local waitingForHeights = false if #messages == 0 then addon.SpeechFrame:Hide() @@ -23,14 +25,16 @@ local function ReflowMessages(requery) local Frame = messages[i] ShowSpeech(Frame, offsetY) local height = Frame.Message:GetStringHeight() - if height == 0 and not requery then - Frame:Hide() - C_Timer.After(0.5, function() - ReflowMessages(true) - end) - return + if height == 0 then + waitingForHeights = true end - offsetY = offsetY + Frame:GetHeight() + GAP + offsetY = offsetY + math.max(Frame:GetHeight(), 10) + GAP + end + + if waitingForHeights and not requery then + C_Timer.After(0.05, function() + ReflowMessages(true) + end) end end