From b427860b358fb6f0ff3b85c1aceef854895b9aba Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 14 Aug 2026 19:38:18 +0700 Subject: [PATCH] dialogs come to the front, and the red line names what it needs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - dialogs carry the reference's toplevel bit, so the stack-split window opens above Bagnon instead of behind it - the failure line fills its blank — "Requires Blacksmith Hammer", not "Requires" — and Opening casts stop printing a label the spell itself marks "no text" - the pet bar's Attack/Follow/Stay tooltips name their keybinding, and typed text reaches the focused frame through the client's own delivery walk - AtlasLoot parses again: our Lua keeps 5.0's compatibility semicolon Co-Authored-By: Claude Fable 5 --- crates/benilla-app/assets/ui/ActionBar.xml | 24 +- .../benilla-app/assets/ui/GameMenuFrame.xml | 5 +- crates/benilla-app/assets/ui/ItemRef.xml | 4 +- crates/benilla-app/assets/ui/OptionsFrame.xml | 5 +- crates/benilla-app/assets/ui/PetActionBar.xml | 197 +++++++++--- .../benilla-app/assets/ui/SpellBookFrame.xml | 4 +- crates/benilla-app/assets/ui/StackSplit.xml | 125 ++++++-- crates/benilla-app/assets/ui/StanceBar.xml | 11 +- .../benilla-app/assets/ui/UIDropDownMenu.xml | 5 +- crates/benilla-app/assets/ui/UiPanels.xml | 4 +- crates/benilla-app/assets/ui/benilla.toc | 6 +- crates/benilla-app/src/cvars.rs | 16 +- crates/benilla-app/src/net/apply.rs | 2 + crates/benilla-app/src/net/apply/pet.rs | 2 +- crates/benilla-app/src/net/apply/spells.rs | 8 +- crates/benilla-app/src/target/click.rs | 11 +- crates/benilla-app/src/target/lock.rs | 110 ++++++- crates/benilla-app/src/ui_action/cast_fail.rs | 207 ++++++++++-- crates/benilla-app/src/ui_action/cast_send.rs | 33 +- crates/benilla-app/src/ui_action/errors.rs | 55 +++- crates/benilla-app/src/ui_action/feed.rs | 40 ++- crates/benilla-app/src/ui_action/mod.rs | 34 +- .../src/ui_action/targeting/item.rs | 2 +- crates/benilla-app/src/ui_cast.rs | 65 +++- crates/benilla-app/src/ui_script/bag_tests.rs | 133 +++++++- crates/benilla-app/src/ui_script/input.rs | 38 ++- .../src/ui_script/pet_bar_tests.rs | 296 +++++++++++++++++- .../src/ui_script/tooltip_anchor_tests.rs | 108 ++++++- crates/benilla-app/src/ui_spellbook.rs | 10 +- crates/benilla-app/src/ui_talent.rs | 12 +- crates/benilla-app/src/ui_trainer/mod.rs | 6 +- crates/benilla-app/src/ui_trainer/tests.rs | 22 +- .../src/bin/benilla-extract/m2dump.rs | 24 +- crates/benilla-formats/src/skill_lines/mod.rs | 2 +- .../benilla-formats/src/skill_lines/tests.rs | 8 +- .../src/spells/catalog_tests.rs | 37 +++ crates/benilla-formats/src/spells/display.rs | 13 + crates/benilla-formats/src/spells/mod.rs | 9 + .../examples/cooldown_probe.rs | 3 + .../src/bin/benilla-world/world.rs | 5 +- crates/benilla-protocol/src/events.rs | 6 +- crates/benilla-protocol/src/events/decode.rs | 8 +- crates/benilla-protocol/src/messages/pet.rs | 4 + .../benilla-protocol/src/messages/spells.rs | 48 ++- crates/benilla-protocol/tests/spells.rs | 38 ++- crates/benilla-ui/src/loader/scripts.rs | 17 +- crates/benilla-ui/src/loader/tests.rs | 14 +- crates/benilla-ui/src/script/editbox/tests.rs | 39 ++- crates/benilla-ui/src/script/event.rs | 17 + crates/benilla-ui/src/script/keyboard.rs | 230 ++++++++++++++ crates/benilla-ui/src/script/mod.rs | 34 +- .../src/script/tests/generic_for.rs | 62 ++++ crates/benilla-ui/src/script/tests/input.rs | 11 +- .../benilla-ui/src/script/tests/keyboard.rs | 186 +++++++++++ crates/benilla-ui/src/script/tests/mod.rs | 1 + third_party/lua-src/BENILLA.md | 5 +- third_party/lua-src/lua-5.1.5/lparser.c | 17 + 57 files changed, 2163 insertions(+), 275 deletions(-) create mode 100644 crates/benilla-ui/src/script/keyboard.rs create mode 100644 crates/benilla-ui/src/script/tests/keyboard.rs diff --git a/crates/benilla-app/assets/ui/ActionBar.xml b/crates/benilla-app/assets/ui/ActionBar.xml index 64589005..ffb565b0 100644 --- a/crates/benilla-app/assets/ui/ActionBar.xml +++ b/crates/benilla-app/assets/ui/ActionBar.xml @@ -363,15 +363,27 @@ -- tooltip with its rank column, an ITEM slot the shared item renderer; ref -- ActionButton_SetTooltip). The re-enter keeps it live across page flips. -- Anchor: ref ActionButton_SetTooltip (ActionButton.lua l.366-372) branches on the - -- UberTooltips CVar — "1" → the default corner, else RIGHT/LEFT by bar. UberTooltips - -- registers with default "1" (byte-read: WoW.exe 0x48fdd9, default string 0x82e748; - -- sibling rows BlockTrades→"0", UnitNameRenderMode→"2" confirm the layout), and benilla - -- ships no CVar state, so the branch collapses to the stock-client one: action-bar - -- tooltips live at the screen's bottom-right, above the bags. + -- UberTooltips CVar — "1" → the default corner, else beside the button, LEFT for the bars + -- that sit at the screen edge and RIGHT for the rest. This branch was collapsed to the "1" + -- leg until B230, on the reason that benilla shipped no CVar state for anything to move + -- it; 0954 ended that and cvars.rs now registers the key (default "1", byte-read — the + -- evidence lives on that row), so the fork is live and the stock look is unchanged. + -- + -- The ref's LEFT set is {MultiBarBottomRight, MultiBarRight, MultiBarLeft}. Only the first + -- exists here — the two VERTICAL bars are deliberately not shipped (see the header of + -- MultiBars.xml) — so it is the whole test, and the day they land they join it. function BenillaActionButton_OnEnter(button) BenillaActionButton_Adopt(button) if not GameTooltip then return end -- engine tests load file subsets - GameTooltip_SetDefaultAnchor(GameTooltip, button) + if GetCVar("UberTooltips") == "0" then + if button:GetParent() == MultiBarBottomRight then + GameTooltip:SetOwner(button, "ANCHOR_LEFT") + else + GameTooltip:SetOwner(button, "ANCHOR_RIGHT") + end + else + GameTooltip_SetDefaultAnchor(GameTooltip, button) + end GameTooltip:SetAction(BenillaActionButton_Action(button)) end diff --git a/crates/benilla-app/assets/ui/GameMenuFrame.xml b/crates/benilla-app/assets/ui/GameMenuFrame.xml index d7811207..f4e50673 100644 --- a/crates/benilla-app/assets/ui/GameMenuFrame.xml +++ b/crates/benilla-app/assets/ui/GameMenuFrame.xml @@ -207,7 +207,10 @@ MainMenuFrameButtonTemplate (Classic/Frame/MainMenuFrameTemplates.xml l.11-16) is that same button — same art, same trio, same size — so the header's ART BYTES note is unchanged. --> - + + diff --git a/crates/benilla-app/assets/ui/ItemRef.xml b/crates/benilla-app/assets/ui/ItemRef.xml index a3d35045..a4e629aa 100644 --- a/crates/benilla-app/assets/ui/ItemRef.xml +++ b/crates/benilla-app/assets/ui/ItemRef.xml @@ -91,7 +91,9 @@ end ]]> -