the cooldown pie survives a /reload, and Bagnon's bags keep their order

- the cooldown pie, the GCD sweep, minimap pings and the map arrow draw again after a logout, login or /reload; they went blank until a restart, which read as OmniCC killing the cooldowns (2113)
- an addon's own font on a button label keeps its face, size and outline instead of being undone every frame, MikScrollingBattleText's reported look (2112)
- an empty label reads as nothing rather than an empty string, so Cartographer's map label keeps its colour; a slider thumb with no authored size takes its art's own size, so Dewdrop's Look'n'Feel slider moves (2109, 2110)
- Bagnon's saved bag list comes back in the order it was written, so the keyring stops jumping to the front after a restart; hovering a Bagnon bag costs a third of what it did (2111, 2114)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Sam
2026-09-11 20:49:50 +07:00
co-authored by Claude Fable 5.1
parent 99b5600e25
commit 321bcbb393
26 changed files with 1256 additions and 90 deletions
@@ -200,13 +200,24 @@ pub(super) fn emit(
let ink = crate::ui_text::measure_text(&mut atlas.lock(), draw_text, None, spec).0;
format!(" caret={:.1} ink={ink:.1}", ui.caret_x * host.scale)
});
// **The FACE and the FLAGS are on this line for a reason.** It used to print the
// requested height and nothing else about the font, so the one question a "the text
// looks wrong" report actually asks — *which face, at what size, with what outline, did
// this quad draw* — could not be answered from the probe at all; it took a live
// `SetFont` probe, a control plate and a screenshot to establish for MSBT what these
// four fields say directly (decisions 2103, 2112). `px` is the DRAWN logical height
// (`drawn_px`: the requested one through the cap, the 768 seam and the frame scale),
// which is the number that disagrees with `h` whenever a size looks wrong.
info!(
"text probe: [{:.0},{:.0} {:.0}x{:.0}] h={:?}{} {:?}",
"text probe: [{:.0},{:.0} {:.0}x{:.0}] h={:?} px={:?} flags={:?} face={:?}{} {:?}",
draw_rect.min.x,
draw_rect.min.y,
host.rect.width(),
host.rect.height(),
style.font_height,
spec.height,
style.outline.as_str(),
spec.path.unwrap_or("<none — the fallback face>"),
ebox_geom.unwrap_or_default(),
&draw_text[..draw_text.len().min(60)]
);