From ba5761822b2d511faa76d7af9896cd153564d496 Mon Sep 17 00:00:00 2001 From: Munglunch Date: Wed, 3 Dec 2014 12:07:26 -0600 Subject: [PATCH] 5.3.201 --- Interface/AddOns/SVUI/data/defaults.lua | 1 + .../AddOns/SVUI/framework/movers/mover_mentalo.lua | 115 ++++++++++++++++---- .../AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua | 16 ++- 3 files changed, 107 insertions(+), 25 deletions(-) diff --git a/Interface/AddOns/SVUI/data/defaults.lua b/Interface/AddOns/SVUI/data/defaults.lua index e970336..d13979f 100644 --- a/Interface/AddOns/SVUI/data/defaults.lua +++ b/Interface/AddOns/SVUI/data/defaults.lua @@ -54,6 +54,7 @@ SV.defaults["general"] = { ["cooldown"] = true, ["autoScale"] = true, ["multiMonitor"] = false, + ["saveDraggable"] = false, ["taintLog"] = false, ["stickyFrames"] = true, ["loginmessage"] = true, diff --git a/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua b/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua index d041845..364ef14 100644 --- a/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua +++ b/Interface/AddOns/SVUI/framework/movers/mover_mentalo.lua @@ -874,7 +874,34 @@ end DRAGGABLE HANDLERS ########################################################## ]]-- -local BlizzardFrame_OnUpdate = function(self) +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 @@ -894,12 +921,43 @@ local BlizzardFrame_OnUpdate = function(self) end end -local BlizzardFrame_OnDragStart = function(self) - if not self:IsMovable() then return end - self:StartMoving() - self.IsMoving = true -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(); @@ -909,15 +967,24 @@ local BlizzardFrame_OnDragStop = function(self) 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 - Mentalo:SaveMovable(frameName) + 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 UIPanelsAdjusted = {}; - -local MentaloDraggablesUpdate = function(self, event, ...) +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 @@ -987,20 +1054,26 @@ function Mentalo:Initialize() tinsert(DraggableFrames, "ObjectiveTrackerFrame") end - MentaloDraggablesUpdate(self) + 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:SetPositions() + if(SV.db.general.saveDraggable) then + self.DraggableUpdate = SavedDraggablesUpdate + else + self.DraggableUpdate = DefaultDraggablesUpdate + end - Mentalo:RegisterEvent("ADDON_LOADED") - Mentalo:RegisterEvent("LFG_UPDATE") - Mentalo:RegisterEvent("ROLE_POLL_BEGIN") - Mentalo:RegisterEvent("READY_CHECK") - Mentalo:RegisterEvent("UPDATE_WORLD_STATES") - Mentalo:RegisterEvent("WORLD_STATE_TIMER_START") - Mentalo:RegisterEvent("WORLD_STATE_UI_TIMER_UPDATE") - Mentalo:SetScript("OnEvent", MentaloDraggablesUpdate) + self:DraggableUpdate() + + self:SetPositions() + self:SetScript("OnEvent", self.DraggableUpdate) - --PET JOURNAL TAINT FIX (STILL NEEDED?) + -- PET JOURNAL TAINT FIX (STILL NEEDED?) -- local info = UIPanelWindows["PetJournalParent"]; -- for name, value in pairs(info) do -- PetJournalParent:SetAttribute("UIPanelLayout-"..name, value); diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua index 6de51fd..720a445 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua @@ -223,7 +223,7 @@ SV.Options.args.common = { desc = L["Automatically scale the User Interface based on your screen resolution"], type = "toggle", get = function(j)return SV.db.general.autoScale end, - set = function(j,value)SV.db.general.autoScale = value;SV:StaticPopup_Show("RL_CLIENT")end + set = function(j,value)SV.db.general.autoScale = value; SV:StaticPopup_Show("RL_CLIENT") end }, multiMonitor = { order = 2, @@ -231,17 +231,25 @@ SV.Options.args.common = { desc = L["Adjust UI dimensions to accomodate for multiple monitor setups"], type = "toggle", get = function(j)return SV.db.general.multiMonitor end, - set = function(j,value)SV.db.general.multiMonitor = value;SV:StaticPopup_Show("RL_CLIENT")end + set = function(j,value)SV.db.general.multiMonitor = value; SV:StaticPopup_Show("RL_CLIENT") end }, - LoginMessage = { + saveDraggable = { order = 3, + name = L["Save Draggable"], + desc = L["Save the positions of draggable frames when they are moved. NOTE: THIS WILL OVERRIDE BLIZZARD FRAME SNAPPING!"], + type = "toggle", + get = function(j)return SV.db.general.saveDraggable end, + set = function(j,value)SV.db.general.saveDraggable = value; SV:StaticPopup_Show("RL_CLIENT") end + }, + LoginMessage = { + order = 4, type = 'toggle', name = L['Login Message'], get = function(j)return SV.db.general.loginmessage end, set = function(j,value)SV.db.general.loginmessage = value end }, scaleAdjust = { - order = 4, + order = 5, name = L["Base Scale"], desc = L["You can use this to adjust the base value applied to auto-scaling."], type = "range", -- 1.7.9.5