Can not save UI layouts in edit mode when frames are connected to other frames

I have found an error with the UI when trying to save a layout when certain frames are “glued” or attached to other frames (where two frames are able to be moved together.) When attempting to save such you are met with a LUA error and unable to save, whichever frame is effected then looses functionality until a UI reload. This effects at the least: Raid frames, boss frames, arena frames, and party frames.

The work around I have found is to turn down the grid spacing, move each frame separately so they are not attached, and then make sure to leave a gap between each frame.

Because of this I believe the issue stems from an error with the implementation of the anchoring feature referencing a stale or bad value when the anchor of a frame is changed from the default top left anchor to reference another frame.

example of LUA errors

LUA error for raid frames Message: Interface/FrameXML/EditModeSystemTemplates.lua:473: attempt to perform arithmetic on a nil value Time: Thu Dec 1 10:54:37 2022 Count: 2 Stack: Interface/FrameXML/EditModeSystemTemplates.lua:473: attempt to perform arithmetic on a nil value [string "@Interface/FrameXML/EditModeSystemTemplates.lua"]:473: in function `BreakFrameSnap' [string "@Interface/FrameXML/EditModeSystemTemplates.lua"]:41: in function `PrepareForSave' [string "@Interface/FrameXML/EditModeManager.lua"]:1118: in function `PrepareSystemsForSave' [string "@Interface/FrameXML/EditModeManager.lua"]:1123: in function `SaveLayouts' [string "@Interface/FrameXML/EditModeManager.lua"]:1132: in function [string "=(tail call)"]: ? [string "@Interface/SharedXML/SharedUIPanelTemplates.lua"]:1198: in function

Locals: self = CompactRaidFrameContainer {
0 =
GetUnitFrame = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:315
UpdateMagnetismRegistration = defined @Interface/FrameXML/EditModeSystemTemplates.lua:521
GetSnapOffsets = defined @Interface/FrameXML/EditModeSystemTemplates.lua:421
systemInfo = {
}
IsFrameAnchoredToMe = defined @Interface/FrameXML/EditModeSystemTemplates.lua:484
ApplyToFrames = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:115
alwaysUseTopLeftAnchor = true
breakSnappedFramesOnSave = true
SetFlowSortFunction = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:89
SetBorderShown = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:110
UseCombinedGroups = defined @Interface/FrameXML/EditModeSystemTemplates.lua:877
ResetToDefaultPosition = defined @Interface/FrameXML/EditModeSystemTemplates.lua:158
GetScaledSelectionSides = defined @Interface/FrameXML/EditModeSystemTemplates.lua:365
SelectSystem = defined @Interface/FrameXML/EditModeSystemTemplates.lua:549
GetFrameMagneticEligibility = defined @Interface/FrameXML/EditModeSystemTemplates.lua:504
UpdateSystemSettingUseLargerFrame = defined @Interface/FrameXML/EditModeSystemTemplates.lua:986
AddLayoutChildren = defined @Interface/SharedXML/LayoutFrame.lua:48
IsBelowFrame = defined @Interface/FrameXML/EditModeSystemTemplates.lua:332
SetScaleBase = defined =[C]:-1
HasActiveChanges = defined @Interface/FrameXML/EditModeSystemTemplates.lua:254
AddFlaggedUnits = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:274
flowFilterFunc = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameManager.lua:523
DoesSettingDisplayValueEqual = defined @Interface/FrameXML/EditModeSystemTemplates.lua:278
OnLoad = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:14
UpdateDisplayInfoOptions = defined @Interface/FrameXML/EditModeSystemTemplates.lua:289
settingDisplayInfoMap =

{
}
GetSettingValueBool = defined @Interface/FrameXML/EditModeSystemTemplates.lua:269
TryUpdate = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:126
IsLayoutFrame = defined @Interface/SharedXML/LayoutFrame.lua:36
DoesSettingValueEqual = defined @Interface/FrameXML/EditModeSystemTemplates.lua:273
MarkDirty = defined @Interface/SharedXML/LayoutFrame.lua:90
UpdateSelectionVerticalState = defined @Interface/FrameXML/EditModeSystemTemplates.lua:1101
AddUnitFrame = defined @Interface/AddOns/Blizzard_CompactRaidFrames/Blizzard_CompactRaidFrameContainer.lua:303
Add

1 Like