Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions EllesmereUIRaidFrames/EllesmereUIRaidFrames.lua
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,12 @@ local defaults = {
dispelIconOffsetX = 0,
dispelIconOffsetY = 0,
dispelIconSize = 16,
-- 12.1 dispel ring thickness in physical pixels (-1 follows the icon's own
-- Border, 0 hides it). Stored explicitly rather than left to the `or 2`
-- read fallback: ReloadPartyFrames temp-swaps party values onto db.profile
-- and restores from a table keyed by the raid value, so a key with no
-- default is absent from that table and its party value would stick.
dispelIconBorderSize = 2,
dispelClockBorder = false, -- animated clock-style dispel border (erases clockwise) on dispellable debuff icons
dispelClockExtraBorder = 0, -- extra physical pixels added to the clock border thickness (on top of debuffBorderSize)
dispellableDebuffLocation = "same", -- "same" = use the main debuff layout; else a separate anchor for dispellable debuffs
Expand Down Expand Up @@ -10580,11 +10586,20 @@ do
"hoverBorderEnabled", "hoverBorderSize", "hoverBorderColor", "hoverBorderAlpha",
"targetBorderEnabled", "targetBorderSize", "targetBorderColor", "targetBorderAlpha", "threatBorderSize",
},
-- Must list every key the DISPELS section of the options page draws:
-- the party tab's blocking overlay is sized from that section's y-range,
-- so a control there is editable whenever "dispels" is unsynced. A key
-- filed under another section (or missing) is still editable but writes
-- the shared raid value.
dispels = {
"dispelBorderSize", "dispelOverlay", "dispelOverlayOpacity", "dispelShowAll",
"showDispelIcons", "dispelIconPosition", "dispelIconOffsetX", "dispelIconOffsetY", "dispelIconSize",
"dispelColorMagic", "dispelColorCurse", "dispelColorDisease",
"dispelColorPoison", "dispelColorBleed",
"dispelIconBorderSize", "dispelOverlayPosition",
"dispelClockBorder", "dispelClockExtraBorder",
"dispellableDebuffLocation", "dispellableDebuffGrowDirection",
"dispellableDebuffOffsetX", "dispellableDebuffOffsetY", "dispellableDebuffSize",
},
topNameBar = {
"topNameBarEnabled", "topNameBarHeight",
Expand All @@ -10610,8 +10625,8 @@ do
"debuffPosition", "debuffOffsetX", "debuffOffsetY",
"debuffGrowDirection", "debuffPerRow", "debuffWrapDirection",
"debuffCap", "debuffHideTooltips",
"dispellableDebuffLocation", "dispellableDebuffGrowDirection",
"dispellableDebuffOffsetX", "dispellableDebuffOffsetY", "dispellableDebuffSize",
-- The dispellableDebuff* keys live in "dispels": that is the section
-- whose header their controls are drawn under.
},
debuffStyle = {
"debuffSize", "debuffIconZoom", "debuffBorderSize", "debuffBorderColor", "debuffSpacing",
Expand Down
39 changes: 39 additions & 0 deletions EllesmereUI_Migration.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4356,3 +4356,42 @@ EllesmereUI.RegisterMigration({
if type(p) == "table" then p.showCastTarget = false end
end,
})

--------------------------------------------------------------------------------
-- Raid Frames: dispellableDebuff* keys moved party-sync sections
--
-- Their controls are drawn under the DISPELS header but the keys were filed
-- under "debuffDisplay", so on the Party tab they were editable whenever
-- Dispels was unsynced while the write routed through Debuff Display. They now
-- file under "dispels".
--
-- Writing one required BOTH sections custom, but re-syncing DISPELS afterwards
-- only deleted keys mapped to "dispels", so these could survive as a live
-- override under a custom Debuff Display with Dispels synced. Under the new
-- mapping that value would go dormant; the mirror case (dormant under a synced
-- Debuff Display, live once Dispels is custom) would switch on.
--
-- Clear the override whenever its live/dormant state would flip. In the
-- flip-to-live case that preserves exactly what the party renders today; in
-- the flip-to-dormant case the party inherits raid either way, and clearing
-- stops the value reviving later. An override live in BOTH mappings (both
-- sections custom, the normal case) is left untouched.
--------------------------------------------------------------------------------
EllesmereUI.RegisterMigration({
id = "rf_dispellable_debuff_party_section_v1",
scope = "profile",
description = "Clear dispellableDebuff* party overrides whose live/dormant state would flip when the keys moved to the Dispels sync section.",
body = function(ctx)
local rf = ctx.profile.addons and ctx.profile.addons.EllesmereUIRaidFrames
if type(rf) ~= "table" then return end
local ss = type(rf.partySyncSections) == "table" and rf.partySyncSections or nil
local wasLive = (ss and ss.debuffDisplay == false) and true or false
local willBeLive = (ss and ss.dispels == false) and true or false
if wasLive == willBeLive then return end
rf.party_dispellableDebuffLocation = nil
rf.party_dispellableDebuffGrowDirection = nil
rf.party_dispellableDebuffOffsetX = nil
rf.party_dispellableDebuffOffsetY = nil
rf.party_dispellableDebuffSize = nil
end,
})