Files
benilla-octo/crates/benilla-app/assets/ui/BinderConfirm.xml
T
SamandClaude Opus 5 9a184d3476 the guild window opens: roster, ranks, notes and the message of the day
- the social window's third tab is live — the roster in both its views, the member card with its promote/demote/remove verbs, the rank editor's thirteen permissions, the guild information board, and the invite, leave, kick and note dialogs behind them
- setting your hearthstone at an innkeeper now asks before it takes and says so afterwards, and the innkeeper's gossip lines get their own icons back
- unavailable talents grey out, and every greyed icon in the client now goes through the same luminance fold the original used
- the buff tooltip's remaining-time line reads gold with the client's own hour/minute ladder, the macro editor takes a shift-click to paste a spell, trainer rows repaint after a purchase, and a long book page stops flickering its ellipsis

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 17:38:54 +07:00

70 lines
3.5 KiB
XML

<Ui xmlns="http://www.blizzard.com/wow/ui/">
<!--
The innkeeper's "make this your home?" dialog (decision 1331): a registry entry on the
shared StaticPopup engine (UiPanels.xml) plus its UIParent event arm, written against the
patch-chain FrameXML (mpqx extraction, decision 0246) — StaticPopup.lua l.1308-1322 (the
entry) and UIParent.lua l.125 / l.547-548 (the registration and the show arm). The string
is GlobalStrings.lua l.840, verbatim.
It is NOT part of GossipFrame.xml, and the reason is the wire: selecting the innkeeper's
gossip line makes the server CLOSE the gossip menu and then ask. By the time this dialog
goes up the window that raised it is already gone, so it belongs with the other free-
standing confirms rather than with the panel.
The whole flow behind it is two packets — SMSG_BINDER_CONFIRM in, CMSG_BINDER_ACTIVATE out
— and only the second one binds anything (`crate::ui_binder`'s header carries the law).
Accepting is therefore the ONLY path to a moved hearthstone; there is no client-side bind
and nothing to undo on Cancel, which is why this entry has no OnCancel.
-->
<Script><![CDATA[
-- ── Strings (GlobalStrings.lua, verbatim) ───────────────────────────────────────────────
local CONFIRM_BINDER = "Do you want to make %s your new home?" -- l.840
local ACCEPT = "Accept" -- l.10
local CANCEL = "Cancel" -- l.464
-- ── The confirm — answering to StaticPopup.lua l.1308-1322 ─────────────────────────────
-- This is the dialog's ONLY teardown, and it is a poll rather than an event: walk out of
-- the innkeeper's range and the question leaves the screen by itself, with no packet
-- either way. `CheckBinderDist()` is the engine binding behind it
-- (`benilla-ui/src/script/binder.rs`), false as soon as the app's NPC-session guard has
-- closed the question. Named rather than inlined into the entry, because "the question
-- expires when you walk away" is the interesting half of this file.
local function hideOnceOutOfRange(_, dialog)
if not CheckBinderDist() then
dialog:Hide()
end
end
StaticPopupDialogs["CONFIRM_BINDER"] = {
text = CONFIRM_BINDER,
button1 = ACCEPT,
button2 = CANCEL,
OnAccept = function()
ConfirmBinder()
end,
OnUpdate = hideOnceOutOfRange,
timeout = 0,
hideOnEscape = 1,
}
-- ── The UIParent event arm (UIParent.lua l.547-548) ────────────────────────────────────
-- arg1 is the area name the "%s" takes.
function BenillaBinderConfirmDriver_OnEvent()
if event == "CONFIRM_BINDER" then
StaticPopup_Show("CONFIRM_BINDER", arg1)
end
end
]]></Script>
<Frame name="BenillaBinderConfirmDriver" hidden="true">
<Size><AbsDimension x="1" y="1"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
<Scripts>
<OnLoad>
self:RegisterEvent("CONFIRM_BINDER")
</OnLoad>
<OnEvent>BenillaBinderConfirmDriver_OnEvent()</OnEvent>
</Scripts>
</Frame>
</Ui>