From 836af2d303fada4d86e700700731525ea74dccfe Mon Sep 17 00:00:00 2001 From: urnati Date: Thu, 4 Oct 2018 12:08:50 -0400 Subject: [PATCH] - Updated Movable to better handle Titan flags to turn off top or bottom adjust --- Titan/TitanMovable.lua | 73 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/Titan/TitanMovable.lua b/Titan/TitanMovable.lua index 957afa3..36fde90 100755 --- a/Titan/TitanMovable.lua +++ b/Titan/TitanMovable.lua @@ -145,6 +145,36 @@ local function TitanMovableFrame_GetXOffset(frame, point) end --[[ local +NAME: DoAdjust +DESC: See if Titan should adjust based only on its own flags. +VAR: place - top or bottom +OUT: boolean - true to adjust, false if not +--]] +local function DoAdjust(place) + local res = false -- assume we will not adjust + -- This is more work than it should be but Titan uses nil or true to be 'true' for these flags + -- We did it to ourselves - if (Aux)ScreenAdjust is true it means the user wants Titan to NOT adjust... + if place == TITAN_PANEL_PLACE_TOP then + if TitanPanelGetVar("ScreenAdjust") == 1 then + -- do not adjust + else + if TitanPanelGetVar("Bar_Show") or TitanPanelGetVar("Bar2_Show") then + res = true + end + end + elseif place == TITAN_PANEL_PLACE_BOTTOM then + if TitanPanelGetVar("AuxScreenAdjust") == 1 then + -- do not adjust + else + if TitanPanelGetVar("AuxBar_Show") or TitanPanelGetVar("AuxBar2_Show") then + res = true + end + end + end + return res +end + +--[[ local NAME: MoveFrame DESC: Adjust the given frame. Expected are frames where :GetPoint works VAR: frame_ptr - Text string of the frame name @@ -153,15 +183,19 @@ OUT: top_bottom - Frame is at top or bottom, expecting Titan constant for top or --]] local function MoveFrame(frame_ptr, start_y, top_bottom) local frame = _G[frame_ptr] - if frame and frame:IsUserPlaced() + local adj = false + if frame and (frame:IsUserPlaced() + or frame.MALockPointHook -- Allow MoveAnything to be used w/o error + ) then -- skip this frame else - if frame:IsShown() then + if DoAdjust(top_bottom) and frame:IsShown() then local y = TitanMovable_GetPanelYOffset(top_bottom) + (start_y or 0) -- includes scale adjustment local point, relativeTo, relativePoint, xOfs, yOfs = frame:GetPoint() frame:ClearAllPoints(); frame:SetPoint(point, relativeTo:GetName(), relativePoint, xOfs, y) + adj = true else --[[ Some frames such as the ticket frame may not be visible or even created @@ -180,35 +214,32 @@ OUT: top_bottom - Frame is at top or bottom, expecting Titan constant for top or --]] local function MoveMenuFrame(frame_ptr, start_y, top_bottom) local frame = _G[frame_ptr] - if frame - -- do not check IsUserPlaced because Titan sets this. - -- Setting IsUserPlaced was done to prevent bottom bars 'bouncing' + local adj = false + if frame and (frame:IsUserPlaced() + or frame.MALockPointHook -- Allow MoveAnything to be used w/o error + ) + and DoAdjust(top_bottom) then local yOffset = TitanMovable_GetPanelYOffset(top_bottom) -- includes scale adjustment - --xOffset = TitanMovableFrame_GetXOffset(frame, top_bottom); +-- xOffset = TitanMovableFrame_GetXOffset(frame, top_bottom); if ( StatusTrackingBarManager:GetNumberVisibleBars() == 2 ) then yOffset = yOffset + 17; elseif ( StatusTrackingBarManager:GetNumberVisibleBars() == 1 ) then yOffset = yOffset + 14; end - frame:ClearAllPoints(); - --[[ - If the scale is around .85 or higher the bag menu overlaps the main menu - when the right menu bar is shown (adding more bottom buttons) - So shift the menu bar right a little based on the scaling. - We may have to get fancy checking exactly what is shown before shifting. - --]] + frame:ClearAllPoints(); + -- This is a hack because GetPoint on MainMenuBar often returns all nil + -- If the scale is is around .85 or higher the bag menu overlaps the main menu local fscale = tonumber(GetCVar("uiScale")) local xadj = (fscale * 100) - 85 if xadj <= 0 then xOfs = 0 else + -- Slide the menu bar left depending on scaling to allow bag menu room xOfs = xadj * 6 * -1 end - --[[ - This is a hack because GetPoint on MainMenuBar often returns nil values. - --]] frame:SetPoint("BOTTOM", "UIParent", "BOTTOM", xOfs, yOffset); + adj = true else -- Unknown frame... end @@ -432,13 +463,12 @@ local function TitanMovableFrame_MoveFrames() if not InCombatLockdown() then for i = 1,#MData,1 do if MData[i] then - local frame = _G[MData[i].frameName] - if MData[i].addonAdj -- An addon has taken control of the frame - or frame.MALockPointHook -- Allow MoveAnything to be used w/o error - then - -- skip + if MData[i].addonAdj then + -- An addon has taken control of the frame so skip else -- Adjust the frame per MData + MData[i].move() +--[[ local ok, msg = pcall(function () MData[i].move() end) if ok then -- all is well @@ -447,6 +477,7 @@ local function TitanMovableFrame_MoveFrames() .." '"..(MData[i].frameName or "?").."." .." "..msg, "error") end +--]] end end end -- 1.7.9.5