You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.2 KiB

5 years ago
local pairs = pairs
local MovAny = _G.MovAny
local m = {
vars = {"frameStrata", "clampToScreen", "enableMouse", "movable", "unregisterAllEvents"},
orgVars = {"orgFrameStrata", "orgClampToScreen", "orgEnableMouse", "orgMovable"},
Apply = function(self, e, f, opt, level)
opt = opt or e.userData
if not opt then
return
end
level = level or 1
if level == 1 and opt.frameStrata then
if not opt.orgFrameStrata then
opt.orgFrameStrata = f:GetFrameStrata()
end
f:SetFrameStrata(opt.frameStrata)
end
if opt.clampToScreen and f.IsClampedToScreen then
if not opt.orgClampToScreen then
opt.orgClampToScreen = f:IsClampedToScreen()
end
f:SetClampedToScreen(opt.clampToScreen)
end
if opt.enableMouse ~= nil then
opt.orgEnableMouse = f:IsMouseEnabled()
f:EnableMouse(opt.enableMouse)
end
if opt.movable ~= nil then
opt.orgMovable = f:IsMovable()
f:SetMovable(opt.movable)
end
if opt.unregisterAllEvents and f.UnregisterAllEvents then
f:UnregisterAllEvents()
end
if f.attachedChildren then
level = level + 1
for i, v in pairs(f.attachedChildren) do
self:Apply(e, v, opt, level)
end
end
end,
Reset = function(self, e, f, readOnly, opt, level)
opt = opt or e.userData
if not opt then
return
end
level = level or 1
if level == 1 and opt.orgFrameStrata then
f:SetFrameStrata(opt.orgFrameStrata)
if not readOnly then
opt.frameStrata = nil
opt.orgFrameStrata = nil
end
end
if opt.orgClampToScreen and f.IsClampedToScreen then
f:SetClampedToScreen(opt.orgClampToScreen)
if not readOnly then
opt.clampToScreen = nil
opt.orgClampToScreen = nil
end
end
if opt.orgEnableMouse then
f:EnableMouse(opt.orgEnableMouse)
if not readOnly then
opt.orgEnableMouse = nil
opt.enableMouse = nil
end
end
if opt.orgMovable then
f:SetMovable(opt.orgMovable)
if not readOnly then
opt.orgMovable = nil
opt.movable = nil
end
end
if not readOnly then
opt.unregisterAllEvents = nil
end
if f.attachedChildren then
level = level + 1
for i, v in pairs(f.attachedChildren) do
self:Reset(e, v, true, opt, level)
end
end
end
}
MovAny:AddModule("Misc", m)