# HG changeset patch # User Flick # Date 1236383882 0 # Node ID e39d80bb0b7ac4312182e1c3b1b6f574994f7c21 # Parent 6e4a11b9d290b9db379e60a3b9870a8930566cd3 Refactored some code into Button, cleaned up PetActionButton a little diff -r 6e4a11b9d290 -r e39d80bb0b7a classes/ActionButton.lua --- a/classes/ActionButton.lua Fri Mar 06 23:44:55 2009 +0000 +++ b/classes/ActionButton.lua Fri Mar 06 23:58:02 2009 +0000 @@ -168,20 +168,6 @@ local barFrame = bar:GetFrame() local config = self:GetConfig() - local frames = { } - self.frames = frames - frames.icon = _G[name.."Icon"] - frames.flash = _G[name.."Flash"] - frames.hotkey = _G[name.."HotKey"] - frames.count = _G[name.."Count"] - frames.name = _G[name.."Name"] - frames.border = _G[name.."Border"] - frames.cooldown = _G[name.."Cooldown"] - frames.normalTexture = _G[name.."NormalTexture"] - - self.hotkey = frames.hotkey -- alias for Button methods - self.border = frames.border -- alias for Button methods - self.rangeTimer = TOOLTIP_UPDATE_TIME -- set up the base action ID diff -r 6e4a11b9d290 -r e39d80bb0b7a classes/Button.lua --- a/classes/Button.lua Fri Mar 06 23:44:55 2009 +0000 +++ b/classes/Button.lua Fri Mar 06 23:58:02 2009 +0000 @@ -58,6 +58,17 @@ self.frame = f + local frames = { } + self.frames = frames + frames.icon = _G[name.."Icon"] + frames.flash = _G[name.."Flash"] + frames.hotkey = _G[name.."HotKey"] + frames.count = _G[name.."Count"] + frames.name = _G[name.."Name"] + frames.border = _G[name.."Border"] + frames.cooldown = _G[name.."Cooldown"] + frames.normalTexture = _G[name.."NormalTexture"] + if config then config.name = name end @@ -190,22 +201,22 @@ end function Button:UpdateKeybindModeDisplay( mode ) - self.border = self.border or _G[format("%sBorder",tostring(self:GetName()))] - if self.border then + local border = self.frames.border or _G[format("%sBorder",tostring(self:GetName()))] + if border then if mode then - self.border:SetVertexColor(KB:GetColorKeyBoundMode()) - self.border:Show() + border:SetVertexColor(KB:GetColorKeyBoundMode()) + border:Show() else - self.border:Hide() + border:Hide() end end end function Button:UpdateHotkey( hotkey ) - hotkey = hotkey or self.hotkey + hotkey = hotkey or self.frames.hotkey if not hotkey then hotkey = _G[self:GetName().."HotKey"] - self.hotkey = hotkey + self.frames.hotkey = hotkey end if hotkey then local txt = self.frame:GetHotkey() diff -r 6e4a11b9d290 -r e39d80bb0b7a classes/PetActionButton.lua --- a/classes/PetActionButton.lua Fri Mar 06 23:44:55 2009 +0000 +++ b/classes/PetActionButton.lua Fri Mar 06 23:58:02 2009 +0000 @@ -67,7 +67,7 @@ local f = self:GetFrame() if not f.autoCastTexture then - -- store with the frame for recycling + -- store autocast stuff with the frame for recycling f.autoCastShine = CreateFrame("Frame",name.."Shine",f,"AutoCastShineTemplate") local tex = f:CreateTexture(nil,"OVERLAY") tex:SetTexture([[Interface\Buttons\UI-AutoCastableOverlay]]) @@ -75,42 +75,29 @@ tex:SetWidth(58) tex:SetPoint("CENTER") f.autoCastTexture = tex + -- move the cooldown around + local cd = self.frames.cooldown + cd:ClearAllPoints() + cd:SetWidth(33) + cd:SetHeight(33) + cd:SetPoint("CENTER", f, "CENTER", -2, -1) + -- resize to 30x30 + f:SetHeight(30) + f:SetWidth(30) end local barFrame = bar:GetFrame() - local frames = { } - self.frames = frames - frames.icon = _G[name.."Icon"] - frames.flash = _G[name.."Flash"] - frames.hotkey = _G[name.."HotKey"] - frames.count = _G[name.."Count"] - frames.name = _G[name.."Name"] - frames.border = _G[name.."Border"] - frames.cooldown = _G[name.."Cooldown"] - frames.normalTexture = _G[name.."NormalTexture"] - - -- resize to 30x30 - f:SetHeight(30) - f:SetWidth(30) - - -- move the cooldown around - local cd = self.frames.cooldown - cd:ClearAllPoints() - cd:SetWidth(33) - cd:SetHeight(33) - cd:SetPoint("CENTER", f, "CENTER", -2, -1) - - self.hotkey = frames.hotkey -- alias for Button methods - self.border = frames.border -- alias for Button methods - -- set up the base action ID self:SetActionIDPool("pet",10) config.actionID = self:AcquireActionID(config.actionID, idHint, true) -- attribute setup - -- In order to get the full behavior of the pet buttons - -- (petattack, toggle autocast, start/stop attack) we need - -- to use a secure click proxy type instead of a "pet" type. + -- There's no secure way to do PetAutoCastToggle by actionID, so use + -- a click-through proxy to the Blizzard pet buttons for right-click + -- Note that technically this doesn't do PetStopAttack() when + -- IsPetAttackActive() is true: however that's only true when using + -- Eyes of the Beast and appears not to really do anything (at least + -- I can't find any difference) f:SetAttribute("type","pet") f:SetAttribute("type2","click") f:SetAttribute("clickbutton2",_G["PetActionButton"..config.actionID])