From 8e0b829e5c7680b1242277bb7ae86c4dbc3143a6 Mon Sep 17 00:00:00 2001 From: Xruptor Date: Mon, 1 Oct 2012 22:08:32 -0400 Subject: [PATCH] -Fixed the issues that were preventing the addon from functioning properly in Mists of Panderia. -New loot frames are now supported. -Changed the way the frames are hooked for positioning. --- LootRollMover.lua | 59 +++++++++++++++++++++++++++++++++++------------------ LootRollMover.toc | 2 +- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/LootRollMover.lua b/LootRollMover.lua index 83f8834..b680af7 100644 --- a/LootRollMover.lua +++ b/LootRollMover.lua @@ -1,6 +1,6 @@ --LootRollMover by Xruptor -local f = CreateFrame("frame","LootRollMoverEventFrame",UIParent) +local f = CreateFrame("frame","LRMFrame",UIParent) f:SetScript("OnEvent", function(self, event, ...) if self[event] then return self[event](self, event, ...) end end) --[[------------------------ @@ -19,9 +19,6 @@ function f:PLAYER_LOGIN() --restore previous layout self:RestoreLayout("LootRollMoverAnchor_Frame") - --restore the position hooks for the group frames - self:LoadPositionHook() - --slash commands SLASH_LOOTROLLMOVER1 = "/lrm" SLASH_LOOTROLLMOVER2 = "/lootrollmover" @@ -70,28 +67,51 @@ end CORE --------------------------]] -function f:LoadPositionHook() +--replace the grouplootframe show, it has fixanchors in it +--http://wowprogramming.com/utils/xmlbrowser/live/FrameXML/LootFrame.lua + +local function RepositionLootFrames() if not _G["LootRollMoverAnchor_Frame"] then return end if not LRMDB then return end - - local frame = _G["GroupLootFrame1"] - frame:ClearAllPoints() - frame:SetPoint("BOTTOMLEFT", _G["LootRollMoverAnchor_Frame"], "BOTTOMLEFT", 4, 2) - frame:SetParent(UIParent) - frame:SetFrameLevel(0) - frame:SetScale(LRMDB.scale) - for i=2, NUM_GROUP_LOOT_FRAMES do + local frame + for i=1, NUM_GROUP_LOOT_FRAMES do frame = _G["GroupLootFrame" .. i] - if i > 1 then - frame:ClearAllPoints() - frame:SetPoint("BOTTOM", "GroupLootFrame" .. (i-1), "TOP", 0, 3) - frame:SetParent(UIParent) - frame:SetFrameLevel(0) - frame:SetScale(LRMDB.scale) + if i == 1 then + if ( frame:IsShown() ) then + frame:ClearAllPoints() + frame:SetPoint("BOTTOMLEFT", _G["LootRollMoverAnchor_Frame"], "BOTTOMLEFT", 4, 2) + frame:SetParent(UIParent) + frame:SetScale(LRMDB.scale) + end + elseif i > 1 then + if ( frame:IsShown() ) then + frame:ClearAllPoints() + frame:SetPoint("BOTTOM", "GroupLootFrame" .. (i-1), "TOP", 0, 3) + frame:SetParent(UIParent) + frame:SetScale(LRMDB.scale) + end end end end +local old_GroupLootFrame_OnShow = GroupLootFrame_OnShow +GroupLootFrame_OnShow = function(self) + old_GroupLootFrame_OnShow(self) + RepositionLootFrames() +end + +local old_GroupLootFrame_OpenNewFrame = GroupLootFrame_OpenNewFrame +GroupLootFrame_OpenNewFrame = function(id, rollTime) + old_GroupLootFrame_OpenNewFrame(id, rollTime) + RepositionLootFrames() +end + +local old_GroupLootFrame_OnEvent = GroupLootFrame_OnEvent +GroupLootFrame_OnEvent = function(self, event, ...) + old_GroupLootFrame_OnEvent(self, event, ...) + RepositionLootFrames() +end + function f:DrawAnchor() local frame = CreateFrame("Frame", "LootRollMoverAnchor_Frame", UIParent) @@ -108,7 +128,6 @@ function f:DrawAnchor() self.isMoving = true self:StartMoving() else - f:LoadPositionHook() self:Hide() end diff --git a/LootRollMover.toc b/LootRollMover.toc index 63e69d0..1489918 100644 --- a/LootRollMover.toc +++ b/LootRollMover.toc @@ -1,7 +1,7 @@ ## Interface: 50001 ## Title: LootRollMover ## Author: Xruptor -## Version: 2.8 +## Version: 3.0 ## Notes: A simple mod to move the default Blizzard Group Loot Roll Windows ## SavedVariables: LRMDB -- 1.7.9.5