Apply local fixes on top of upstream: tracker desync/drag/title, map icon zoom offset

- Compat/HBD.lua: fix world map pin offset math to account for zoom addons
  (e.g. Magnify) rescaling an ancestor frame instead of WorldMapButton itself;
  cull pins that fall outside the scroll frame's viewport when zoomed
- Compat/Compat.lua: add a short TTL to the chat-parsed objective progress
  cache so a stale entry can't be reapplied to an unrelated quest
- Modules/QuestieLearner.lua: re-point QuestiePlayer.currentQuestlog at the
  rebuilt quest table after invalidating QuestieDB's quest cache, fixing
  Tracker freezing on stale objective progress
- Modules/Tracker/QuestieTracker.lua: fall back to a formatted quest name
  when QuestieDB has no title for a quest (e.g. custom server quests)
- Modules/Tracker/TrackerBaseFrame.lua: force baseFrame movability on drag
  start instead of trusting the async-refreshed IsMovable() state
- Modules/Tracker/TrackerHeaderFrame.lua: wire up drag on the tracker icon
- Modules/Quest/QuestEventHandler.lua: force a full quest log reconciliation
  when the native quest log is opened

Squashed from prior commit-by-commit history to rebuild this working copy
on a clean fork of aron-w/Questie-X (restores the native GitHub fork link).
Per-fix rationale is preserved in project memory
(project_tracker_fixes.md, project_map_icon_offset.md).
This commit is contained in:
2026-07-15 01:02:15 +02:00
parent 9df64114df
commit c09d30b832
7 changed files with 131 additions and 19 deletions
+15
View File
@@ -104,6 +104,21 @@ function QuestEventHandler:RegisterEvents()
end)
end
-- Force a full reconciliation whenever the player opens the native quest log.
-- QuestLogCache only updates its stored objective counts when it detects a change, so if a
-- scan ever ran while the game's own quest log text was still lagging behind the server, the
-- Tracker can get stuck showing stale progress with nothing left to trigger a retry. Looking
-- at the quest log is the moment the player is most likely to notice the mismatch, so treat it
-- as a cue to force a fresh comparison against the live quest log state.
local questLogFrame = QuestLogExFrame or ClassicQuestLog or QuestLogFrame
if questLogFrame then
questLogFrame:HookScript("OnShow", function()
Questie:Debug(Questie.DEBUG_DEVELOP, "[Quest Event] Quest log opened: forcing full quest log scan")
doFullQuestLogScan = true
_QuestEventHandler:QuestLogUpdate()
end)
end
-- StaticPopup dialog hooks. Deleteing Quest items do not always trigger a Quest Log Update.
hooksecurefunc("StaticPopup_Show", function(...)
-- Hook StaticPopup_Show. If we find the "DELETE_ITEM" dialog, check for Quest Items and notify the player.