Skip to content

Commit 27c7f3f

Browse files
committed
When TalentFrame scale is modified, prevent other addons from changing the scale (fixes #64)
1 parent a9057d5 commit 27c7f3f

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

modules/scaleTalentFrame.lua

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ local L = TTT.L;
88
--- @class TalentTreeTweaks_ScaleTalentFrame: AceModule, AceHook-3.0
99
local Module = Main:NewModule('ScaleTalentFrame', 'AceHook-3.0');
1010

11+
local SetScale = GetFrameMetatable().__index.SetScale
1112
local TALENT_TREE_VIEWER = TalentViewerLoader and TalentViewerLoader:GetLodAddonName() or 'TalentTreeViewer';
1213
local BLIZZARD_TALENT_UI = 2;
1314

@@ -62,7 +63,7 @@ function Module:GetOptions(defaultOptionsTable, db)
6263
value = math.max(0.5, math.min(2, value));
6364
self.db[info[#info]] = value;
6465
local containerFrame = Util:GetTalentContainerFrameIfLoaded();
65-
if containerFrame and containerFrame.SetScale and not InCombatLockdown() then containerFrame:SetScale(value); end
66+
if containerFrame and containerFrame.SetScale and not InCombatLockdown() then SetScale(containerFrame, value); end
6667
end,
6768
min = 0.5,
6869
max = 2,
@@ -89,13 +90,16 @@ function Module:SetupHook(addon)
8990
self.db[settingKey] = frame:GetScale();
9091
end
9192

93+
self:SecureHook(frame, 'SetScale', function()
94+
self:OnShow(frame, settingKey); -- Reset the scale if someone else tries to set it.
95+
end);
9296
self:SecureHookScript(frame, 'OnMouseWheel', function(_, delta) self:OnMouseWheel(frame, delta, settingKey); end);
9397
self:SecureHookScript(buttonsParent, 'OnMouseWheel', function(_, delta) self:OnMouseWheel(frame, delta, settingKey); end);
9498
self:SecureHookScript(frame, 'OnShow', function() self:OnShow(frame, settingKey); end);
9599

96100
if frame:IsProtected() then
97101
Util:AddToCombatLockdownQueue(function()
98-
frame:SetScale(self.db[settingKey]);
102+
SetScale(frame, self.db[settingKey]);
99103
local helper = CreateFrame('Frame', nil, frame, 'SecureHandlerShowHideTemplate');
100104
frame.TTT_ScaleHelper = helper;
101105
helper:SetFrameRef('frame', frame);
@@ -108,18 +112,17 @@ function Module:SetupHook(addon)
108112
frame:SetScale(scale);
109113
]]);
110114
end);
111-
112-
return;
115+
else
116+
SetScale(frame, self.db[settingKey]);
113117
end
114-
frame:SetScale(self.db[settingKey]);
115118
end
116119

117120
---@param frame Frame
118121
---@param settingKey string
119122
function Module:OnShow(frame, settingKey)
120123
if frame:IsProtected() and InCombatLockdown() then return; end
121124

122-
frame:SetScale(self.db[settingKey]);
125+
SetScale(frame, self.db[settingKey]);
123126
end
124127

125128
---@param frame Frame
@@ -136,5 +139,5 @@ function Module:OnMouseWheel(frame, delta, settingKey)
136139
if frame.TTT_ScaleHelper then
137140
frame.TTT_ScaleHelper:SetAttribute('scale', scale);
138141
end
139-
frame:SetScale(scale);
142+
SetScale(frame, scale);
140143
end

0 commit comments

Comments
 (0)