diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d3fe31..9ca9abf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/Modules/Map/QuestieMap.lua b/Modules/Map/QuestieMap.lua index fc99336..cad19bf 100644 --- a/Modules/Map/QuestieMap.lua +++ b/Modules/Map/QuestieMap.lua @@ -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)