update chat

This commit is contained in:
Crum
2018-11-15 21:02:28 -06:00
parent 2ca15eae99
commit ca31e8524d
3 changed files with 89 additions and 27 deletions
+42
View File
@@ -181,6 +181,48 @@ function LO:SetDataPanelStyle()
end end
end end
function LO:RepositionChatDataPanels()
LeftChatDataPanel:ClearAllPoints()
RightChatDataPanel:ClearAllPoints()
local SPACING = E.Border*3 - E.Spacing
--Left Chat Tab
LeftChatTab:SetPoint("TOPLEFT", LeftChatPanel, "TOPLEFT", SPACING, -SPACING)
LeftChatTab:SetPoint("TOPRIGHT", LeftChatPanel, "TOPRIGHT", -SPACING, -SPACING)
LeftChatTab:SetPoint("BOTTOMRIGHT", LeftChatPanel, "TOPRIGHT", -SPACING, -(SPACING + PANEL_HEIGHT))
LeftChatTab:SetPoint("BOTTOMLEFT", LeftChatPanel, "TOPLEFT", SPACING, -(SPACING + PANEL_HEIGHT))
--Left Chat Data Panel
LeftChatDataPanel:SetPoint("BOTTOMLEFT", LeftChatPanel, "BOTTOMLEFT", SPACING + SIDE_BUTTON_WIDTH, SPACING)
LeftChatDataPanel:SetPoint("BOTTOMRIGHT", LeftChatPanel, "BOTTOMRIGHT", -SPACING, SPACING)
LeftChatDataPanel:SetPoint("TOPRIGHT", LeftChatPanel, "BOTTOMRIGHT", -SPACING, (SPACING + PANEL_HEIGHT))
LeftChatDataPanel:SetPoint("TOPLEFT", LeftChatPanel, "BOTTOMLEFT", SPACING+SIDE_BUTTON_WIDTH, (SPACING + PANEL_HEIGHT))
--Left Chat Toggle Button
LeftChatToggleButton:SetPoint("TOPRIGHT", LeftChatDataPanel, "TOPLEFT", E.Border - E.Spacing*3, 0)
LeftChatToggleButton:SetPoint("TOPLEFT", LeftChatDataPanel, "TOPLEFT", -E.Border - E.Spacing*3 - SIDE_BUTTON_WIDTH, 0)
LeftChatToggleButton:SetPoint("BOTTOMLEFT", LeftChatPanel, "BOTTOMLEFT", SPACING, SPACING)
LeftChatToggleButton:SetPoint("BOTTOMRIGHT", LeftChatPanel, "BOTTOMLEFT", SPACING+SIDE_BUTTON_WIDTH, SPACING)
--Right Chat Tab
RightChatTab:SetPoint("TOPRIGHT", RightChatPanel, "TOPRIGHT", -SPACING, -SPACING)
RightChatTab:SetPoint("TOPLEFT", RightChatPanel, "TOPLEFT", SPACING, -SPACING)
RightChatTab:SetPoint("BOTTOMLEFT", RightChatPanel, "TOPLEFT", SPACING, -(SPACING + PANEL_HEIGHT))
RightChatTab:SetPoint("BOTTOMRIGHT", RightChatPanel, "TOPRIGHT", -SPACING, -(SPACING + PANEL_HEIGHT))
--Right Chat Data Panel
RightChatDataPanel:SetPoint("BOTTOMLEFT", RightChatPanel, "BOTTOMLEFT", SPACING, SPACING)
RightChatDataPanel:SetPoint("BOTTOMRIGHT", RightChatPanel, "BOTTOMRIGHT", -SPACING-SIDE_BUTTON_WIDTH, SPACING)
RightChatDataPanel:SetPoint("TOPRIGHT", RightChatPanel, "BOTTOMRIGHT", -(SPACING + SIDE_BUTTON_WIDTH), SPACING + PANEL_HEIGHT)
RightChatDataPanel:SetPoint("TOPLEFT", RightChatPanel, "BOTTOMLEFT", (SPACING), SPACING + PANEL_HEIGHT)
--Right Chat Toggle Button
RightChatToggleButton:SetPoint("TOPLEFT", RightChatDataPanel, "TOPRIGHT", -E.Border + E.Spacing*3, 0)
RightChatToggleButton:SetPoint("TOPRIGHT", RightChatDataPanel, "TOPRIGHT", E.Border + E.Spacing*3 + SIDE_BUTTON_WIDTH, 0)
RightChatToggleButton:SetPoint("BOTTOMRIGHT", RightChatPanel, "BOTTOMRIGHT", -SPACING, SPACING)
RightChatToggleButton:SetPoint("BOTTOMLEFT", RightChatPanel, "BOTTOMRIGHT", -SPACING-SIDE_BUTTON_WIDTH, SPACING)
end
function LO:ToggleChatPanels() function LO:ToggleChatPanels()
LeftChatDataPanel:ClearAllPoints() LeftChatDataPanel:ClearAllPoints()
RightChatDataPanel:ClearAllPoints() RightChatDataPanel:ClearAllPoints()
+46 -26
View File
@@ -34,6 +34,7 @@ local PlaySoundFile = PlaySoundFile
local ShowUIPanel, HideUIPanel = ShowUIPanel, HideUIPanel local ShowUIPanel, HideUIPanel = ShowUIPanel, HideUIPanel
local StaticPopup_Visible = StaticPopup_Visible local StaticPopup_Visible = StaticPopup_Visible
local ToggleFrame = ToggleFrame local ToggleFrame = ToggleFrame
local UnitAffectingCombat = UnitAffectingCombat
local UnitName = UnitName local UnitName = UnitName
local hooksecurefunc = hooksecurefunc local hooksecurefunc = hooksecurefunc
@@ -220,8 +221,8 @@ function CH:StyleChat(frame)
E:Point(tab.flash, "TOPLEFT", _G[name.."TabLeft"], "TOPLEFT", -3, id == 2 and -3 or -2) E:Point(tab.flash, "TOPLEFT", _G[name.."TabLeft"], "TOPLEFT", -3, id == 2 and -3 or -2)
E:Point(tab.flash, "BOTTOMRIGHT", _G[name.."TabRight"], "BOTTOMRIGHT", 3, id == 2 and -7 or -6) E:Point(tab.flash, "BOTTOMRIGHT", _G[name.."TabRight"], "BOTTOMRIGHT", 3, id == 2 and -7 or -6)
--frame:SetClampRectInsets(0, 0, 0, 0)
frame:SetClampedToScreen(false) frame:SetClampedToScreen(false)
E:StripTextures(frame, true)
--copy chat button --copy chat button
frame.button = CreateFrame("Button", format("CopyChatButton%d", id), frame) frame.button = CreateFrame("Button", format("CopyChatButton%d", id), frame)
@@ -349,7 +350,7 @@ function CH:UpdateAnchors()
E:Point(frame, "TOPRIGHT", ChatFrame1, "TOPRIGHT", noBackdrop and 10 or 4, LeftChatTab:GetHeight() + (noBackdrop and 1 or 4)) E:Point(frame, "TOPRIGHT", ChatFrame1, "TOPRIGHT", noBackdrop and 10 or 4, LeftChatTab:GetHeight() + (noBackdrop and 1 or 4))
end end
-- CH:PositionChat(true) CH:PositionChat(true)
end end
local function FindRightChatID() local function FindRightChatID()
@@ -377,14 +378,25 @@ function CH:UpdateChatTabs()
local tab = _G[format("ChatFrame%sTab", i)] local tab = _G[format("ChatFrame%sTab", i)]
local id = chat:GetID() local id = chat:GetID()
local isDocked = chat.isDocked local isDocked = chat.isDocked
local chatbg = format("ChatFrame%dBackground", i)
if chat:IsShown() and (id == self.RightChatWindowID) then if id > NUM_CHAT_WINDOWS then
if select(2, tab:GetPoint()):GetName() ~= chatbg then
isDocked = true
else
isDocked = false
end
end
if chat:IsShown() and not (id > NUM_CHAT_WINDOWS) and (id == self.RightChatWindowID) then
if E.db.chat.panelBackdrop == "HIDEBOTH" or E.db.chat.panelBackdrop == "LEFT" then if E.db.chat.panelBackdrop == "HIDEBOTH" or E.db.chat.panelBackdrop == "LEFT" then
CH:SetupChatTabs(tab, fadeTabsNoBackdrop and true or false) CH:SetupChatTabs(tab, fadeTabsNoBackdrop and true or false)
else else
CH:SetupChatTabs(tab, false) CH:SetupChatTabs(tab, false)
end end
elseif not isDocked and chat:IsShown() then elseif not isDocked and chat:IsShown() then
tab:SetParent(RightChatPanel)
chat:SetParent(RightChatPanel)
CH:SetupChatTabs(tab, fadeUndockedTabs and true or false) CH:SetupChatTabs(tab, fadeUndockedTabs and true or false)
else else
if E.db.chat.panelBackdrop == "HIDEBOTH" or E.db.chat.panelBackdrop == "RIGHT" then if E.db.chat.panelBackdrop == "HIDEBOTH" or E.db.chat.panelBackdrop == "RIGHT" then
@@ -397,17 +409,11 @@ function CH:UpdateChatTabs()
end end
function CH:PositionChat(override) function CH:PositionChat(override)
if ((not override and self.initialMove) or (not override)) then return end if UnitAffectingCombat("player") and not override and self.initialMove then return end
if not RightChatPanel or not LeftChatPanel then return end if not RightChatPanel or not LeftChatPanel then return end
RightChatPanel:SetWidth(E.db.chat.separateSizes and E.db.chat.panelWidthRight or E.db.chat.panelWidth)
RightChatPanel:SetHeight(E.db.chat.separateSizes and E.db.chat.panelHeightRight or E.db.chat.panelHeight)
LeftChatPanel:SetWidth(E.db.chat.panelWidth)
LeftChatPanel:SetHeight(E.db.chat.panelHeight)
LeftChatTab:SetWidth(E.db.chat.panelWidth -((E.Border*3 - E.Spacing)*2)) E:Size(RightChatPanel, E.db.chat.separateSizes and E.db.chat.panelWidthRight or E.db.chat.panelWidth, E.db.chat.separateSizes and E.db.chat.panelHeightRight or E.db.chat.panelHeight)
LeftChatDataPanel:SetWidth(E.db.chat.panelWidth -(((E.Border*3 - E.Spacing)*2) + 16)) E:Size(LeftChatPanel, E.db.chat.panelWidth, E.db.chat.panelHeight)
RightChatTab:SetWidth((E.db.chat.separateSizes and E.db.chat.panelWidthRight or E.db.chat.panelWidth) -((E.Border*3 - E.Spacing)*2))
RightChatDataPanel:SetWidth((E.db.chat.separateSizes and E.db.chat.panelWidthRight or E.db.chat.panelWidth) -(((E.Border*3 - E.Spacing)*2) + 16))
self.RightChatWindowID = FindRightChatID() self.RightChatWindowID = FindRightChatID()
@@ -421,13 +427,22 @@ function CH:PositionChat(override)
local BASE_OFFSET = 57 + E.Spacing*3 local BASE_OFFSET = 57 + E.Spacing*3
chat = _G[format("ChatFrame%d", i)] chat = _G[format("ChatFrame%d", i)]
chatbg = format("ChatFrame%dBackground", i)
id = chat:GetID() id = chat:GetID()
tab = _G[format("ChatFrame%sTab", i)] tab = _G[format("ChatFrame%sTab", i)]
isDocked = chat.isDocked isDocked = chat.isDocked
tab.isDocked = chat.isDocked tab.isDocked = chat.isDocked
tab.owner = chat tab.owner = chat
if chat:IsShown() and id == self.RightChatWindowID then if id > NUM_CHAT_WINDOWS then
if select(2, tab:GetPoint()):GetName() ~= chatbg then
isDocked = true
else
isDocked = false
end
end
if chat:IsShown() and (id == self.RightChatWindowID) then
chat:ClearAllPoints() chat:ClearAllPoints()
if E.db.datatexts.rightChatPanel then if E.db.datatexts.rightChatPanel then
@@ -437,8 +452,11 @@ function CH:PositionChat(override)
E:Point(chat, "BOTTOMLEFT", RightChatDataPanel, "BOTTOMLEFT", 1, 1) E:Point(chat, "BOTTOMLEFT", RightChatDataPanel, "BOTTOMLEFT", 1, 1)
end end
chat:SetWidth((E.db.chat.separateSizes and E.db.chat.panelWidthRight or E.db.chat.panelWidth) - 11) if id ~= 2 then
chat:SetHeight((E.db.chat.separateSizes and E.db.chat.panelHeightRight or E.db.chat.panelHeight) - BASE_OFFSET) E:Size(chat, (E.db.chat.separateSizes and E.db.chat.panelWidthRight or E.db.chat.panelWidth) - 11, (E.db.chat.separateSizes and E.db.chat.panelHeightRight or E.db.chat.panelHeight) - BASE_OFFSET)
else
E:Size(chat, E.db.chat.panelWidth - 11, (E.db.chat.panelHeight - BASE_OFFSET) - CombatLogQuickButtonFrame_Custom:GetHeight())
end
tab:SetParent(RightChatPanel) tab:SetParent(RightChatPanel)
chat:SetParent(RightChatPanel) chat:SetParent(RightChatPanel)
@@ -446,6 +464,7 @@ function CH:PositionChat(override)
if chat:IsMovable() then if chat:IsMovable() then
chat:SetUserPlaced(true) chat:SetUserPlaced(true)
end end
if E.db.chat.panelBackdrop == "HIDEBOTH" or E.db.chat.panelBackdrop == "LEFT" then if E.db.chat.panelBackdrop == "HIDEBOTH" or E.db.chat.panelBackdrop == "LEFT" then
CH:SetupChatTabs(tab, fadeTabsNoBackdrop and true or false) CH:SetupChatTabs(tab, fadeTabsNoBackdrop and true or false)
else else
@@ -464,15 +483,15 @@ function CH:PositionChat(override)
BASE_OFFSET = BASE_OFFSET - 24 BASE_OFFSET = BASE_OFFSET - 24
E:Point(chat, "BOTTOMLEFT", LeftChatToggleButton, "BOTTOMLEFT", 1, 1) E:Point(chat, "BOTTOMLEFT", LeftChatToggleButton, "BOTTOMLEFT", 1, 1)
end end
chat:SetWidth(E.db.chat.panelWidth - 11)
chat:SetHeight((E.db.chat.panelHeight - BASE_OFFSET)) E:Size(chat, E.db.chat.panelWidth - 11, (E.db.chat.panelHeight - BASE_OFFSET))
end end
chat:SetParent(LeftChatPanel) chat:SetParent(LeftChatPanel)
if i > 2 then if i > 2 then
tab:SetParent(LeftChatPanel) tab:SetParent(LeftChatPanel)
else
tab:SetParent(LeftChatPanel)
end end
if chat:IsMovable() then if chat:IsMovable() then
chat:SetUserPlaced(true) chat:SetUserPlaced(true)
end end
@@ -485,6 +504,8 @@ function CH:PositionChat(override)
end end
end end
E.Layout:RepositionChatDataPanels()
self.initialMove = true self.initialMove = true
end end
@@ -958,7 +979,7 @@ local function OnTextChanged(self)
if strlen(text) > MIN_REPEAT_CHARACTERS then if strlen(text) > MIN_REPEAT_CHARACTERS then
local repeatChar = true local repeatChar = true
for i = 1, MIN_REPEAT_CHARACTERS, 1 do for i = 1, MIN_REPEAT_CHARACTERS, 1 do
if strsub(text,(0-i), (0-i)) ~= strsub(text, (-1-i), (-1-i)) then if strsub(text, (0 - i), (0 - i)) ~= strsub(text, (-1 - i), (-1 - i)) then
repeatChar = false repeatChar = false
break break
end end
@@ -1028,8 +1049,7 @@ function CH:SetupChat()
local editbox = _G["ChatFrameEditBox"] local editbox = _G["ChatFrameEditBox"]
if not editbox.isSkinned then if not editbox.isSkinned then
local a, b, c = select(6, editbox:GetRegions()) local a, b, c = select(6, editbox:GetRegions()) E:Kill(a) E:Kill(b) E:Kill(c)
E:Kill(a) E:Kill(b) E:Kill(c)
E:SetTemplate(editbox, "Default", true) E:SetTemplate(editbox, "Default", true)
editbox:SetAltArrowKeyMode(CH.db.useAltKey) editbox:SetAltArrowKeyMode(CH.db.useAltKey)
editbox:SetAllPoints(LeftChatDataPanel) editbox:SetAllPoints(LeftChatDataPanel)
@@ -1055,8 +1075,8 @@ function CH:SetupChat()
DEFAULT_CHAT_FRAME:SetParent(LeftChatPanel) DEFAULT_CHAT_FRAME:SetParent(LeftChatPanel)
self:PositionChat(true) self:ScheduleRepeatingTimer("PositionChat", 1)
self:ScheduleTimer("PositionChat", 1) -- self:PositionChat(true)
end end
local function PrepareMessage(author, message) local function PrepareMessage(author, message)
@@ -1090,7 +1110,7 @@ function CH:CHAT_MSG_CHANNEL(event, message, author, ...)
end end
if blockFlag then if blockFlag then
return true; return true
else else
if CH.db.throttleInterval ~= 0 then if CH.db.throttleInterval ~= 0 then
msgTime[msg] = time() msgTime[msg] = time()
@@ -1115,7 +1135,7 @@ function CH:CHAT_MSG_YELL(event, message, author, ...)
end end
if blockFlag then if blockFlag then
return true; return true
else else
if CH.db.throttleInterval ~= 0 then if CH.db.throttleInterval ~= 0 then
msgTime[msg] = time() msgTime[msg] = time()
+1 -1
View File
@@ -1,4 +1,4 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule("Skins"); local S = E:GetModule("Skins");
--Cache global variables --Cache global variables