From 38498eb89b73dbaca6faea224118f5a54cd5b6c8 Mon Sep 17 00:00:00 2001 From: Steven Jackson Date: Thu, 4 Dec 2014 20:01:58 -0600 Subject: [PATCH] 5.3.24 --- Interface/AddOns/SVUI/data/defaults.lua | 56 ++- Interface/AddOns/SVUI/framework/docks/docks.lua | 48 +-- Interface/AddOns/SVUI/framework/framework.lua | 1 + .../AddOns/SVUI/framework/movers/mover_dragger.lua | 383 ++++++++++++++++++++ .../AddOns/SVUI/framework/movers/mover_mentalo.lua | 266 +------------- Interface/AddOns/SVUI/framework/movers/movers.xml | 1 + .../AddOns/SVUI/packages/actionbar/KeyBind.lua | 2 +- Interface/AddOns/SVUI/packages/aura/SVAura.lua | 4 +- Interface/AddOns/SVUI/packages/bag/SVBag.lua | 4 +- .../AddOns/SVUI/packages/henchmen/SVHenchmen.lua | 8 +- Interface/AddOns/SVUI/packages/map/SVMap.lua | 6 +- .../SVUI/packages/override/components/loot.lua | 2 +- .../SVUI/packages/override/components/mirror.lua | 2 +- Interface/AddOns/SVUI/packages/quest/SVQuest.lua | 311 ---------------- Interface/AddOns/SVUI/packages/stats/SVStats.lua | 2 +- Interface/AddOns/SVUI/packages/tip/SVTip.lua | 2 +- .../AddOns/SVUI/packages/unit/elements/auras.lua | 378 +++++++++---------- Interface/AddOns/SVUI/packages/unit/frames.lua | 11 +- Interface/AddOns/SVUI/scripts/misc.lua | 4 +- Interface/AddOns/SVUI/setup/presets.lua | 8 - Interface/AddOns/SVUI/system/alerts.lua | 4 +- Interface/AddOns/SVUI/system/visibility.lua | 2 +- .../SVUI_ConfigOMatic/components/units/core.lua | 38 +- .../SVUI_ConfigOMatic/components/units/focus.lua | 15 +- .../SVUI_ConfigOMatic/components/units/target.lua | 21 +- .../AddOns/SVUI_CraftOMatic/components/farming.lua | 6 +- 26 files changed, 677 insertions(+), 908 deletions(-) create mode 100644 Interface/AddOns/SVUI/framework/movers/mover_dragger.lua delete mode 100644 Interface/AddOns/SVUI/packages/quest/SVQuest.lua diff --git a/Interface/AddOns/SVUI/data/defaults.lua b/Interface/AddOns/SVUI/data/defaults.lua index e63e146..d874ce6 100644 --- a/Interface/AddOns/SVUI/data/defaults.lua +++ b/Interface/AddOns/SVUI/data/defaults.lua @@ -870,7 +870,7 @@ SV.defaults["SVUnit"] = { ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = true, ["filterRaid"] = true, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = true, ["filterDispellable"] = false, ["useFilter"] = "", @@ -888,7 +888,7 @@ SV.defaults["SVUnit"] = { ["verticalGrowth"] = "UP", ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = false, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", @@ -903,7 +903,7 @@ SV.defaults["SVUnit"] = { ["attachTo"] = "DEBUFFS", ["filterPlayer"] = true, ["filterRaid"] = true, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = true, ["filterDispellable"] = false, ["useFilter"] = "", @@ -973,7 +973,6 @@ SV.defaults["SVUnit"] = { ["threatEnabled"] = true, ["rangeCheck"] = true, ["predict"] = false, - ["smartAuraDisplay"] = "DISABLED", ["middleClickFocus"] = true, ["formatting"] = { ["power_colored"] = true, @@ -1053,7 +1052,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1087,7 +1086,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1117,7 +1116,7 @@ SV.defaults["SVUnit"] = { friendly = true, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1268,7 +1267,7 @@ SV.defaults["SVUnit"] = { friendly = true, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1302,7 +1301,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1341,7 +1340,6 @@ SV.defaults["SVUnit"] = { ["width"] = 170, ["height"] = 30, ["predict"] = false, - ["smartAuraDisplay"] = "DISABLED", ["formatting"] = { ["power_colored"] = true, ["power_type"] = "none", @@ -1410,7 +1408,7 @@ SV.defaults["SVUnit"] = { friendly = true, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1444,7 +1442,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1487,7 +1485,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1599,7 +1597,7 @@ SV.defaults["SVUnit"] = { friendly = true, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1633,7 +1631,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1741,7 +1739,7 @@ SV.defaults["SVUnit"] = { ["horizontalGrowth"] = "LEFT", ["filterPlayer"] = true, ["filterRaid"] = true, - ["filterAllowed"] = true, + ["filterAll"] = true, ["filterInfinite"] = true, ["filterDispellable"] = false, ["useFilter"] = "", @@ -1759,7 +1757,7 @@ SV.defaults["SVUnit"] = { ["verticalGrowth"] = "DOWN", ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = false, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", @@ -1860,7 +1858,7 @@ SV.defaults["SVUnit"] = { friendly = true, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1894,7 +1892,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = true, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -1990,7 +1988,7 @@ SV.defaults["SVUnit"] = { ["horizontalGrowth"] = "LEFT", ["filterPlayer"] = false, ["filterRaid"] = false, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2008,7 +2006,7 @@ SV.defaults["SVUnit"] = { ["verticalGrowth"] = "UP", ["horizontalGrowth"] = "LEFT", ["filterPlayer"] = true, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2126,7 +2124,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -2160,7 +2158,7 @@ SV.defaults["SVUnit"] = { friendly = false, enemy = false, }, - ["filterAllowed"] = + ["filterAll"] = { friendly = false, enemy = false, @@ -2288,7 +2286,7 @@ SV.defaults["SVUnit"] = { ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = true, ["filterRaid"] = true, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = true, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2306,7 +2304,7 @@ SV.defaults["SVUnit"] = { ["verticalGrowth"] = "DOWN", ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = false, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2462,7 +2460,7 @@ SV.defaults["SVUnit"] = { ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = true, ["filterRaid"] = true, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = true, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2480,7 +2478,7 @@ SV.defaults["SVUnit"] = { ["verticalGrowth"] = "UP", ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = false, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2598,7 +2596,7 @@ SV.defaults["SVUnit"] = { ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = true, ["filterRaid"] = true, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = true, ["filterDispellable"] = false, ["useFilter"] = "", @@ -2616,7 +2614,7 @@ SV.defaults["SVUnit"] = { ["verticalGrowth"] = "UP", ["horizontalGrowth"] = "RIGHT", ["filterPlayer"] = false, - ["filterAllowed"] = false, + ["filterAll"] = false, ["filterInfinite"] = false, ["filterDispellable"] = false, ["useFilter"] = "", diff --git a/Interface/AddOns/SVUI/framework/docks/docks.lua b/Interface/AddOns/SVUI/framework/docks/docks.lua index fbe28f7..ed8cc66 100644 --- a/Interface/AddOns/SVUI/framework/docks/docks.lua +++ b/Interface/AddOns/SVUI/framework/docks/docks.lua @@ -519,7 +519,7 @@ local RefreshBarLayout = function(self) if(nextButton) then offset = (safeIndex - 1) * (size + 6) + 6 nextButton:ClearAllPoints(); - nextButton:Size(size, size); + nextButton:SetSize(size, size); nextButton:SetPoint(anchor, self.ToolBar, anchor, (offset * mod), 0); if(not nextButton:IsShown()) then nextButton:Show(); @@ -650,7 +650,7 @@ local CreateBasicToolButton = function(self, displayName, texture, onclick, glob local button = _G[globalName .. "DockletButton"] or CreateFrame("Button", globalName, self.ToolBar, template) button:ClearAllPoints() - button:Size(size, size) + button:SetSize(size, size) button:SetFramedButtonTemplate() button.Icon:SetTexture(dockIcon) button:SetAttribute("tipText", displayName) @@ -825,7 +825,7 @@ function Dock:NewDocklet(location, globalName, readableName, texture, onclick) local newParent = self[location]; if(not newParent) then return end - local frame = CreateFrame("Frame", globalName, UIParent, "SVUI_DockletWindowTemplate"); + local frame = _G[globalName] or CreateFrame("Frame", globalName, UIParent, "SVUI_DockletWindowTemplate"); frame:SetParent(newParent.Window); frame:SetSize(newParent.Window:GetSize()); frame:SetAllPoints(newParent.Window); @@ -878,7 +878,7 @@ function Dock:NewAdvancedDocklet(location, globalName) local spacing = SV.db.Dock.buttonSpacing; frame.Bar = CreateFrame("Frame", nil, newParent); - frame.Bar:Size(1, height); + frame.Bar:SetSize(1, height); frame.Bar:Point(barAnchor, newParent.Bar.ToolBar, barReverse, (spacing * mod), 0) SV.Mentalo:Add(frame.Bar, globalName .. " Dock Bar"); @@ -946,27 +946,27 @@ function Dock:Refresh() local width, height = self:GetDimensions(location); local dock = self[location]; - dock.Bar:Size(width, buttonsize) + dock.Bar:SetSize(width, buttonsize) dock.Bar.ToolBar:SetHeight(buttonsize) - dock:Size(width, height) - dock.Alert:Size(width, 1) - dock.Window:Size(width, height) + dock:SetSize(width, height) + dock.Alert:SetSize(width, 1) + dock.Window:SetSize(width, height) if(dock.Bar.Button) then - dock.Bar.Button:Size(buttonsize, buttonsize) + dock.Bar.Button:SetSize(buttonsize, buttonsize) end dock.Bar:Update() end end - self.BottomCenter:Size(centerWidth, centerHeight) - self.BottomCenter.Left:Size((centerWidth * 0.5), centerHeight) - self.BottomCenter.Right:Size((centerWidth * 0.5), centerHeight) + self.BottomCenter:SetSize(centerWidth, centerHeight) + self.BottomCenter.Left:SetSize((centerWidth * 0.5), centerHeight) + self.BottomCenter.Right:SetSize((centerWidth * 0.5), centerHeight) - self.TopCenter:Size(centerWidth, centerHeight) - self.TopCenter.Left:Size((centerWidth * 0.5), centerHeight) - self.TopCenter.Right:Size((centerWidth * 0.5), centerHeight) + self.TopCenter:SetSize(centerWidth, centerHeight) + self.TopCenter.Left:SetSize((centerWidth * 0.5), centerHeight) + self.TopCenter.Right:SetSize((centerWidth * 0.5), centerHeight) self:BottomBorderVisibility(); self:TopBorderVisibility(); @@ -1000,7 +1000,7 @@ function Dock:Initialize() -- [[ TOP AND BOTTOM BORDERS ]] -- - self.Border.Top = CreateFrame("Frame", "SVUITopBorder", SV.Screen) + self.Border.Top = CreateFrame("Frame", "SVUITopBorder", UIParent) self.Border.Top:Point("TOPLEFT", SV.Screen, "TOPLEFT", -1, 1) self.Border.Top:Point("TOPRIGHT", SV.Screen, "TOPRIGHT", 1, 1) self.Border.Top:Height(14) @@ -1022,7 +1022,7 @@ function Dock:Initialize() end) self:TopBorderVisibility() - self.Border.Bottom = CreateFrame("Frame", "SVUIBottomBorder", SV.Screen) + self.Border.Bottom = CreateFrame("Frame", "SVUIBottomBorder", UIParent) self.Border.Bottom:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", -1, -1) self.Border.Bottom:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", 1, -1) self.Border.Bottom:Height(14) @@ -1057,7 +1057,7 @@ function Dock:Initialize() dock.Bar:SetParent(SV.Screen) dock.Bar:ClearAllPoints() - dock.Bar:Size(width, buttonsize) + dock.Bar:SetSize(width, buttonsize) dock.Bar:SetPoint(anchor, SV.Screen, anchor, (2 * mod), (2 * vertMod)) if(not SV.cache.Docks.Order[location]) then @@ -1069,29 +1069,29 @@ function Dock:Initialize() dock.Bar.ToolBar:ClearAllPoints() if(dock.Bar.Button) then - dock.Bar.Button:Size(buttonsize, buttonsize) + dock.Bar.Button:SetSize(buttonsize, buttonsize) dock.Bar.Button:SetFramedButtonTemplate() - dock.Bar.ToolBar:Size(1, buttonsize) + dock.Bar.ToolBar:SetSize(1, buttonsize) dock.Bar.ToolBar:Point(barAnchor, dock.Bar.Button, barReverse, (spacing * mod), 0) InitDockButton(dock.Bar.Button) else - dock.Bar.ToolBar:Size(1, buttonsize) + dock.Bar.ToolBar:SetSize(1, buttonsize) dock.Bar.ToolBar:Point(barAnchor, dock.Bar, barAnchor, 0, 0) end dock:SetParent(SV.Screen) dock:ClearAllPoints() dock:SetPoint(anchor, dock.Bar, reverse, 0, (12 * vertMod)) - dock:Size(width, height) + dock:SetSize(width, height) dock:SetAttribute("buttonSize", buttonsize) dock:SetAttribute("spacingSize", spacing) dock.Alert:ClearAllPoints() - dock.Alert:Size(width, 1) + dock.Alert:SetSize(width, 1) dock.Alert:SetPoint(anchor, dock, anchor, 0, 0) dock.Window:ClearAllPoints() - dock.Window:Size(width, height) + dock.Window:SetSize(width, height) dock.Window:SetPoint(anchor, dock.Alert, reverse, 0, (4 * vertMod)) SV.Mentalo:Add(dock.Bar, location .. " Dock ToolBar"); diff --git a/Interface/AddOns/SVUI/framework/framework.lua b/Interface/AddOns/SVUI/framework/framework.lua index 17cd638..cfc14f1 100644 --- a/Interface/AddOns/SVUI/framework/framework.lua +++ b/Interface/AddOns/SVUI/framework/framework.lua @@ -32,6 +32,7 @@ function SV:LoadFramework() self.Dock:Initialize(); self.Mentalo:Initialize(); self.Graph:Initialize(); + self.Dragger:Initialize(); self.Comix:Initialize(); self.GameMenu:Initialize(); self.AFK:Initialize(); diff --git a/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua b/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua new file mode 100644 index 0000000..275d2fd --- /dev/null +++ b/Interface/AddOns/SVUI/framework/movers/mover_dragger.lua @@ -0,0 +1,383 @@ +--[[ +############################################################################## +_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # + ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # + __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # + ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # + ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # + _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # + __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # + _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# + ___\///////////___________\///___________\/////////_____\///////////_# +############################################################################## +S U P E R - V I L L A I N - U I By: Munglunch # +############################################################################## +########################################################## +LOCALIZED LUA FUNCTIONS +########################################################## +]]-- +--[[ GLOBALS ]]-- +local _G = _G; +local unpack = _G.unpack; +local select = _G.select; +local pairs = _G.pairs; +local ipairs = _G.ipairs; +local type = _G.type; +local error = _G.error; +local pcall = _G.pcall; +local tostring = _G.tostring; +local tonumber = _G.tonumber; +local string = _G.string; +local math = _G.math; +--[[ STRING METHODS ]]-- +local format, split = string.format, string.split; +--[[ MATH METHODS ]]-- +local min, floor = math.min, math.floor; +local parsefloat = math.parsefloat; +--[[ +########################################################## +GET ADDON DATA +########################################################## +]]-- +local SV = select(2, ...) +local L = SV.L; + +local Dragger = CreateFrame("Frame", nil); +Dragger.Frames = {}; + + +local UIPanels = {}; + +UIPanels["AchievementFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["AuctionFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["ArchaeologyFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["BattlefieldMinimap"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["BarberShopFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["BlackMarketFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["CalendarFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["CharacterFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["ClassTrainerFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["DressUpFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["DraenorZoneAbilityFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["EncounterJournal"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["FriendsFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["GMSurveyFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["GossipFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["GuildFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["GuildBankFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["GuildRegistrarFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["GarrisonLandingPage"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["GarrisonMissionFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["GarrisonCapacitiveDisplayFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["HelpFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["InterfaceOptionsFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["ItemUpgradeFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["KeyBindingFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["LFGDungeonReadyPopup"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["MacOptionsFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["MacroFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["MailFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["MerchantFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["PlayerTalentFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["PetJournalParent"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["PetStableFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["PVEFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["PVPFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["QuestFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["QuestLogFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["RaidBrowserFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["ReadyCheckFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["ReforgingFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["ReportCheatingDialog"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["ReportPlayerNameDialog"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["RolePollPopup"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["SpellBookFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TabardFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TaxiFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TimeManagerFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TradeSkillFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TradeFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TransmogrifyFrame"] = { point = 'TBD', snap = false, centered = false }; +UIPanels["TutorialFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["VideoOptionsFrame"] = { point = 'TBD', snap = false, centered = true }; +UIPanels["VoidStorageFrame"] = { point = 'TBD', snap = false, centered = false }; + +UIPanels["ScrollOfResurrectionSelectionFrame"] = { point = 'TBD', snap = false, centered = false }; +--[[ +########################################################## +LOCAL FUNCTIONS +########################################################## +]]-- +local function Pinpoint(parent) + local centerX, centerY = parent:GetCenter() + local screenWidth = GetScreenWidth() + local screenHeight = GetScreenHeight() + local result; + if not centerX or not centerY then + return "CENTER" + end + local heightTop = screenHeight * 0.75; + local heightBottom = screenHeight * 0.25; + local widthLeft = screenWidth * 0.25; + local widthRight = screenWidth * 0.75; + if(((centerX > widthLeft) and (centerX < widthRight)) and (centerY > heightTop)) then + result = "TOP" + elseif((centerX < widthLeft) and (centerY > heightTop)) then + result = "TOPLEFT" + elseif((centerX > widthRight) and (centerY > heightTop)) then + result = "TOPRIGHT" + elseif(((centerX > widthLeft) and (centerX < widthRight)) and centerY < heightBottom) then + result = "BOTTOM" + elseif((centerX < widthLeft) and (centerY < heightBottom)) then + result = "BOTTOMLEFT" + elseif((centerX > widthRight) and (centerY < heightBottom)) then + result = "BOTTOMRIGHT" + elseif((centerX < widthLeft) and (centerY > heightBottom) and (centerY < heightTop)) then + result = "LEFT" + elseif((centerX > widthRight) and (centerY < heightTop) and (centerY > heightBottom)) then + result = "RIGHT" + else + result = "CENTER" + end + return result +end + +local function CurrentPosition(frame) + if not frame then return end + local anchor1, parent, anchor2, x, y = frame:GetPoint() + if((not anchor1) or (not anchor2) or (not x) or (not y)) then + return "TBD" + end + + local parentName + if(not parent or (parent and (not parent:GetName()))) then + parentName = "UIParent" + else + parentName = parent:GetName() + end + return ("%s\031%s\031%s\031%d\031%d"):format(anchor1, parentName, anchor2, parsefloat(x), parsefloat(y)) +end +--[[ +########################################################## +CONSTRUCTS +########################################################## +]]-- +function Dragger:New(frameName) + if(not UIPanels[frameName]) then + UIPanels[frameName] = { point = 'TBD', snap = false, centered = false }; + if(not self.EventsActive) then + self:RegisterEvent("ADDON_LOADED") + self:RegisterEvent("LFG_UPDATE") + self:RegisterEvent("ROLE_POLL_BEGIN") + self:RegisterEvent("READY_CHECK") + self:RegisterEvent("UPDATE_WORLD_STATES") + self:RegisterEvent("WORLD_STATE_TIMER_START") + self:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE") + self:SetScript("OnEvent", self.EventHandler) + self.EventsActive = true; + end + end +end + +function Dragger:SavePoint(frameName) + if((not _G[frameName]) or (not SV.cache.UIPanels)) then return end + SV.cache.UIPanels[frameName] = CurrentPosition(_G[frameName]) +end + +function Dragger:SetPositions() + for frameName, point in pairs(Dragger.Frames) do + local frame = _G[frameName]; + local anchor1, parent, anchor2, x, y; + if(frame) then + if (SV.cache.UIPanels and SV.cache.UIPanels[frameName] and (type(SV.cache.UIPanels[frameName]) == "string")) then + local saved = SV.cache.UIPanels[frameName] + if(saved ~= 'TBD') then + local anchor1, parent, anchor2, x, y = split("\031", saved) + frame:ClearAllPoints() + frame:SetPoint(anchor1, parent, anchor2, x, y) + end + elseif(point and (type(point) == "string") and (point ~= 'TBD')) then + anchor1, parent, anchor2, x, y = split("\031", point) + frame:ClearAllPoints() + frame:SetPoint(anchor1, parent, anchor2, x, y) + end + end + end +end + +function Dragger:Reset() + for frameName, point in pairs(self.Frames) do + if(SV.cache.UIPanels and SV.cache.UIPanels[frameName]) then + SV.cache.UIPanels[frameName] = nil + end + end + ReloadUI() +end +--[[ +########################################################## +SCRIPT AND EVENT HANDLERS +########################################################## +]]-- +local DraggerFrame_OnDragStart = function(self) + if(not self:IsMovable()) then return end + self:StartMoving() + self.IsMoving = true +end + +local DraggerFrame_OnDragStop = function(self) + if(not self:IsMovable()) then return end + local frameName = self:GetName(); + self.IsMoving = false; + self.CanUpdate = true; + self:StopMovingOrSizing() + local anchor1, parent, anchor2, x, y = self:GetPoint() + parent = self:GetParent():GetName() + self:ClearAllPoints() + self:SetPoint(anchor1, parent, anchor2, x, y) + Dragger.Frames[frameName] = CurrentPosition(self) + if(UIPanels[frameName] and UIPanels[frameName].saved) then + Dragger:SavePoint(frameName) + end +end + +local DraggerFrame_OnShow = function(self) + if(not self:IsMovable()) then return end + local frameName = self:GetName(); + if(UIPanels[frameName] and UIPanels[frameName].saved and (SV.cache.UIPanels and SV.cache.UIPanels[frameName] and (type(SV.cache.UIPanels[frameName]) == "string"))) then + local saved = SV.cache.UIPanels[frameName] + if(saved ~= 'TBD') then + local anchor1, parent, anchor2, x, y = split("\031", saved) + self:ClearAllPoints() + self:SetPoint(anchor1, parent, anchor2, x, y) + self.CanUpdate = false; + end + else + local defaultPoint = Dragger.Frames[frameName] + if(defaultPoint and (type(defaultPoint) == "string") and (defaultPoint ~= 'TBD')) then + local anchor1, parent, anchor2, x, y = split("\031", defaultPoint) + self:ClearAllPoints() + self:SetPoint(anchor1, parent, anchor2, x, y) + self.CanUpdate = false; + end + end +end + +local DraggerFrame_OnAttributeChanged = function(self) + if(self.IsMoving) then return end + self.CanUpdate = false; +end + +local DraggerFrame_PostSetPoint = function(self) + if(self.IsMoving) then return end + self.CanUpdate = true; +end + +local DraggerFrame_OnUpdate = function(self) + if(InCombatLockdown() or (self.IsMoving)) then return end + local frameName = self:GetName(); + if(self.CanUpdate) then + if(UIPanels[frameName] and UIPanels[frameName].saved and (SV.cache.UIPanels and SV.cache.UIPanels[frameName] and (type(SV.cache.UIPanels[frameName]) == "string"))) then + local saved = SV.cache.UIPanels[frameName] + if(saved ~= 'TBD') then + local anchor1, parent, anchor2, x, y = split("\031", saved) + self:ClearAllPoints() + self:SetPoint(anchor1, parent, anchor2, x, y) + self.CanUpdate = false; + end + else + local defaultPoint = Dragger.Frames[frameName] + if(defaultPoint and (type(defaultPoint) == "string") and (defaultPoint ~= 'TBD')) then + local anchor1, parent, anchor2, x, y = split("\031", defaultPoint) + self:ClearAllPoints() + self:SetPoint(anchor1, parent, anchor2, x, y) + self.CanUpdate = false; + end + end + end +end + +function Dragger:EventHandler(event, ...) + if(InCombatLockdown()) then return end + + local noMoreChanges = true; + + for frameName, data in pairs(UIPanels) do + if((not self.Frames[frameName]) or (self.Frames[frameName] and (self.Frames[frameName] == "TBD"))) then + local frame = _G[frameName] + if(frame) then + frame:EnableMouse(true) + + if(frameName == "LFGDungeonReadyPopup") then + LFGDungeonReadyDialog:EnableMouse(false) + end + + frame:SetMovable(true) + frame:RegisterForDrag("LeftButton") + frame:SetClampedToScreen(true) + frame:HookScript("OnUpdate", DraggerFrame_OnUpdate) + frame:HookScript("OnShow", DraggerFrame_OnShow) + frame:SetScript("OnDragStart", DraggerFrame_OnDragStart) + frame:SetScript("OnDragStop", DraggerFrame_OnDragStop) + + if(self.CenterEverything) then + frame:ClearAllPoints() + frame:SetPoint('TOP', SV.Screen, 'TOP', 0, -180) + end + + self.Frames[frameName] = CurrentPosition(frame) + else + self.Frames[frameName] = 'TBD' + end + noMoreChanges = false; + end + end + + if(noMoreChanges) then + self.EventsActive = false; + self:UnregisterEvent("ADDON_LOADED") + self:UnregisterEvent("LFG_UPDATE") + self:UnregisterEvent("ROLE_POLL_BEGIN") + self:UnregisterEvent("READY_CHECK") + self:UnregisterEvent("UPDATE_WORLD_STATES") + self:UnregisterEvent("WORLD_STATE_TIMER_START") + self:UnregisterEvent("WORLD_STATE_UI_TIMER_UPDATE") + self:SetScript("OnEvent", nil) + end +end +--[[ +########################################################## +Initialize +########################################################## +]]-- +function Dragger:Initialize() + SV.cache.UIPanels = SV.cache.UIPanels or {} + + if(not SV.db.general.questWatch) then + UIPanels["ObjectiveTrackerFrame"] = { point = 'TBD', snap = false, centered = false }; + end + + self.EventsActive = true + self.CenterEverything = SV.db.general.multiMonitor + + self:RegisterEvent("ADDON_LOADED") + self:RegisterEvent("LFG_UPDATE") + self:RegisterEvent("ROLE_POLL_BEGIN") + self:RegisterEvent("READY_CHECK") + self:RegisterEvent("UPDATE_WORLD_STATES") + self:RegisterEvent("WORLD_STATE_TIMER_START") + self:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE") + + self:EventHandler() + self:SetScript("OnEvent", self.EventHandler) + + if(SV.db.general.saveDraggable) then + for frameName, data in pairs(UIPanels) do + data.saved = true + end + self:SetPositions() + end + + hooksecurefunc("UIParent_ManageFramePositions", Dragger.SetPositions) +end + +SV.Dragger = Dragger \ No newline at end of file diff --git a/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua b/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua index 364ef14..a2ecc02 100644 --- a/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua +++ b/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua @@ -44,49 +44,6 @@ local L = SV.L; local Mentalo = CreateFrame("Frame", nil) Mentalo.Frames = {} -Mentalo.Blizzard = {} - -local DraggableFrames = { - "AchievementFrame", "AuctionFrame", "ArchaeologyFrame", - "BattlefieldMinimap", "BarberShopFrame", "BlackMarketFrame", - "CalendarFrame", "CharacterFrame", "ClassTrainerFrame", - "DressUpFrame", "DraenorZoneAbilityFrame", - "EncounterJournal", - "FriendsFrame", - "GMSurveyFrame", "GossipFrame", "GuildFrame", "GuildBankFrame", "GuildRegistrarFrame", - "GarrisonLandingPage", "GarrisonMissionFrame", "GarrisonCapacitiveDisplayFrame", - "HelpFrame", - "InterfaceOptionsFrame", - "ItemUpgradeFrame", - "KeyBindingFrame", - "LFGDungeonReadyPopup", - "MacOptionsFrame", "MacroFrame", "MailFrame", "MerchantFrame", - "PlayerTalentFrame", "PetJournalParent", "PetStableFrame", "PVEFrame", "PVPFrame", - "QuestFrame", "QuestLogFrame", - "RaidBrowserFrame", "ReadyCheckFrame", "ReforgingFrame", "ReportCheatingDialog", "ReportPlayerNameDialog", "RolePollPopup", - "ScrollOfResurrectionSelectionFrame", "SpellBookFrame", - "TabardFrame", "TaxiFrame", "TimeManagerFrame", "TradeSkillFrame", "TradeFrame", "TransmogrifyFrame", "TutorialFrame", - "VideoOptionsFrame", "VoidStorageFrame", - --"WorldStateAlwaysUpFrame" -}; - -local CenteredFrames = { - ["BattlefieldMinimap"] = {"TOP", "TOP", 0, -80}, - ["CalendarFrame"] = {"TOP", "TOP", 0, -80}, - ["GameMenuFrame"] = {"TOP", "TOP", 0, -80}, - ["GMSurveyFrame"] = {"TOP", "TOP", 0, -80}, - ["GarrisonLandingPage"] = {"TOP", "TOP", 0, -80}, - ["GarrisonMissionFrame"] = {"TOP", "TOP", 0, -80}, - ["HelpFrame"] = {"TOP", "TOP", 0, -80}, - ["InterfaceOptionsFrame"] = {"TOP", "TOP", 0, -80}, - ["KeyBindingFrame"] = {"TOP", "TOP", 0, -80}, - ["LFGDungeonReadyPopup"] = {"TOP", "TOP", 0, -80}, - ["MacOptionsFrame"] = {"TOP", "TOP", 0, -80}, - ["ReadyCheckFrame"] = {"TOP", "TOP", 0, -80}, - ["RolePollPopup"] = {"TOP", "TOP", 0, -80}, - ["TutorialFrame"] = {"TOP", "TOP", 0, -80}, - ["VideoOptionsFrame"] = {"TOP", "TOP", 0, -80}, -}; --[[ /$$$$$$ /$$ /$$ /$$ /$$__ $$ | $$ |__/ | $$ @@ -282,22 +239,17 @@ local function Pinpoint(parent) end local function CurrentPosition(frame) - if not frame then return end + if not frame then return end + + local parentName local anchor1, parent, anchor2, x, y = frame:GetPoint() + if((not anchor1) or (not anchor2) or (not x) or (not y)) then - local frameName = frame:GetName() - if(CenteredFrames[frameName]) then - anchor1, anchor2, x, y = unpack(CenteredFrames[frameName]) - else - anchor1, anchor2, x, y = "TOPLEFT", "TOPLEFT", 160, -80 - end + anchor1, anchor2, x, y = "TOPLEFT", "TOPLEFT", 160, -80 end - local parentName - if not parent then - parentName = "SVUIParent" - elseif not parent:GetName() then - parentName = "SVUI_Player" + if(not parent or (parent and (not parent:GetName()))) then + parentName = "UIParent" else parentName = parent:GetName() end @@ -365,7 +317,7 @@ end | $$ | $$ | $$| $$$$$$$$ | $$ | $$| $$ | $$| $$ \ $$| $$$$$$$/ |__/ |__/ |__/|________/ |__/ |__/|__/ |__/|__/ \__/|_______/ --]] -local TheHand = CreateFrame("Frame", "SVUI_HandOfMentalo", SV.Screen) +local TheHand = CreateFrame("Frame", "SVUI_HandOfMentalo", UIParent) TheHand:SetFrameStrata("DIALOG") TheHand:SetFrameLevel(99) TheHand:SetClampedToScreen(true) @@ -615,14 +567,14 @@ function Mentalo:New(frame, moveName, title, snap, dragStopFunc) movable.postdrag = dragStopFunc; movable.snapOffset = snap or -2; - local anchor1, anchorParent, anchor2, xPos, yPos = split("\031", CurrentPosition(frame)) + local anchor1, anchorParent, anchor2, xPos, yPos if(SV.cache.Anchors and SV.cache.Anchors[moveName] and (type(SV.cache.Anchors[moveName]) == "string")) then anchor1, anchorParent, anchor2, xPos, yPos = split("\031", SV.cache.Anchors[moveName]) - movable:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos) - else - movable:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos) + else + anchor1, anchorParent, anchor2, xPos, yPos = split("\031", CurrentPosition(frame)) end + movable:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos) movable:SetFixedPanelTemplate("Transparent") movable:SetAlpha(0.4) @@ -706,13 +658,6 @@ function Mentalo:Reset(request) SV.cache.Anchors[frameName] = nil end end - elseif(request == "Blizzard") then - for frameName, point in pairs(self.Blizzard) do - if(SV.cache.Anchors and SV.cache.Anchors[frameName]) then - SV.cache.Anchors[frameName] = nil - end - end - ReloadUI() else for frameName, frameData in pairs(self.Frames) do if(frameData.point and (request == frameData.text)) then @@ -748,22 +693,6 @@ function Mentalo:SetPositions() end end end - - for frameName, point in pairs(self.Blizzard) do - local frame = _G[frameName]; - local anchor1, parent, anchor2, x, y; - if(frame) then - if (SV.cache.Anchors and SV.cache.Anchors[frameName] and (type(SV.cache.Anchors[frameName]) == "string")) then - anchor1, parent, anchor2, x, y = split("\031", SV.cache.Anchors[frameName]) - frame:ClearAllPoints() - frame:SetPoint(anchor1, parent, anchor2, x, y) - elseif(point and (type(point) == "string")) then - anchor1, parent, anchor2, x, y = split("\031", point) - frame:ClearAllPoints() - frame:SetPoint(anchor1, parent, anchor2, x, y) - end - end - end end function Mentalo:Toggle(isConfigMode) @@ -871,153 +800,6 @@ local XML_MentaloPrecisionInputY_EnterPressed = function(self) end --[[ ########################################################## -DRAGGABLE HANDLERS -########################################################## -]]-- -local UIPanelsAdjusted = {}; - -local BlizzardFrame_OnDragStart = function(self) - if not self:IsMovable() then return end - self:StartMoving() - self.IsMoving = true -end ---[[ -########################################################## -SAVED -########################################################## -]]-- -local BlizzardSavedFrame_OnDragStop = function(self) - if(not self:IsMovable()) then return end - local frameName = self:GetName(); - self.IsMoving = false; - self:StopMovingOrSizing() - local anchor1, parent, anchor2, x, y = self:GetPoint() - parent = self:GetParent():GetName() - self:ClearAllPoints() - self:SetPoint(anchor1, parent, anchor2, x, y) - if(frameName == "QuestFrame") then - frameName = "GossipFrame" - end - Mentalo:SaveMovable(frameName) -end - -local BlizzardSavedFrame_OnUpdate = function(self) - local frameName = self:GetName(); - if(InCombatLockdown() or (self.IsMoving)) then return end - if(frameName == "QuestFrame") then - frameName = "GossipFrame" - end - if (SV.cache.Anchors and SV.cache.Anchors[frameName] and (type(SV.cache.Anchors[frameName]) == "string")) then - local anchor1, parent, anchor2, x, y = split("\031", SV.cache.Anchors[frameName]) - self:ClearAllPoints() - self:SetPoint(anchor1, parent, anchor2, x, y) - else - local defaultPoint = Mentalo.Blizzard[frameName] - if(defaultPoint and (type(defaultPoint) == "string")) then - local anchor1, parent, anchor2, x, y = split("\031", defaultPoint) - self:ClearAllPoints() - self:SetPoint(anchor1, parent, anchor2, x, y) - end - end -end - -local SavedDraggablesUpdate = function(self, event, ...) - if(InCombatLockdown()) then return end - for _, frameName in pairs(DraggableFrames) do - if((not self.Blizzard[frameName]) or (self.Blizzard[frameName] and (self.Blizzard[frameName] == "TBD"))) then - local frame = _G[frameName] - if(frame) then - frame:EnableMouse(true) - - if(frameName == "LFGDungeonReadyPopup") then - LFGDungeonReadyDialog:EnableMouse(false) - end - - frame:SetMovable(true) - frame:RegisterForDrag("LeftButton") - frame:SetClampedToScreen(true) - frame:HookScript("OnUpdate", BlizzardSavedFrame_OnUpdate) - frame:SetScript("OnDragStart", BlizzardFrame_OnDragStart) - frame:SetScript("OnDragStop", BlizzardSavedFrame_OnDragStop) - - if(self.CenterEverything and (not UIPanelsAdjusted[panelName])) then - frame:ClearAllPoints() - frame:SetPoint('TOP', SV.Screen, 'TOP', 0, -180) - UIPanelsAdjusted[frameName] = true - end - - self.Blizzard[frameName] = CurrentPosition(frame) - else - self.Blizzard[frameName] = "TBD" - end - end - end -end ---[[ -########################################################## -NOT SAVED -########################################################## -]]-- -local BlizzardFrame_OnDragStop = function(self) - if(not self:IsMovable()) then return end - local frameName = self:GetName(); - self.IsMoving = false; - self:StopMovingOrSizing() - local anchor1, parent, anchor2, x, y = self:GetPoint() - parent = self:GetParent():GetName() - self:ClearAllPoints() - self:SetPoint(anchor1, parent, anchor2, x, y) - Mentalo.Blizzard[frameName] = CurrentPosition(self) -end - -local BlizzardFrame_OnUpdate = function(self) - local frameName = self:GetName(); - if(InCombatLockdown() or (self.IsMoving)) then return end - if(frameName == "QuestFrame") then - frameName = "GossipFrame" - end - local defaultPoint = Mentalo.Blizzard[frameName] - if(defaultPoint and (type(defaultPoint) == "string")) then - local anchor1, parent, anchor2, x, y = split("\031", defaultPoint) - self:ClearAllPoints() - self:SetPoint(anchor1, parent, anchor2, x, y) - end -end - -local DefaultDraggablesUpdate = function(self, event, ...) - if(InCombatLockdown()) then return end - for _, frameName in pairs(DraggableFrames) do - if((not self.Blizzard[frameName]) or (self.Blizzard[frameName] and (self.Blizzard[frameName] == "TBD"))) then - local frame = _G[frameName] - if(frame) then - frame:EnableMouse(true) - - if(frameName == "LFGDungeonReadyPopup") then - LFGDungeonReadyDialog:EnableMouse(false) - end - - frame:SetMovable(true) - frame:RegisterForDrag("LeftButton") - frame:SetClampedToScreen(true) - frame:HookScript("OnUpdate", BlizzardFrame_OnUpdate) - frame:SetScript("OnDragStart", BlizzardFrame_OnDragStart) - frame:SetScript("OnDragStop", BlizzardFrame_OnDragStop) - - if(self.CenterEverything and (not UIPanelsAdjusted[panelName])) then - frame:ClearAllPoints() - frame:SetPoint('TOP', SV.Screen, 'TOP', 0, -180) - UIPanelsAdjusted[frameName] = true - end - - self.Blizzard[frameName] = CurrentPosition(frame) - else - self.Blizzard[frameName] = "TBD" - end - end - end -end ---[[ -########################################################## Initialize ########################################################## ]]-- @@ -1048,30 +830,8 @@ function Mentalo:Initialize() SVUI_MentaloPrecisionRightButton:SetButtonTemplate() SV.cache.Anchors = SV.cache.Anchors or {} - self.CenterEverything = SV.db.general.multiMonitor - - if(not SV.db.general.questWatch) then - tinsert(DraggableFrames, "ObjectiveTrackerFrame") - end - - self:RegisterEvent("ADDON_LOADED") - self:RegisterEvent("LFG_UPDATE") - self:RegisterEvent("ROLE_POLL_BEGIN") - self:RegisterEvent("READY_CHECK") - self:RegisterEvent("UPDATE_WORLD_STATES") - self:RegisterEvent("WORLD_STATE_TIMER_START") - self:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE") - - if(SV.db.general.saveDraggable) then - self.DraggableUpdate = SavedDraggablesUpdate - else - self.DraggableUpdate = DefaultDraggablesUpdate - end - - self:DraggableUpdate() - + self:SetPositions() - self:SetScript("OnEvent", self.DraggableUpdate) -- PET JOURNAL TAINT FIX (STILL NEEDED?) -- local info = UIPanelWindows["PetJournalParent"]; diff --git a/Interface/AddOns/SVUI/framework/movers/movers.xml b/Interface/AddOns/SVUI/framework/movers/movers.xml index 1c1d332..f9a1e7d 100644 --- a/Interface/AddOns/SVUI/framework/movers/movers.xml +++ b/Interface/AddOns/SVUI/framework/movers/movers.xml @@ -258,4 +258,5 @@