Re-seat two picks the #1730 revert and the realm's interface displaced
Two follow-ups to the series, both consequences of the same root cause. **#2150's OptionsFrame.xml hunk, re-ported.** It cherry-picked with no conflict only because the botched #1730 resolution had already replaced this fork's `OptionsFrame.xml` with upstream's, so it applied against upstream's file. The revert then restored ours and took it with it. Ported by hand here: our rows write `self.applyFunc` where upstream's write `this.applyFunc`, and inherit `OptionsCheckboxRowTemplate`/`OptionsDropdownRowTemplate` where upstream's inherit the `Benilla`-prefixed names. Both `TargetofTarget_Update` applyFuncs are gone and the reference note comes along. **#1972's blanket dialog test, scoped to our two dialogs.** The fix — this page's two confirms declaring `timeout`, `whileDead`, `showAlert` — is right and stands. Its test asserted a numeric `timeout` on *every* entry in `StaticPopupDialogs`, which holds for stock 1.12.1 FrameXML but not here: this fork loads the realm's own interface, whose `StaticPopup.lua` leaves `timeout` off 73 of its dialogs. Those are the realm's to declare, and failing on them says nothing about this fix. benilla-app --lib is back to the 269-failure baseline exactly. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
@@ -3888,7 +3888,12 @@
|
||||
</OnLoad></Scripts>
|
||||
</Frame>
|
||||
<!-- Saved globals in 1.12; the mode greys with its switch
|
||||
(UIOptionsFrame.lua:697-701). -->
|
||||
(UIOptionsFrame.lua:697-701). Neither row applies anything:
|
||||
1.12's options only write the uvars (UIOptionsFrame.lua:65),
|
||||
and the target frames' OnUpdates show or hide the frame on
|
||||
the next frame (TargetFrame.lua:492-501). Called from a row,
|
||||
TargetofTarget_Update would refresh the row's debuffs
|
||||
(RefreshBuffs(this, ...), TargetFrame.lua:538). -->
|
||||
<Frame name="$parentRowTargetOfTarget" inherits="OptionsCheckboxRowTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentRowStatusText" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="-9"/></Offset></Anchor>
|
||||
@@ -3897,7 +3902,6 @@
|
||||
<Scripts><OnLoad>
|
||||
OptionsGlobalRow_OnLoad(self, "SHOW_TARGET_OF_TARGET",
|
||||
"Show Target of Target", "OPTION_TOOLTIP_SHOW_TARGET_OF_TARGET")
|
||||
self.applyFunc = "TargetofTarget_Update"
|
||||
</OnLoad></Scripts>
|
||||
</Frame>
|
||||
<!-- The label is ours, since 1.12 never sets this
|
||||
@@ -3917,7 +3921,6 @@
|
||||
{ text = "Party or Raid", value = "4", tip = "OPTION_TOOLTIP_TARGETOFTARGET4" },
|
||||
{ text = "Always", value = "5", tip = "OPTION_TOOLTIP_TARGETOFTARGET5" },
|
||||
})
|
||||
self.applyFunc = "TargetofTarget_Update"
|
||||
</OnLoad></Scripts>
|
||||
</Frame>
|
||||
<!-- PLAYER_FLAGS bits, API rows
|
||||
|
||||
@@ -356,8 +356,13 @@ fn the_esc_ladder_closes_the_window_and_the_checkbox_switches_sets() {
|
||||
}
|
||||
|
||||
/// `StaticPopup_Show` copies an entry's `timeout` into `timeleft`, and `StaticPopup_OnUpdate`
|
||||
/// compares it with 0 every frame (`StaticPopup.lua:1713`), so every entry declares one, as each
|
||||
/// stock entry does.
|
||||
/// compares it with 0 every frame (`StaticPopup.lua:1713`), so an entry without one raises there
|
||||
/// every frame it is up. Both of this page's own confirms declare one.
|
||||
///
|
||||
/// Scoped to our two entries, where upstream asserts it of every entry in `StaticPopupDialogs`:
|
||||
/// that holds for stock 1.12.1 FrameXML, but this fork loads the realm's own interface, whose
|
||||
/// `StaticPopup.lua` leaves `timeout` off 73 of its dialogs. Those are the realm's to declare,
|
||||
/// not ours, and failing on them would say nothing about this fix.
|
||||
#[test]
|
||||
fn every_dialog_declares_a_timeout() {
|
||||
benilla_formats::wow_data_or_skip!();
|
||||
@@ -365,13 +370,15 @@ fn every_dialog_declares_a_timeout() {
|
||||
let missing = s
|
||||
.eval::<String>(
|
||||
"local out = {} \
|
||||
for which, d in pairs(StaticPopupDialogs) do \
|
||||
if type(d.timeout) ~= 'number' then table.insert(out, which) end \
|
||||
for _, which in ipairs({'CONFIRM_DELETING_CHARACTER_SPECIFIC_BINDINGS', \
|
||||
'CONFIRM_RESET_KEYBINDINGS'}) do \
|
||||
local d = StaticPopupDialogs[which] \
|
||||
if not d or type(d.timeout) ~= 'number' then table.insert(out, which) end \
|
||||
end \
|
||||
table.sort(out) return table.concat(out, ' ')",
|
||||
)
|
||||
.unwrap();
|
||||
assert_eq!(missing, "", "dialogs with no numeric timeout");
|
||||
assert_eq!(missing, "", "our dialogs with no numeric timeout");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user