From 358fc6607c3e1cc0dbb14bc637bea93ff6fb60ab Mon Sep 17 00:00:00 2001 From: Hendrik Leppkes Date: Tue, 15 Jul 2008 07:46:18 +0000 Subject: [PATCH] fix a bug with action buttons not updating properly with AutoAssist active --- actionBar/States.lua | 2 ++ buttonPrototypes/ActionButton.lua | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/actionBar/States.lua b/actionBar/States.lua index 01919af..ca29947 100644 --- a/actionBar/States.lua +++ b/actionBar/States.lua @@ -65,6 +65,8 @@ function ActionBar:UpdateStates() if not module.stancemap and module.DefaultStanceMap[playerclass] then module.stancemap = module.DefaultStanceMap[playerclass] end + + self:ForAll("ClearStateAction") for i=0,10 do self:AddButtonStates(i) end diff --git a/buttonPrototypes/ActionButton.lua b/buttonPrototypes/ActionButton.lua index 2ac2e02..7cb42bc 100644 --- a/buttonPrototypes/ActionButton.lua +++ b/buttonPrototypes/ActionButton.lua @@ -27,6 +27,7 @@ function Bartender4.Button:Create(id, parent) button.rid = id button.id = absid button.parent = parent + button.stateactions = {} button:SetFrameStrata("MEDIUM") button:SetFrameLevel(parent:GetFrameLevel() + 2) @@ -128,6 +129,7 @@ function onDragStart(self) PickupAction(self.action) self:UpdateState() self:UpdateFlash() + self:RefreshStateAction() end end @@ -136,6 +138,7 @@ function onReceiveDrag(self) PlaceAction(self.action) self:UpdateState() self:UpdateFlash() + self:RefreshStateAction() end function onEnter(self) @@ -188,8 +191,32 @@ function onUpdate(self, elapsed) end end +function Button:ClearStateAction() + for state in pairs(self.stateactions) do + self:SetAttribute(("*type-S%d"):format(state), nil) + self:SetAttribute(("*action-S%d"):format(state), nil) + self:SetAttribute(("*action-S%dRight"):format(state), nil) + self:SetAttribute(("*macrotext-S%d"):format(state), nil) + self:SetAttribute(("*macrotext-S%dRight"):format(state), nil) + + self.stateactions = {} + end +end + function Button:SetStateAction(state, action) - + self.stateactions[state] = action + self:RefreshStateAction(state) +end + +function Button:RefreshAllStateActions() + for state in pairs(self.stateactions) do + self:RefreshStateAction(state) + end +end + +function Button:RefreshStateAction(state) + local state = tonumber(state or self:GetAttribute("state-parent")) + local action = self.stateactions[state] self:SetAttribute(("*type-S%d"):format(state), "action") self:SetAttribute(("*type-S%dRight"):format(state), "action")