fix(map): apply quest-type filters to the minimap (#11)

Quest-type filters (Available Dungeon/Raid/PvP/Repeatable/Event quests and
other ShouldBeHidden rules) were honored on the world map but not the
minimap. At toggle time HideQuestIcons FakeHides both map and minimap
filtered icons, but the minimap icon's per-frame FadeLogic re-showed any
hidden icon once in range via 'elseif self.hidden then self:FakeShow()',
undoing the filter on the minimap only (the world icon has no FadeLogic).

FadeLogic now re-checks ShouldBeHidden before re-showing, in both the
world-icon and manual-icon minimap fade paths, so filters apply to both.
This commit is contained in:
Xurkon
2026-06-09 21:03:36 -05:00
parent 728066d067
commit 364b455b00
2 changed files with 17 additions and 2 deletions
+1
View File
@@ -28,6 +28,7 @@
### Bug Fixes
- **[Map - Quest Type Filters Now Apply To Minimap]** (#11) Quest-type filters (Available Dungeon/Raid/PvP/Repeatable/Event Quests, plus other `ShouldBeHidden` rules like untracked/unexplored and `enableMiniMapIcons`) were honored on the world map but not the minimap. The world-map icon stayed hidden once `ShouldBeHidden` filtered it, but the minimap icon's per-frame `FadeLogic` re-showed any hidden icon as soon as the player came within range, so e.g. a filtered dungeon quest still appeared on the minimap. `FadeLogic` now re-checks `ShouldBeHidden` before re-showing, so the same filters apply to both maps (fixed in both the world-icon and manual-icon minimap fade paths).
- **[Libs/AceComm - Long Comm Prefix Login Error]** (#12) Fixed a recurring login Lua error `AceComm:RegisterComm(...): prefix length is limited to 16 characters` on servers like ChromieCraft. The cause is a third-party addon (e.g. AtlasLoot) registering an AceComm prefix longer than the client's 16-character limit; because Questie's bundled AceComm is the LibStub winner and its `xpcall` polyfill wraps AceAddon's `OnEnable`, the upstream hard `error()` surfaced through Questie's frames every login. Our bundled `AceComm:RegisterComm` now degrades gracefully for over-long prefixes (which can never work on the client anyway): it warns once and skips the registration instead of throwing, so the offending addon's `OnEnable` is no longer aborted and the error popup is gone.
- **[Tracker - VoiceOver questPlayButtons Nil Crash]** (#15) Fixed `attempt to index field 'questPlayButtons' (a nil value)` in `TrackerUtils:UpdateVoiceOverPlayButtons` and `TrackerLinePool.SetAllPlayButtonAlpha`. `TrackerUtils:IsVoiceOverLoaded` only checked that the VoiceOver addons were loaded, but some VoiceOver builds (seen on Elune) expose a `QuestOverlayUI` without a `questPlayButtons` table. It now also verifies `VoiceOver.QuestOverlayUI.questPlayButtons` exists; since every play-button call site gates on this function, the integration is now safely skipped instead of crashing on those builds.
- **[Libs/AceGUI - Tree Tooltip Nil Crash]** (#15) Hardened `AceGUIContainer-TreeGroup` against `attempt to index ... 'tooltip' (a nil value)` when a conflicting addon registers a broken `AceGUI-3.0` core (observed in the wild as version `1.#INF`) that wins LibStub but never creates the shared `AceGUI.tooltip` frame. The tree button enter/leave handlers now lazily (re)create the tooltip frame; the widget version was bumped 47→48 so the fixed widget wins registration over an unpatched same-version copy.
+16 -2
View File
@@ -660,7 +660,14 @@ function QuestieMap:DrawManualIcon(data, areaID, x, y, typ)
self:FakeHide()
return
elseif self.hidden then
self:FakeShow()
-- Only re-show icons that aren't filtered out (quest-type options
-- like showDungeonQuests, enableMiniMapIcons, hideUntracked, etc.).
-- Previously FadeLogic re-showed ANY FakeHidden minimap icon once in
-- range, so the world-map quest-type filters never applied to the
-- minimap. ShouldBeHidden mirrors the world-map draw-time check.
if not self:ShouldBeHidden() then
self:FakeShow()
end
elseif (distance > profile.fadeLevel) then
local fade = 1 - (math.min(10, (distance - profile.fadeLevel)) * normalizedValue)
self:SetFade(fade)
@@ -815,7 +822,14 @@ function QuestieMap:DrawWorldIcon(data, areaID, x, y, showFlag)
self:FakeHide()
return
elseif self.hidden then
self:FakeShow()
-- Only re-show icons that aren't filtered out (quest-type options
-- like showDungeonQuests, enableMiniMapIcons, hideUntracked, etc.).
-- Previously FadeLogic re-showed ANY FakeHidden minimap icon once in
-- range, so the world-map quest-type filters never applied to the
-- minimap. ShouldBeHidden mirrors the world-map draw-time check.
if not self:ShouldBeHidden() then
self:FakeShow()
end
elseif (distance > profile.fadeLevel) then
local fade = 1 - (math.min(10, (distance - profile.fadeLevel)) * normalizedValue);
self:SetFade(fade)