Files
florian.berthold 5eaec81f02 chore: move addon into Chatter/ + add standard .gitignore
Matches the Exiles fork-layout convention (each addon in its own folder).
2026-05-25 10:59:27 +02:00

75 lines
2.1 KiB
Lua

local mod = Chatter:NewModule("Server Positioning", "AceHook-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
mod.modName = L["Server Positioning"]
local defaults = {
profile = {
windowdata = {
['*'] = {
-- Blizzard defaults
width = 430,
height = 120,
}
}
}
}
function mod:OnInitialize()
self.db = Chatter.db:RegisterNamespace("Server Positioning", defaults)
self.db.RegisterCallback(self, "OnProfileChanged", "UpdateWindowData")
self.db.RegisterCallback(self, "OnProfileCopied", "UpdateWindowData")
self.db.RegisterCallback(self, "OnProfileReset", "UpdateWindowData")
end
function mod:Info()
return L["Disable server side storage of chat frame position and size."]
end
function mod:OnEnable()
self:RawHook('SetChatWindowSavedPosition', true)
self:RawHook('GetChatWindowSavedPosition', true)
self:RawHook('SetChatWindowSavedDimensions', true)
self:RawHook('GetChatWindowSavedDimensions', true)
self:UpdateWindowData()
end
function mod:OnDisable()
self:UnhookAll()
self:UpdateWindowData()
end
function mod:SetChatWindowSavedPosition(id, point, xOffset, yOffset)
local data = self.db.profile.windowdata[id]
data.point, data.xOffset, data.yOffset = point, xOffset, yOffset
end
function mod:GetChatWindowSavedPosition(id)
local data = self.db.profile.windowdata[id]
if not data.point then
data.point, data.xOffset, data.yOffset = self.hooks.GetChatWindowSavedPosition(id)
end
return data.point, data.xOffset, data.yOffset
end
function mod:SetChatWindowSavedDimensions(id, width, height)
local data = self.db.profile.windowdata[id]
data.width, data.height = width, height
end
function mod:GetChatWindowSavedDimensions(id)
local data = self.db.profile.windowdata[id]
if not data.width then
data.width, data.height = self.hooks.GetChatWindowSavedDimensions(id)
end
return data.width, data.height
end
function mod:UpdateWindowData()
for i = 1,NUM_CHAT_WINDOWS do
local frame = _G["ChatFrame"..i]
if frame and type(frame.GetID) == "function" then
FloatingChatFrame_Update(frame:GetID())
end
end
end