diff --git a/crates/benilla-app/assets/ui/MapCanvas.lua b/crates/benilla-app/assets/ui/MapCanvas.lua index 16a701db..84fb06ec 100644 --- a/crates/benilla-app/assets/ui/MapCanvas.lua +++ b/crates/benilla-app/assets/ui/MapCanvas.lua @@ -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