diff --git a/crates/benilla-app/assets/ui/ActionBar.xml b/crates/benilla-app/assets/ui/ActionBar.xml
deleted file mode 100644
index bd210cb5..00000000
--- a/crates/benilla-app/assets/ui/ActionBar.xml
+++ /dev/null
@@ -1,2047 +0,0 @@
-
-
-
-
-
-
-
-
- ActionButton_OnEvent()
- BenillaActionButton_OnClick(self)
- BenillaActionButton_OnDragStart(self)
- BenillaActionButton_OnReceiveDrag(self)
- ActionButton_OnUpdate(arg1)
- BenillaActionButton_OnEnter(self)
- if GameTooltip then GameTooltip:Hide() end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaExpBarOverlay_OnLoad()
-
-
-
-
-
-
- BenillaExpBar_OnLoad(self)
- BenillaExpBar_OnEvent(self)
- BenillaExpBar_OnEnter(self)
- BenillaExpBar_OnLeave(self)
- ExhaustionTick_OnUpdate(arg1)
-
- if this:IsShown() and TextStatusBar_OnValueChanged then
- TextStatusBar_OnValueChanged()
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaActionButton_OnLoad(self, 1)
-
-
-
- BenillaActionButton_OnLoad(self, 2)
-
-
-
- BenillaActionButton_OnLoad(self, 3)
-
-
-
- BenillaActionButton_OnLoad(self, 4)
-
-
-
- BenillaActionButton_OnLoad(self, 5)
-
-
-
- BenillaActionButton_OnLoad(self, 6)
-
-
-
- BenillaActionButton_OnLoad(self, 7)
-
-
-
- BenillaActionButton_OnLoad(self, 8)
-
-
-
- BenillaActionButton_OnLoad(self, 9)
-
-
-
- BenillaActionButton_OnLoad(self, 10)
-
-
-
- BenillaActionButton_OnLoad(self, 11)
-
-
-
- BenillaActionButton_OnLoad(self, 12)
-
-
-
-
-
-
-
-
-
- this:RegisterEvent("PLAYER_ENTERING_WORLD")
- this:RegisterEvent("BAG_UPDATE")
-
- MainMenuBar_UpdateKeyRing()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaPerformanceBar_OnLoad(self)
- BenillaPerformanceBar_OnUpdate(self, arg1)
-
-
-
-
- BenillaActionBar_OnLoad(self)
- BenillaActionBar_OnEvent(self)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaActionButton_OnLoad(self, 1) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 2) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 3) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 4) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 5) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 6) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 7) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 8) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 9) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 10) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 11) self.isBonus = 1
-
-
-
- BenillaActionButton_OnLoad(self, 12) self.isBonus = 1
-
-
-
- BenillaBonusBar_OnLoad(self)
- BonusActionBar_OnUpdate(arg1)
-
-
-
-
-
-
diff --git a/crates/benilla-app/assets/ui/MicroMenu.xml b/crates/benilla-app/assets/ui/MicroMenu.xml
index b0c77503..9ecd108f 100644
--- a/crates/benilla-app/assets/ui/MicroMenu.xml
+++ b/crates/benilla-app/assets/ui/MicroMenu.xml
@@ -85,6 +85,13 @@
-
-
-
-
-
-
-
-
-
-
- BenillaActionButton_OnLoad(self, 1, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 2, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 3, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 4, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 5, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 6, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 7, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 8, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 9, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 10, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 11, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 12, BENILLA_MULTIBAR_BOTTOMLEFT_BASE, "MULTIACTIONBAR1BUTTON")
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaActionButton_OnLoad(self, 1, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 2, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 3, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 4, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 5, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 6, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 7, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 8, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 9, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 10, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 11, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 12, BENILLA_MULTIBAR_BOTTOMRIGHT_BASE, "MULTIACTIONBAR2BUTTON")
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaActionButton_OnLoad(self, 1, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 2, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 3, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 4, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 5, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 6, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 7, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 8, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 9, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 10, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 11, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 12, BENILLA_MULTIBAR_RIGHT_BASE, "MULTIACTIONBAR3BUTTON")
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaActionButton_OnLoad(self, 1, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 2, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 3, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 4, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 5, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 6, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 7, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 8, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 9, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 10, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 11, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
- BenillaActionButton_OnLoad(self, 12, BENILLA_MULTIBAR_LEFT_BASE, "MULTIACTIONBAR4BUTTON")
-
-
-
-
diff --git a/crates/benilla-app/assets/ui/OptionsFrame.xml b/crates/benilla-app/assets/ui/OptionsFrame.xml
index 7aa4871e..9ee7e028 100644
--- a/crates/benilla-app/assets/ui/OptionsFrame.xml
+++ b/crates/benilla-app/assets/ui/OptionsFrame.xml
@@ -190,6 +190,111 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaShapeshiftButton_OnClick(self)
- BenillaShapeshiftButton_OnEnter(self)
- BenillaShapeshiftButton_OnLeave(self)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 1)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 2)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 3)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 4)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 5)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 6)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 7)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 8)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 9)
-
-
-
- BenillaShapeshiftButton_OnLoad(self, 10)
-
-
-
- ShapeshiftBar_OnLoad()
- ShapeshiftBar_OnEvent()
-
- UIParent_ManageFramePositions()
- UIParent_ManageFramePositions()
-
-
-
diff --git a/crates/benilla-app/assets/ui/UIParent.xml b/crates/benilla-app/assets/ui/UIParent.xml
index 7d9d9705..ebfead66 100644
--- a/crates/benilla-app/assets/ui/UIParent.xml
+++ b/crates/benilla-app/assets/ui/UIParent.xml
@@ -74,8 +74,8 @@
XML anchor: every layout pass re-anchors it to a base offset plus per-bar deltas -
either bottom multibar, the pet/stance bar, the reputation watch bar - fired from those
bars' OnShow/OnHide (ref BonusActionBarFrame.xml:350-355 et al.) and applied once at
- startup. The loader's post-load call (ui_script/mod.rs) is our startup seam; the stance
- bar's OnShow/OnHide (StanceBar.xml) is the one live re-fire today.
+ startup. The loader's post-load call (ui_script/mod.rs) is our startup seam; the pet
+ bar's OnShow/OnHide and the options rows' setters (1938) are the live re-fires today.
Departures, each named:
- Lua 5.1 dialect (the 1.12 client ran 5.0): pairs() iteration, table.insert for
@@ -207,7 +207,7 @@
-- `CMSG_SET_ACTIONBAR_TOGGLES` and waits for the field to come back (wow-re
-- `system/ui/scratch/action-bar-toggles.md` §5: the setter's every store is into its own
-- stack frame, and nothing in the binary fires on a change to that byte). So the live UI
- -- state is the four Lua globals `MultiBars.xml` owns, and `GetActionBarToggles()` is read
+ -- state is the four Lua globals stock `MultiActionBars.lua` reads, and `GetActionBarToggles()` is read
-- exactly ONCE, here, to seed them. Reading it again later would fight the optimistic
-- value the options rows just set and lose a round trip's worth of clicks.
--
@@ -810,6 +810,12 @@
-- while the stance bar is up starts 20px past the last stance button. That case is
-- rare but real — a possessed or charmed unit gives a pet bar to a class that also
-- has forms.
+ -- Update shapeshift bar appearance — ref UIParent.lua l.1705-1732, the reference's own
+ -- arm of this pass: with the bottom-left bar up the stance bar loses its shelf (end
+ -- caps + middle strip) and its rings shrink to 50; otherwise the shelf shows (the
+ -- middle only past two forms) and the rings are 64. Stock BonusActionBarFrame.lua
+ -- carries a `ShapeshiftBar_UpdatePosition` with the same body that nothing calls; the
+ -- pass IS the caller. (Our StanceBar.xml did this through a listener until 1938.)
local bottomLeftUp = MultiBarBottomLeft and MultiBarBottomLeft:IsShown()
if ( SlidingActionBarTexture0 and SlidingActionBarTexture1 ) then
if ( bottomLeftUp ) then
@@ -820,6 +826,28 @@
SlidingActionBarTexture1:Show()
end
end
+ if ( ShapeshiftBarFrame ) then
+ local numForms = GetNumShapeshiftForms and GetNumShapeshiftForms() or 0
+ if ( bottomLeftUp ) then
+ ShapeshiftBarLeft:Hide()
+ ShapeshiftBarRight:Hide()
+ ShapeshiftBarMiddle:Hide()
+ for i=1, numForms do
+ getglobal("ShapeshiftButton"..i.."NormalTexture"):SetWidth(50)
+ getglobal("ShapeshiftButton"..i.."NormalTexture"):SetHeight(50)
+ end
+ else
+ if ( numForms > 2 ) then
+ ShapeshiftBarMiddle:Show()
+ end
+ ShapeshiftBarLeft:Show()
+ ShapeshiftBarRight:Show()
+ for i=1, numForms do
+ getglobal("ShapeshiftButton"..i.."NormalTexture"):SetWidth(64)
+ getglobal("ShapeshiftButton"..i.."NormalTexture"):SetHeight(64)
+ end
+ end
+ end
if ( PetActionBarFrame ) then
PETACTIONBAR_XPOS = 36
local forms = GetNumShapeshiftForms and GetNumShapeshiftForms() or 0
diff --git a/crates/benilla-app/assets/ui/UiPanels.xml b/crates/benilla-app/assets/ui/UiPanels.xml
index aa92c6c3..32e4f5d0 100644
--- a/crates/benilla-app/assets/ui/UiPanels.xml
+++ b/crates/benilla-app/assets/ui/UiPanels.xml
@@ -24,6 +24,11 @@
its comment names the reference row it stands in for.
-->