Zoom reads the current centring offset, so bunched zooms hold the anchor (R2.7); figures pass kernel values through, tested (R2.8)

This commit is contained in:
ZacharyZhang-NY committed 2026-10-09 05:56:15 -04:00
1 parent 2c3f3894dd
commit 6445f3144d
4 files changed
+19 -1

No files matched your search

+5
View File
@@ -89,6 +89,11 @@ mod tests {
super::Book::text(app, "table.figure.sum", &[("value", "42")])
);
assert_eq!(label.as_ref(), expect, "known names relabel, others stay");
// The kernel's formatted values pass through untouched.
ely_ui::i18n::install_as("en-US", app);
for value in ["8128.00", "8128.33333333333", "0.0000000001", "1234567890.25", "$1,234.50"] {
assert_eq!(super::label(&format!("Sum: {value}"), app).as_ref(), format!("Sum {value}"));
}
for (english, key) in super::ERRORS {
assert_eq!(super::label(english, app), super::Book::text(app, key, &[]));
}
+10
View File
@@ -149,6 +149,16 @@ fn zooming_keeps_the_left_page_edge_or_the_pointed_spot() {
view.prepare(room);
let after = view.doc_point(at);
assert!((after.0 - before.0).abs() < 30 && (after.1 - before.1).abs() < 30, "{before:?} moved to {after:?}");
// Wheel steps that land within one frame.
view.set_zoom(1.0, cx);
view.prepare(room);
let before = view.doc_point(at);
for zoom in [1.25, 1.5, 2.0] {
view.zoom_at(zoom, Some(at), cx);
}
view.prepare(room);
let after = view.doc_point(at);
assert!((after.0 - before.0).abs() < 30 && (after.1 - before.1).abs() < 30, "bunched: {before:?} moved to {after:?}");
})
});
}
+3 -1
View File
@@ -47,8 +47,10 @@ impl LokView {
Some(at) => (f32::from(at.x - self.origin.x), f32::from(at.y - self.origin.y)),
None => (self.viewport.0 / 2.0, self.viewport.1 / 2.0),
};
// The offset now, not the last frame's: zooms may bunch.
let spare = self.slack();
let (sx, sy) = (ax - spare.0, ay - spare.1);
// Anchored in print twips: tile twips change with the zoom.
let (sx, sy) = (ax - self.spare.0, ay - self.spare.1);
let under = self.print_of((self.scroll.0 + self.geom.twips_of(sx), self.scroll.1 + self.geom.twips_of(sy)));
self.fit = false;
if (zoom - self.geom.zoom).abs() > 0.0001 {
+1
View File
@@ -0,0 +1 @@
PASS