Refactor the fade-out option to use the new state functionality

This commit is contained in:
Hendrik Leppkes
2008-09-05 11:59:43 +02:00
parent b457d056bb
commit 27dcb23d1b
+26 -26
View File
@@ -27,7 +27,7 @@ local defaults = {
local Sticky = LibStub("LibSimpleSticky-1.0") local Sticky = LibStub("LibSimpleSticky-1.0")
local snapBars = { WorldFrame, UIParent } local snapBars = { WorldFrame, UIParent }
local barOnEnter, barOnLeave, barOnDragStart, barOnDragStop, barOnClick, barOnUpdateFunc local barOnEnter, barOnLeave, barOnDragStart, barOnDragStop, barOnClick, barOnUpdateFunc, barOnAttributeChanged
do do
function barOnEnter(self) function barOnEnter(self)
self:SetBackdropBorderColor(0.5, 0.5, 0, 1) self:SetBackdropBorderColor(0.5, 0.5, 0, 1)
@@ -66,6 +66,19 @@ do
self.elapsed = 0 self.elapsed = 0
end end
end end
function barOnAttributeChanged(self, attribute, value)
if attribute == "fade" then
if value then
self:SetScript("OnUpdate", barOnUpdateFunc)
self:ControlFadeOut()
else
self:SetScript("OnUpdate", nil)
self.faded = nil
self:SetConfigAlpha()
end
end
end
end end
local barregistry = {} local barregistry = {}
@@ -84,6 +97,7 @@ function Bartender4.Bar:Create(id, config, name)
bar.id = id bar.id = id
bar.name = name or id bar.name = name or id
bar:SetMovable(true) bar:SetMovable(true)
bar:HookScript("OnAttributeChanged", barOnAttributeChanged)
local overlay = CreateFrame("Button", bar:GetName() .. "Overlay", bar) local overlay = CreateFrame("Button", bar:GetName() .. "Overlay", bar)
bar.overlay = overlay bar.overlay = overlay
@@ -151,7 +165,6 @@ function Bar:ApplyConfig(config)
self:LoadPosition() self:LoadPosition()
self:SetConfigScale() self:SetConfigScale()
self:SetConfigAlpha() self:SetConfigAlpha()
self:SetFadeOut()
self:InitVisibilityDriver() self:InitVisibilityDriver()
end end
@@ -166,11 +179,6 @@ function Bar:Unlock()
else else
self.overlay:SetBackdropColor(0, 1, 0, 0.5) self.overlay:SetBackdropColor(0, 1, 0, 0.5)
end end
if self.config.fadeout then
self:SetScript("OnUpdate", nil)
self.faded = nil
self:SetConfigAlpha()
end
end end
function Bar:Lock() function Bar:Lock()
@@ -181,8 +189,6 @@ function Bar:Lock()
self:ApplyVisibilityDriver() self:ApplyVisibilityDriver()
self.overlay:Hide() self.overlay:Hide()
self:SetFadeOut()
end end
function Bar:LoadPosition() function Bar:LoadPosition()
@@ -241,14 +247,7 @@ end
function Bar:SetFadeOut(fadeout) function Bar:SetFadeOut(fadeout)
if fadeout ~= nil then if fadeout ~= nil then
self.config.fadeout = fadeout self.config.fadeout = fadeout
end self:InitVisibilityDriver()
if self.config.fadeout then
self:SetScript("OnUpdate", barOnUpdateFunc)
self:ControlFadeOut()
else
self:SetScript("OnUpdate", nil)
self.faded = nil
self:SetConfigAlpha()
end end
end end
@@ -276,14 +275,12 @@ function Bar:SetFadeOutDelay(delay)
end end
function Bar:ControlFadeOut() function Bar:ControlFadeOut()
if self.config.fadeout then if self.faded and MouseIsOver(self) then
if self.faded and MouseIsOver(self) then self:SetAlpha(self.config.alpha)
self:SetAlpha(self.config.alpha) self.faded = nil
self.faded = nil elseif not self.faded and not MouseIsOver(self) then
elseif not self.faded and not MouseIsOver(self) then self:SetAlpha(self.config.fadeoutalpha)
self:SetAlpha(self.config.fadeoutalpha) self.faded = true
self.faded = true
end
end end
end end
@@ -332,7 +329,7 @@ function Bar:InitVisibilityDriver()
end end
end end
end end
table_insert(self.hidedriver, "show") table_insert(self.hidedriver, self.config.fadeout and "fade" or "show")
self:ApplyVisibilityDriver() self:ApplyVisibilityDriver()
end end
@@ -345,6 +342,9 @@ end
function Bar:DisableVisibilityDriver() function Bar:DisableVisibilityDriver()
UnregisterStateDriver(self, "vis") UnregisterStateDriver(self, "vis")
self:Show() self:Show()
self:SetScript("OnUpdate", nil)
self.faded = nil
self:SetConfigAlpha()
end end
function Bar:GetVisibilityOption(option, index) function Bar:GetVisibilityOption(option, index)