From e2a931c57b31fe0f8a2d847601f6d237e57ea191 Mon Sep 17 00:00:00 2001 From: Glyalith Date: Thu, 10 Sep 2026 14:44:40 -0600 Subject: [PATCH] raidframes: suppress intermediate relayouts while retargeting the flat header Changing point, xOffset, yOffset and columnAnchorPoint one at a time relayouts visible children after each write, and a pass that has taken the new point but not yet the new column anchor can leave both the old and the new point sitting on column starts. Set the header's _ignore for the run of writes so the Hide/Show below rebuilds once from the complete layout, the same way Blizzard's own setAttributesWithoutResponse brackets a group of header attributes. Reported and confirmed fixed by the reporter on 9.1.7. --- EllesmereUIRaidFrames/EllesmereUIRaidFrames.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/EllesmereUIRaidFrames/EllesmereUIRaidFrames.lua b/EllesmereUIRaidFrames/EllesmereUIRaidFrames.lua index cb828f0ee..f4b669213 100644 --- a/EllesmereUIRaidFrames/EllesmereUIRaidFrames.lua +++ b/EllesmereUIRaidFrames/EllesmereUIRaidFrames.lua @@ -7385,7 +7385,12 @@ ns._LayoutGroupsImpl = function() or ns._flatHeader:GetAttribute("xOffset") ~= hdrXOff or ns._flatHeader:GetAttribute("yOffset") ~= hdrYOff or ns._flatHeader:GetAttribute("columnAnchorPoint") ~= colAnchor then - -- Clear child anchors before changing layout direction + -- Attribute changes normally relayout visible children immediately. + -- Suppress those intermediate passes: changing point before the + -- column anchor can leave both old and new points on column starts. + -- The Hide/Show below rebuilds once with the complete layout. + local oldIgnore = ns._flatHeader:GetAttribute("_ignore") + ns._flatHeader:SetAttribute("_ignore", true) local ci, child = 1, ns._flatHeader:GetAttribute("child1") while child do child:ClearAllPoints() @@ -7396,6 +7401,7 @@ ns._LayoutGroupsImpl = function() ns._flatHeader:SetAttribute("xOffset", hdrXOff) ns._flatHeader:SetAttribute("yOffset", hdrYOff) ns._flatHeader:SetAttribute("columnAnchorPoint", colAnchor) + ns._flatHeader:SetAttribute("_ignore", oldIgnore) layoutChanged = true end if ns._flatHeader:GetAttribute("columnSpacing") ~= gs then