local A, L = ... local lines = {} local chatCopyFrame = CreateFrame("Frame", "ChatCopyFrame", UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil) chatCopyFrame:SetPoint("CENTER", UIParent, "CENTER") chatCopyFrame:SetSize(700, 400) chatCopyFrame:Hide() chatCopyFrame:SetFrameStrata("DIALOG") chatCopyFrame.close = CreateFrame("Button", nil, chatCopyFrame, "UIPanelCloseButton") chatCopyFrame.close:SetPoint("TOPRIGHT", chatCopyFrame, "TOPRIGHT") chatCopyFrame:SetBackdrop({ bgFile = "Interface/DialogFrame/UI-DialogBox-Background", edgeFile = "Interface/DialogFrame/UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 16, insets = {left = 4, right = 4, top = 4, bottom = 4} }) local scrollArea = CreateFrame("ScrollFrame", "ChatCopyScrollFrame", chatCopyFrame, "UIPanelScrollFrameTemplate") scrollArea:SetPoint("TOPLEFT", chatCopyFrame, "TOPLEFT", 10, -30) scrollArea:SetPoint("BOTTOMRIGHT", chatCopyFrame, "BOTTOMRIGHT", -30, 10) local editBox = CreateFrame("EditBox", nil, chatCopyFrame) editBox:SetMultiLine(true) editBox:SetMaxLetters(99999) editBox:EnableMouse(true) editBox:SetAutoFocus(false) editBox:SetFontObject(ChatFontNormal) editBox:SetWidth(scrollArea:GetWidth()) editBox:SetHeight(270) editBox:SetScript("OnEscapePressed", function(f) f:GetParent():GetParent():Hide() f:SetText("") end) scrollArea:SetScrollChild(editBox) function rChat:CopyFunc() local cf = SELECTED_CHAT_FRAME local _, size = cf:GetFont() FCF_SetChatWindowFontSize(cf, cf, .01) local ct = 1 for i = select("#", cf.FontStringContainer:GetRegions()), 1, -1 do local region = select(i, cf.FontStringContainer:GetRegions()) if region:GetObjectType() == "FontString" then if region:GetText() ~= nil then lines[ct] = tostring(region:GetText()) ct = ct + 1 end end end local lineCt = ct - 1 local text = table.concat(lines, "\n", 1, lineCt) FCF_SetChatWindowFontSize(cf, cf, size) chatCopyFrame:Show() editBox:SetText(text) editBox:HighlightText(0) wipe(lines) end