110 lignes
3 Kio
Lua
110 lignes
3 Kio
Lua
--[[
|
|
Author: Alternator (Massiner of Nathrezim)
|
|
Copyright 2010
|
|
|
|
Notes:
|
|
]]
|
|
|
|
local UILib = BFUILib;
|
|
|
|
|
|
|
|
--[[
|
|
This is a little (hack) utility to allow clicking a button/bar without actually triggering the buttons secure action, it is expected that whenever the mouse moves over a button
|
|
that we need to click without triggering, this function will be called to position itself over the button to intercept the click
|
|
--]]
|
|
local ClickButtonMask = CreateFrame("BUTTON", nil, BFConfigureLayer);
|
|
ClickButtonMask:Hide();
|
|
ClickButtonMask:RegisterForClicks("LeftButtonUp", "RightButtonUp");
|
|
ClickButtonMask.HLTexture = ClickButtonMask:CreateTexture();
|
|
ClickButtonMask.HLTexture:SetPoint("TOPLEFT", ClickButtonMask, "TOPLEFT");
|
|
ClickButtonMask.HLTexture:SetPoint("BOTTOMRIGHT", ClickButtonMask, "BOTTOMRIGHT");
|
|
ClickButtonMask.Locked = false;
|
|
ClickButtonMask.Inside = false;
|
|
|
|
|
|
--Note that If a Right click function is not set, the primary callbackfunc will be called if right is clicked
|
|
function UILib.SetMask(Ref, CallBackFunc, CallBackFuncRight, Widget, Cursor, HighlightTexture, TexCoords)
|
|
if (Ref) then
|
|
if (ClickButtonMask.Locked) then
|
|
return;
|
|
end
|
|
ClickButtonMask.Ref = Ref;
|
|
ClickButtonMask.CallBackFunc = CallBackFunc;
|
|
ClickButtonMask.CallBackFuncRight = CallBackFuncRight;
|
|
ClickButtonMask.Cursor = Cursor;
|
|
|
|
ClickButtonMask:SetParent(Widget); --I believe by setting the parent the strata and level are auto set
|
|
ClickButtonMask:ClearAllPoints();
|
|
ClickButtonMask:SetPoint("TOPLEFT", Widget, "TOPLEFT");
|
|
ClickButtonMask:SetPoint("BOTTOMRIGHT", Widget, "BOTTOMRIGHT");
|
|
ClickButtonMask:SetFrameLevel(Widget:GetFrameLevel() + 1);
|
|
ClickButtonMask.HLTexture:SetTexture(HighlightTexture, true);
|
|
ClickButtonMask.HLTexture:SetTexCoord(unpack(TexCoords));
|
|
ClickButtonMask:Show();
|
|
|
|
else
|
|
if (ClickButtonMask.Locked) then
|
|
UILib.UnlockMask();
|
|
end
|
|
ClickButtonMask.Ref = nil;
|
|
ClickButtonMask.CallBackFunc = nil;
|
|
ClickButtonMask.CallBackFuncRight = nil;
|
|
ClickButtonMask.Cursor = nil;
|
|
|
|
ClickButtonMask:SetParent(BFConfigureLayer);
|
|
ClickButtonMask:ClearAllPoints();
|
|
ClickButtonMask:Hide();
|
|
end
|
|
|
|
end
|
|
|
|
|
|
function UILib.LockMask()
|
|
ClickButtonMask.Locked = true;
|
|
end
|
|
|
|
|
|
function UILib.UnlockMask()
|
|
if (not ClickButtonMask.Inside) then
|
|
ClickButtonMask.HLTexture:Hide();
|
|
end
|
|
ClickButtonMask.Locked = false;
|
|
end
|
|
|
|
|
|
function ClickButtonMask:OnClick(Button)
|
|
if (Button == "RightButton") then
|
|
if (self.CallBackFuncRight) then
|
|
self.CallBackFuncRight(self.Ref);
|
|
return;
|
|
end
|
|
end
|
|
|
|
if (self.CallBackFunc) then
|
|
self.CallBackFunc(self.Ref);
|
|
end
|
|
end
|
|
|
|
|
|
function ClickButtonMask:OnEnter()
|
|
self.HLTexture:Show();
|
|
self.Inside = true;
|
|
if (self.Cursor) then
|
|
SetCursor(self.Cursor);
|
|
else
|
|
SetCursor(nil);
|
|
end
|
|
end
|
|
|
|
|
|
function ClickButtonMask:OnLeave()
|
|
self.Inside = false;
|
|
if (not self.Locked) then
|
|
self.HLTexture:Hide();
|
|
end
|
|
SetCursor(nil);
|
|
end
|
|
ClickButtonMask:SetScript("OnEnter", ClickButtonMask.OnEnter);
|
|
ClickButtonMask:SetScript("OnLeave", ClickButtonMask.OnLeave);
|
|
ClickButtonMask:SetScript("OnClick", ClickButtonMask.OnClick);
|