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:
4 files changed
+19
-1
No files matched your search
@@ -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, &[]));
|
||||
}
|
||||
|
||||
@@ -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:?}");
|
||||
})
|
||||
});
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
PASS
|
||||
Reference in new issue
Block a user