diff --git a/SVUI_!Core/system/dock.lua b/SVUI_!Core/system/dock.lua index f14327a..c10a9b4 100644 --- a/SVUI_!Core/system/dock.lua +++ b/SVUI_!Core/system/dock.lua @@ -252,6 +252,28 @@ local function SaveCurrentDimensions(button) end end +local function LoadSavedDimensions(button) + local saved = MOD.private.Dimensions[button:GetName()]; + if(saved and (type(saved) == "string") and (saved ~= 'TBD')) then + local anchor1, anchorParent, anchor2, xPos, yPos, width, height = split("|", saved) + button:ClearAllPoints() + button:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos) + + local frame = button.FrameLink; + if(frame) then + frame:ClearAllPoints(); + frame:SetPoint("BOTTOMLEFT", button, "TOPLEFT", -3, 6); + if((not width) or (not height)) then + width, height = frame:GetSize() + end + frame:SetSize(width, height) + if(frame.UpdateBackdrop) then + frame:UpdateBackdrop() + end + end + end +end + local function ScreenBorderVisibility() if SV.db.Dock.bottomPanel then SVUIDock_BottomBorder:Show() @@ -455,6 +477,7 @@ CORE FUNCTIONS ]]-- _G.ToggleSuperDockLeft = function(self, button) GameTooltip:Hide() + local activeDock = MOD.private.Active.BottomLeft if(button and IsAltKeyDown()) then SV:StaticPopup_Show('RESETDOCKS_CHECK') elseif(button and button == 'RightButton') then @@ -474,19 +497,19 @@ _G.ToggleSuperDockLeft = function(self, button) end MOD.BottomLeft.Bar:Update() MOD:UpdateDockBackdrops() - SV.Events:Trigger("DOCK_EXPANDED", "BottomLeft"); + SV.Events:Trigger("DOCK_EXPANDED", "BottomLeft", activeDock); else if MOD.private.LeftFaded then MOD.private.LeftFaded = nil; MOD.BottomLeft:FadeIn(0.2, MOD.BottomLeft:GetAlpha(), 1) MOD.BottomLeft.Bar:FadeIn(0.2, MOD.BottomLeft.Bar:GetAlpha(), 1) - SV.Events:Trigger("DOCK_FADE_IN", "BottomLeft"); + SV.Events:Trigger("DOCK_FADE_IN", "BottomLeft", activeDock); PlaySoundFile([[sound\doodad\be_scryingorb_explode.ogg]]) else MOD.private.LeftFaded = true; MOD.BottomLeft:FadeOut(0.2, MOD.BottomLeft:GetAlpha(), 0) MOD.BottomLeft.Bar:FadeOut(0.2, MOD.BottomLeft.Bar:GetAlpha(), 0) - SV.Events:Trigger("DOCK_FADE_OUT", "BottomLeft"); + SV.Events:Trigger("DOCK_FADE_OUT", "BottomLeft", activeDock); PlaySoundFile([[sound\doodad\be_scryingorb_explode.ogg]]) end end @@ -494,6 +517,7 @@ end _G.ToggleSuperDockRight = function(self, button) GameTooltip:Hide() + local activeDock = MOD.private.Active.BottomRight if(button and IsAltKeyDown()) then SV:StaticPopup_Show('RESETDOCKS_CHECK') elseif(button and button == 'RightButton') then @@ -513,19 +537,19 @@ _G.ToggleSuperDockRight = function(self, button) end MOD.BottomRight.Bar:Update() MOD:UpdateDockBackdrops() - SV.Events:Trigger("DOCK_EXPANDED", "BottomRight"); + SV.Events:Trigger("DOCK_EXPANDED", "BottomRight", activeDock); else if MOD.private.RightFaded then MOD.private.RightFaded = nil; MOD.BottomRight:FadeIn(0.2, MOD.BottomRight:GetAlpha(), 1) MOD.BottomRight.Bar:FadeIn(0.2, MOD.BottomRight.Bar:GetAlpha(), 1) - SV.Events:Trigger("DOCK_FADE_IN", "BottomRight"); + SV.Events:Trigger("DOCK_FADE_IN", "BottomRight", activeDock); PlaySoundFile([[sound\doodad\be_scryingorb_explode.ogg]]) else MOD.private.RightFaded = true; MOD.BottomRight:FadeOut(0.2, MOD.BottomRight:GetAlpha(), 0) MOD.BottomRight.Bar:FadeOut(0.2, MOD.BottomRight.Bar:GetAlpha(), 0) - SV.Events:Trigger("DOCK_FADE_OUT", "BottomRight"); + SV.Events:Trigger("DOCK_FADE_OUT", "BottomRight", activeDock); PlaySoundFile([[sound\doodad\be_scryingorb_explode.ogg]]) end end @@ -538,10 +562,10 @@ _G.ToggleSuperDocks = function() MOD.private.RightFaded = nil; MOD.BottomLeft:FadeIn(0.2, MOD.BottomLeft:GetAlpha(), 1) MOD.BottomLeft.Bar:FadeIn(0.2, MOD.BottomLeft.Bar:GetAlpha(), 1) - SV.Events:Trigger("DOCK_FADE_IN", "BottomLeft"); + SV.Events:Trigger("DOCK_FADE_IN", "BottomLeft", MOD.private.Active.BottomLeft); MOD.BottomRight:FadeIn(0.2, MOD.BottomRight:GetAlpha(), 1) MOD.BottomRight.Bar:FadeIn(0.2, MOD.BottomRight.Bar:GetAlpha(), 1) - SV.Events:Trigger("DOCK_FADE_IN", "BottomRight"); + SV.Events:Trigger("DOCK_FADE_IN", "BottomRight", MOD.private.Active.BottomRight); PlaySoundFile([[sound\doodad\be_scryingorb_explode.ogg]]) else MOD.private.AllFaded = true; @@ -561,12 +585,12 @@ function MOD:EnterFade() if MOD.private.LeftFaded then self.BottomLeft:FadeIn(0.2, self.BottomLeft:GetAlpha(), 1) self.BottomLeft.Bar:FadeIn(0.2, self.BottomLeft.Bar:GetAlpha(), 1) - SV.Events:Trigger("DOCK_FADE_IN", "BottomLeft"); + SV.Events:Trigger("DOCK_FADE_IN", "BottomLeft", MOD.private.Active.BottomLeft); end if MOD.private.RightFaded then self.BottomRight:FadeIn(0.2, self.BottomRight:GetAlpha(), 1) self.BottomRight.Bar:FadeIn(0.2, self.BottomRight.Bar:GetAlpha(), 1) - SV.Events:Trigger("DOCK_FADE_IN", "BottomRight"); + SV.Events:Trigger("DOCK_FADE_IN", "BottomRight", MOD.private.Active.BottomRight); end end @@ -743,6 +767,7 @@ end local function ShowDockletWindow(button, location) if((not button) or (not button.FrameLink)) then return end + --print(button:GetName()) local window = button.FrameLink window:FadeIn(0.1, 0, 1) if(not InCombatLockdown()) then window:SetFrameLevel(5) end @@ -774,6 +799,7 @@ local function ResetAllDockletWindows(dockbar, button) if(button and button.GetName) then currentButton = button:GetName() end + --print('ResetAllDockletWindows: ' .. currentButton) for nextName,nextButton in pairs(buttonList) do if(nextName ~= currentButton) then if(nextButton.FrameLink) then @@ -1105,6 +1131,27 @@ local function UpdateAllLayouts() end end +local function SetFloatingDock(dock) + local name = dock:GetName(); + dock:SetDocked(false); + dock:Show(); + MOD.private.Locations[name] = "Floating"; + dock.isFloating = true; + SaveCurrentPosition(dock); + if(ShowDockletWindow(dock, "Floating")) then + ActivateDockletButton(dock); + end + if(dock.FrameLink) then + dock.FrameLink:ClearAllPoints(); + dock.FrameLink:SetPoint("BOTTOMLEFT", dock, "TOPLEFT", -3, 6); + dock.FrameLink:SetResizable(true); + dock.FrameLink:Show(); + dock.FrameLink.resize:Show(); + end + LoadSavedDimensions(dock); + UpdateAllLayouts() +end + local DockButton_OnDragStart = function(self) if(IsShiftKeyDown() and (not InCombatLockdown())) then GameTooltip:Hide(); @@ -1128,24 +1175,9 @@ local DockButton_OnDragStop = function(self) local previous = MOD.private.Locations[name]; self.OrderIndex = 0; if((not DRAG_TARGETBAR) and self.CanFloat) then - print(name .. ' Floating') - self:SetDocked(false); - self:Show(); - MOD.private.Locations[name] = "Floating"; - self.isFloating = true; - SaveCurrentPosition(self); - if(ShowDockletWindow(self, "Floating")) then - ActivateDockletButton(self); - end - if(self.FrameLink) then - self.FrameLink:ClearAllPoints(); - self.FrameLink:SetPoint("BOTTOMLEFT", self, "TOPLEFT", -3, 6); - self.FrameLink:SetResizable(true); - self.FrameLink.resize:Show(); - end - UpdateAllLayouts() + SetFloatingDock(self) else - print(name .. ' Docked') + --print(name .. ' Docked') local target = DRAG_TARGETBAR; if(not target) then target = MOD[previous]; @@ -1274,6 +1306,7 @@ local DockButton_SetDocked = function(self, attach) local name = self:GetName() local lastKnownLocation = MOD.private.Disabled[name]; if((not self.Parent) and (not lastKnownLocation)) then return end + local lookup = MOD.private.Locations[name]; local parent = self.Parent; if(attach) then if(lastKnownLocation and MOD[lastKnownLocation]) then @@ -1282,10 +1315,12 @@ local DockButton_SetDocked = function(self, attach) MOD.private.Disabled[name] = nil; if(not parent.Add) then return end parent:Add(self) + if(lookup and (lookup == "Floating")) then + SetFloatingDock(self); + end --print(name .. ' Added') else --print('DockButton_SetDocked REMOVE '..name) - local lookup = MOD.private.Locations[name]; if(lookup and (lookup == "Floating")) then self.OrderIndex = 0; self:Hide(); @@ -1575,6 +1610,9 @@ local DockletResize_OnMouseUp = function(self) self.parent:ClearAllPoints() self.parent:SetPoint("BOTTOMLEFT", self.parent.Button, "TOPLEFT", -3, 6) SaveCurrentDimensions(self.parent.Button); + if(self.parent.PostResizeCallback) then + self.parent.PostResizeCallback(self.parent); + end end local Docklet_SetClickCallbacks = function(self, ...) @@ -1599,13 +1637,16 @@ local Docklet_IsEnabled = function(self) return result; end -local Docklet_SetVisibilityCallbacks = function(self, onshow, onhide) +local Docklet_SetVisibilityCallbacks = function(self, onshow, onhide, onsize) if(onshow and (type(onshow) == 'function')) then self.PostShowCallback = onshow; end if(onhide and (type(onhide) == 'function')) then self.PostHideCallback = onhide; end + if(onsize and (type(onsize) == 'function')) then + self.PostResizeCallback = onsize; + end end function MOD:NewDocklet(location, globalName, readableName, texture, onenter) @@ -1667,6 +1708,8 @@ function MOD:NewDocklet(location, globalName, readableName, texture, onenter) frame.resize:SetScript("OnMouseDown", DockletResize_OnMouseDown); frame.resize:SetScript("OnMouseUp", DockletResize_OnMouseUp); + LoadSavedDimensions(frame.Button); + return frame end --[[ @@ -1793,25 +1836,7 @@ local function LoadAllDocklets() button:Show(); if(MOD.private.Dimensions) then - local saved = MOD.private.Dimensions[name]; - if(saved and (type(saved) == "string") and (saved ~= 'TBD')) then - local anchor1, anchorParent, anchor2, xPos, yPos, width, height = split("|", saved) - button:ClearAllPoints() - button:SetPoint(anchor1, anchorParent, anchor2, xPos, yPos) - - local frame = button.FrameLink; - if(frame) then - frame:ClearAllPoints(); - frame:SetPoint("BOTTOMLEFT", button, "TOPLEFT", -3, 6); - if((not width) or (not height)) then - width, height = frame:GetSize() - end - frame:SetSize(width, height) - if(frame.UpdateBackdrop) then - frame:UpdateBackdrop() - end - end - end + LoadSavedDimensions(button); end if(ShowDockletWindow(button, location)) then diff --git a/SVUI_Chat/SVUI_Chat.lua b/SVUI_Chat/SVUI_Chat.lua index 9e6c7a6..c4708be 100644 --- a/SVUI_Chat/SVUI_Chat.lua +++ b/SVUI_Chat/SVUI_Chat.lua @@ -469,6 +469,7 @@ end function MOD:FadeLines(frame) --print('Fading Lines for '..frame:GetName()) + if(frame.___isFaded) then return end for i = select("#", frame:GetRegions()), 1, -1 do local region = select(i, frame:GetRegions()) if region:GetObjectType() == "FontString" then @@ -673,20 +674,28 @@ do local ChatDock_HideCallback = function(self) --print('ChatDock_HideCallback ' .. self:GetName()) + --print('ChatDock_HideCallback: ' .. self.Button:GetName()) local chat = self.Owner; MOD:FadeLines(chat) chat:FadeOut(0.2, chat:GetAlpha(), 0, true) - --chat:ForceHide(true) + chat:ForceHide(true) end local ChatDock_ShowCallback = function(self) --print('ChatDock_ShowCallback ' .. self:GetName()) local chat = self.Owner; MOD:ShowLines(chat) - --chat:ForceHide(false) + chat:ForceHide(false) chat:FadeIn(0.2, chat:GetAlpha(), 1) end + local ChatDock_ResizeCallback = function(self) + local chat = self.Owner; + chat:ClearAllPoints(); + chat:SetAllPoints(self); + --chat:SetSize(self:GetSize()); + end + local ChatDock_LeftClickCallback = function(self,button) local chatTab = self.link local chatFrame = _G[("ChatFrame%d"):format(chatTab:GetID())]; @@ -751,12 +760,12 @@ do tinsert(t, { text = RENAME_CHAT_WINDOW, func = function() CURRENT_CHAT_FRAME_ID = chatID; FCF_RenameChatWindow_Popup(); end }); tinsert(t, { text = CHAT_CONFIGURATION, func = function() CURRENT_CHAT_FRAME_ID = chatID; ShowUIPanel(ChatConfigFrame); end }); end - tinsert(t, { text = CLOSE_CHAT_WINDOW, func = function() CURRENT_CHAT_FRAME_ID = chatID; MOD:CloseChatWindow(); end }); + tinsert(t, { text = CLOSE_CHAT_WINDOW, func = function() CURRENT_CHAT_FRAME_ID = chatID; FCF_Close(); end }); return t; end end - chat.Dock:SetVisibilityCallbacks(ChatDock_ShowCallback, ChatDock_HideCallback); + chat.Dock:SetVisibilityCallbacks(ChatDock_ShowCallback, ChatDock_HideCallback, ChatDock_ResizeCallback); chat.Dock:SetClickCallbacks(ChatDock_LeftClickCallback, false, ChatDock_ExtendedOptions); ------------------------------------------- SV:FontManager(chat, "chatdialog", "LEFT") @@ -778,7 +787,7 @@ do chat:RemoveTextures(true) chat:SetBackdropColor(0,0,0,0) - chat:SetBackdropBorderColor(0,0,0,0) + chat:SetBackdropBorderColor(1,0,0,1) _G[chatName.."ButtonFrame"]:Die() ------------------------------------------- @@ -952,13 +961,16 @@ do end local _forced_SetPoint = function(self, a1, p, a2, x, y) - if((a1 ~= 'CENTER') or (a2 ~= 'CENTER') or (x ~= 0) or (y ~= 0)) then + if(not self.Dock) then return end + if((a1 ~= 'LEFT') or (a2 ~= 'LEFT') or (x ~= 0) or (y ~= 0)) then self:ClearAllPoints() - self:SetPoint('CENTER', p, 'CENTER', 0, 0) + self:SetPoint('LEFT', p, 'LEFT', 0, 0) + self:SetSize(self.Dock:GetSize()); end end - function MOD:RefreshChatFrames(forced) + function MOD:RefreshChatFrames(event, forced) + --print(event) if ((not forced) and (refreshLocked and (IsMouseButtonDown("LeftButton") or InCombatLockdown()))) then return; end for i,name in pairs(CHAT_FRAMES) do @@ -978,7 +990,7 @@ do tile = false, tileSize = 0, edgeFile = [[Interface\AddOns\SVUI_!Core\assets\textures\EMPTY]], - edgeSize = 0, + edgeSize = 1, insets = { left = 0, @@ -991,10 +1003,19 @@ do chat:SetBackdropBorderColor(0,0,0,0); chat:ClearAllPoints(); - chat:SetPoint("CENTER", chat.Dock, "CENTER", 0, 0); - chat:SetSize(CHAT_WIDTH - 4, CHAT_HEIGHT - 4); + chat:SetAllPoints(chat.Dock); + -- chat:SetPoint("TOPLEFT", chat.Dock, "TOPLEFT", 0, 0); + -- chat:SetPoint("BOTTOMLEFT", chat.Dock, "BOTTOMLEFT", 0, 0); + -- chat:SetPoint("TOPRIGHT", chat.Dock, "TOPRIGHT", 0, 0); + -- chat:SetPoint("BOTTOMRIGHT", chat.Dock, "BOTTOMRIGHT", 0, 0); + --chat:SetSize(CHAT_WIDTH - 4, CHAT_HEIGHT - 4); - FCF_SavePositionAndDimensions(chat) + --FCF_SavePositionAndDimensions(chat) + + --/svdf ChatFrame11 + --/svdf SVUI_ChatFrameDock11 + -- /script ChatFrame11:ClearAllPoints(); + -- /script ChatFrame11:WrapPoints(SVUI_ChatFrameDock11,10,10); --tab.Holder.CanFloat = true; --tabText:Hide() @@ -1011,7 +1032,7 @@ do end if(not chat.hookedHyperLinks) then - NewHook(chat, "SetPoint", _forced_SetPoint) + --NewHook(chat, "SetPoint", _forced_SetPoint) chat:HookScript('OnHyperlinkEnter', _hook_OnHyperlinkEnter) chat:HookScript('OnHyperlinkLeave', _hook_OnHyperlinkLeave) chat:HookScript('OnMessageScrollChanged', _hook_OnMessageScrollChanged) @@ -1022,14 +1043,22 @@ do end chat.isDocked = nil; + chat.hasBeenFaded = nil; chat.isUninteractable = true; - FCF_SetLocked(chat, true); + SetChatWindowLocked(i, true); chat.oldAlpha = 0; - FCF_FadeInChatFrame(chat); + --FCF_FadeInChatFrame(chat); local dockingKey = chat.Dock:GetName() - chat.Dock.Button:SetDocked(MOD.private.activeTabs[dockingKey]) SetChatWindowUninteractable(i, false) + chat.Dock.Button:SetDocked(MOD.private.activeTabs[dockingKey]) end + + -- for name,isset in pairs(MOD.private.activeTabs) do + -- if(not _G[name]) then + -- MOD.private.activeTabs[name] = nil + -- end + -- end + refreshLocked = true end end @@ -1076,17 +1105,11 @@ local function OpenNewSVUIChatFrame(newname) SetChatWindowShown(i, true); -- Dock the frame by default - FCF_DockFrame(chatFrame, (#FCFDock_GetChatFrames(GENERAL_CHAT_DOCK)+1), true); - FCF_FadeInChatFrame(FCFDock_GetSelectedWindow(GENERAL_CHAT_DOCK)); + -- FCF_DockFrame(chatFrame, (#FCFDock_GetChatFrames(GENERAL_CHAT_DOCK)+1), true); + -- FCF_FadeInChatFrame(FCFDock_GetSelectedWindow(GENERAL_CHAT_DOCK)); - chatFrame.isDocked = nil; - chatFrame.isUninteractable = true; - - FCF_CopyChatSettings(chatFrame, DEFAULT_CHAT_FRAME); - chatFrame.Dock:UpdateBackdrop() + --FCF_CopyChatSettings(chatFrame, DEFAULT_CHAT_FRAME); MOD.private.activeTabs[key] = true - -- print('OpenNewSVUIChatFrame '..newname) - chatFrame.Dock:SetDocked(true) MOD.RefreshChatFrames() return; @@ -1094,18 +1117,6 @@ local function OpenNewSVUIChatFrame(newname) end end -function MOD:CloseChatWindow() - local chatFrame = _G["ChatFrame" .. CURRENT_CHAT_FRAME_ID] - if(chatFrame) then - if(chatFrame.Dock) then - local key = format("SVUI_ChatFrameDock%d", chatFrame:GetID()) - chatFrame.Dock:SetDocked(false) - MOD.private.activeTabs[key] = nil; - end - FCF_Close(chatFrame) - end -end - function MOD:ResetChatWindows() wipe(MOD.private.activeTabs); @@ -1377,7 +1388,7 @@ function MOD:PET_BATTLE_CLOSE() local chat = _G[frameName] if chat and _G[frameName.."Tab"]:GetText():match(PET_BATTLE_COMBAT_LOG) then CURRENT_CHAT_FRAME_ID = chat:GetID(); - MOD:CloseChatWindow(); + FCF_Close(); end end end @@ -1472,8 +1483,11 @@ do end local _hook_FCF_Close = function(self) - if((not self) or (not self.Dock)) then return end - self.Dock:SetDocked(false) + local chatFrame = self or _G["ChatFrame" .. CURRENT_CHAT_FRAME_ID] + if((not chatFrame) or (not chatFrame.Dock)) then return end + local key = format("SVUI_ChatFrameDock%d", chatFrame:GetID()) + chatFrame.Dock:SetDocked(false) + MOD.private.activeTabs[key] = nil; end local _hook_FCF_Tab_OnClick = function(self) @@ -1484,25 +1498,50 @@ do local _hook_FCF_OpenTemporaryWindow = function(chatType, chatTarget, sourceChatFrame, selectWindow) --print('_hook_FCF_OpenTemporaryWindow') - local chatFrame, chatID; for id, chatFrameName in pairs(CHAT_FRAMES) do local frame = _G[chatFrameName]; - if ( frame.isTemporary ) then - chatFrame = frame; - chatID = id; - local key = format("SVUI_ChatFrameDock%d", chatID) - MOD.private.activeTabs[key] = true + local key = format("SVUI_ChatFrameDock%d", id) + if ( frame.isTemporary and (not MOD.private.activeTabs[key]) ) then + MOD.private.activeTabs[key] = true; + if(frame.Dock) then + frame.oldAlpha = 0; + frame.Dock:UpdateBackdrop(); + frame:ClearAllPoints(); + frame:SetAllPoints(frame.Dock); + end; break; end end + MOD.RefreshChatFrames(); + --print(chatFrame:GetName()) + end - if(chatFrame) then - chatFrame.oldAlpha = 0; - chatFrame.Dock:UpdateBackdrop(); - chatFrame.Dock:SetDocked(true); - MOD.RefreshChatFrames(); + local _hook_FCF_DockFrame = function() + --print('_hook_FCF_DockFrame') + MOD.RefreshChatFrames(); + end + + local _hook_FCF_FadeInChatFrame = function(chat) + chat:ForceHide(false) + end + + local _hook_FCF_FadeOutChatFrame = function(chat) + chat:ForceHide(true) + end + + _G.FCFDock_UpdateTabs = function(dock, forceUpdate) + if ( not dock.isDirty and not forceUpdate ) then + return; end - --print(chatFrame:GetName()) + + for index, chatFrame in ipairs(dock.DOCKED_CHAT_FRAMES) do + local chatTab = _G[chatFrame:GetName().."Tab"]; + chatTab:Show(); + end + + dock.isDirty = false; + + return FCFDock_ScrollToSelectedTab(dock); end function SetAllChatHooks() @@ -1517,10 +1556,14 @@ do NewHook(GeneralDockManager, 'SetPoint', _hook_GDMFrameSetPoint) NewHook(GeneralDockManagerScrollFrame, 'SetPoint', _hook_GDMScrollSetPoint) --NewHook("FCF_SetWindowColor", _hook_FCF_SetWindowColor) - --NewHook("FCF_SetWindowAlpha", OpenNewSVUIChatFrame) + --NewHook("FCFDock_UpdateTabs", function() print('FCFDock_UpdateTabs') end) NewHook("FCF_Close", _hook_FCF_Close) NewHook("ChatEdit_UpdateHeader", _hook_OnUpdateHeader) + + -- TESTING + --NewHook("FCF_FadeInChatFrame", _hook_FCF_FadeInChatFrame) + --NewHook("FCF_FadeOutChatFrame", _hook_FCF_FadeOutChatFrame) end end @@ -1561,10 +1604,6 @@ function MOD:UpdateLocals() end end -local function ProxyExpand() - MOD:RefreshChatFrames(true); -end - local function ExpandChatDock(location) if(not location) then return end local needsUpdate = false; @@ -1574,21 +1613,25 @@ local function ExpandChatDock(location) needsUpdate = true; end end - if(needsUpdate) then SV.Timers:ExecuteTimer(ProxyExpand, 0.1); end + if(needsUpdate) then SV.Timers:ExecuteTimer(MOD.RefreshChatFrames, 0.1); end end -local function DockFadeInChat(location) +local function DockFadeInChat(location, default) + --print('DockFadeInChat ' .. location) if(not location) then return end for _, name in pairs(CHAT_FRAMES) do local chat = _G[name]; if(chat and (location == chat.Dock.Parent.Bar.Data.Location)) then - MOD:ShowLines(chat) - chat:FadeIn(0.2, chat:GetAlpha(), 1) + if(chat.Dock and (default == chat.Dock.Button:GetName())) then + MOD:ShowLines(chat) + chat:FadeIn(0.2, chat:GetAlpha(), 1) + end end end end local function DockFadeOutChat(location) + --print('DockFadeOutChat ' .. location) if(not location) then return end for _, name in pairs(CHAT_FRAMES) do local chat = _G[name]; @@ -1600,7 +1643,7 @@ local function DockFadeOutChat(location) end function MOD:ReLoad() - self:RefreshChatFrames(true) + self:RefreshChatFrames('RELOAD', true) end function MOD:Load() @@ -1640,7 +1683,7 @@ function MOD:Load() end end - self:RefreshChatFrames(true) + self:RefreshChatFrames('LOAD', true) SetParseHandlers() _G.CombatLogQuickButtonFrame_Custom:SetParent(ChatFrame2.Dock)