fix(tracker): guard VoiceOver questPlayButtons and AceGUI tree tooltip (#15)
Two crashes reported in #15 on Elune (1.6.3): - TrackerUtils:IsVoiceOverLoaded only verified the VoiceOver addons were loaded, not that VoiceOver.QuestOverlayUI.questPlayButtons exists. Some VoiceOver builds expose a QuestOverlayUI without that table, so UpdateVoiceOverPlayButtons and SetAllPlayButtonAlpha crashed with 'attempt to index field questPlayButtons (a nil value)'. Now verified in IsVoiceOverLoaded, which all play-button call sites gate on. - AceGUIContainer-TreeGroup crashed indexing a nil AceGUI.tooltip when a conflicting addon registered a broken AceGUI-3.0 core (version 1.#INF) that won LibStub but never created the shared tooltip frame. The tree button handlers now lazily recreate it; widget version bumped 47->48 so the fixed widget wins registration.
This commit is contained in:
@@ -1232,7 +1232,14 @@ function TrackerUtils:GetSortedQuestIds()
|
||||
end
|
||||
|
||||
function TrackerUtils:IsVoiceOverLoaded()
|
||||
if (IsAddOnLoaded("AI_VoiceOver") and IsAddOnLoaded("AI_VoiceOverData_Vanilla")) then
|
||||
-- Require not just that the VoiceOver addons are loaded, but that the runtime
|
||||
-- structure we index actually exists. Some VoiceOver builds (e.g. on Elune) expose
|
||||
-- a different QuestOverlayUI shape where questPlayButtons is absent, which previously
|
||||
-- crashed UpdateVoiceOverPlayButtons / SetAllPlayButtonAlpha with "attempt to index
|
||||
-- field 'questPlayButtons' (a nil value)". All play-button call sites gate on this
|
||||
-- function, so verifying the table here makes them all safe.
|
||||
if IsAddOnLoaded("AI_VoiceOver") and IsAddOnLoaded("AI_VoiceOverData_Vanilla")
|
||||
and VoiceOver and VoiceOver.QuestOverlayUI and VoiceOver.QuestOverlayUI.questPlayButtons then
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user