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.
90 lines
2.3 KiB
90 lines
2.3 KiB
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)
|
|
|