ui: the map's hovered-zone label is chrome, not map content
The canvas reparents 1.12's `WorldMapButton` into the zooming child so that every 1.12 addon's icons pan and scale with the map. `WorldMapFrameAreaFrame` hangs off that button in the client's own XML — it covers the art, so that is where the label that names what the cursor is over was hung — and it went along with it. Its label is a 102 px THICKOUTLINE FontString. Inside the canvas it scales with the zoom, so at zoom 2.5 every letter is a 261 px glyph, and one zone name's worth of those is most of the 2048² glyph sheet. Measured in grom's 2026-11-02 session: one `ui_text: a 261.10907 logical-px request … past the 256 ceiling`, then 20 `glyph sheet full … resetting at the frame boundary`, one per hover, each of them a frame in which every string on screen is missing — the map "flashing the interface". Frame cost with the map open went 11 ms → 16-20 ms over the same window. So it goes back on the window, anchored to the container's top, which is where the art's top edge is now; at rest that is the pixel it was already at. Measured through the harness: the biggest text under `WorldMapFrame` was 102 px at zoom 1 and 1632 px at zoom 16, and is now 102 px at every zoom. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
@@ -1562,6 +1562,24 @@ local function BuildCanvas()
|
||||
detail:SetAllPoints(canvas)
|
||||
button:SetParent(canvas)
|
||||
|
||||
-- Everything the button carries is map content except one frame: `WorldMapFrameAreaFrame`,
|
||||
-- the hovered-zone name. 1.12's XML hangs it off the mouse surface (TOP, 400x128) because
|
||||
-- that is what covers the art, but it is chrome — it names what the cursor is over and sits
|
||||
-- at the top of the window, at the size 1.12 drew it. Its label is a **102 px THICKOUTLINE**
|
||||
-- FontString, so inside the canvas it scales with the zoom: at zoom 2.5 that is a 261 px
|
||||
-- glyph per letter, and a zone name's worth of those fills the whole glyph sheet. Measured in
|
||||
-- grom's 2026-11-02 run — `ui_text: a 261.10907 logical-px request ... past the 256 ceiling`
|
||||
-- and then 20 `glyph sheet full ... resetting at the frame boundary`, one per hover, each
|
||||
-- costing every string on screen a frame. So it goes back on the window, anchored to the
|
||||
-- container's top, which is where the art's top edge is now; at rest that is the pixel it was
|
||||
-- already at.
|
||||
local area = WorldMapFrameAreaFrame
|
||||
if area then
|
||||
area:SetParent(map)
|
||||
area:ClearAllPoints()
|
||||
area:SetPoint("TOP", sc, "TOP", 0, -10)
|
||||
end
|
||||
|
||||
-- The base-art layer a canvas addon hides while it draws its own. It is a proxy rather than the
|
||||
-- detail frame itself, and that distinction is the point: `Hide()` on the frame would take the
|
||||
-- POI buttons and every addon's icons down with it, because they are its children and its
|
||||
|
||||
Reference in New Issue
Block a user