From b39651d9b4c5f77920c383bdff274ee383ddbf6b Mon Sep 17 00:00:00 2001 From: grom Date: Fri, 6 Nov 2026 07:25:15 -0700 Subject: [PATCH] =?UTF-8?q?A=20=20never=20r?= =?UTF-8?q?eached=20=5FG,=20which=20broke=20crafting=20in=20ATSW2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `apply_statusbar` read `file=` and `` off `` and passed them to `SetStatusBarTexture`, which builds the fill region itself. Every other attribute of the element went unread, `name=` among them. In the reference `` is a Texture element and StatusBar's LoadXML (`0x782ef0`) builds the fill through the shared texture ctor, which registers the name like any other region's. A dropped `name=` is invisible until Lua reaches for the global, and then it raises inside the addon. ATSW2's `SPELLCAST_START` arm shows the progress bar, tints it per ore through `ATSWProgressBarTexture` — the raise — and only then calls `ATSW_StartProcessing`. So every craft left the bar shown and running with nothing able to stop it: `Processing.Active` stayed false, `SPELLCAST_INTERRUPTED` was never registered, `ATSW_StopProcessing` and `ATSW_CompleteTask` were never reached, and the guard `not Processing.Active` let the next craft re-raise. grom's log has seven in a row and his screenshot has the stuck bar. Named now, both ways, as Button state textures already were: the region registry for `GetName()` and `_G` for `getglobal` and a sibling's `relativeTo`. A named `` with no paint still builds its region. Four of the five in this install declare a name (`ATSWProgressBarTexture`, `ATSWRankFrameBar`, two QuickHeal bars); no stock FrameXML status bar names its fill, so the base interface neither gains a global nor collides with one. Also in the skin: the reagent names under the icons take the same black-to-white `SetTextColor` wrapper as the tools line. They measured 1/1/1 in a capture and read as correct, but a capture has no item links and `ATSW_ShowRecipe` paints the title black only inside `if RLink then` — in play it runs. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn --- crates/benilla-ui/src/loader/mod.rs | 2 +- crates/benilla-ui/src/loader/tests.rs | 44 ++++++++++++ crates/benilla-ui/src/loader/widgets.rs | 55 +++++++++++++- docs/ADDON_COMPAT.md | 95 +++++++++++++++++++++++++ 4 files changed, 194 insertions(+), 2 deletions(-) diff --git a/crates/benilla-ui/src/loader/mod.rs b/crates/benilla-ui/src/loader/mod.rs index 110fdf04..5abe2cf5 100644 --- a/crates/benilla-ui/src/loader/mod.rs +++ b/crates/benilla-ui/src/loader/mod.rs @@ -754,7 +754,7 @@ impl Loader<'_> { self.apply_title_region(el, wrapper, self_name, dbg_name); // 5b · per-kind LoadXML extras (EditBox `0x779fb0`), each gated on the element's own tag, // so a Frame wearing a