diff --git a/crates/tools/src/nav.rs b/crates/tools/src/nav.rs index f371f267..f77c5d0b 100644 --- a/crates/tools/src/nav.rs +++ b/crates/tools/src/nav.rs @@ -434,8 +434,8 @@ impl Tool for PageTool { p: d.cur, text: format!( "W: {}\nH: {}", - designcraft_geom::format_measure(pg.width, cx.unit), - designcraft_geom::format_measure(pg.height, cx.unit) + designcraft_geom::format_measure(pg.width, cx.doc.settings.horizontal_units), + designcraft_geom::format_measure(pg.height, cx.doc.settings.vertical_units) ), }); } diff --git a/crates/ui-egui/src/lib.rs b/crates/ui-egui/src/lib.rs index fcb764c5..70685206 100644 --- a/crates/ui-egui/src/lib.rs +++ b/crates/ui-egui/src/lib.rs @@ -737,7 +737,9 @@ impl DesignApp { ViewInfo { zoom: self.view().map(|v| v.zoom).unwrap_or(1.0), snap: self.ui.snap_view(), - unit: self.ui.units, + // Tool readouts (sizes, smart-guide distances) measure in the document's ruler units, + // as its Control and Properties fields do. + unit: self.session.active().map_or(self.ui.units, |st| st.doc.settings.horizontal_units), stroke_in_front: self.ui.stroke_front, } } @@ -1843,6 +1845,17 @@ mod tests { assert!(!accurate.rich_black, "a saved choice is kept"); } + /// Tool readouts measured in picas whatever the document's units (the UI's unit is never set): + /// they follow the active document's ruler units. + #[test] + fn tool_readouts_measure_in_the_documents_units() { + let mut app = DesignApp::new(designcraft_engine::Session::new(), Services::default()); + assert_eq!(app.view_info().unit, Unit::Picas, "no document: the UI's default"); + app.run("file.new", json!({})).unwrap(); + app.run("document.preferences", json!({"horizontalUnits": "inches", "verticalUnits": "millimeters"})).unwrap(); + assert_eq!(app.view_info().unit, Unit::Inches); + } + /// An app with one document that has an unsaved edit. fn app_with_unsaved_document() -> DesignApp { let mut app = DesignApp::new(designcraft_engine::Session::new(), Services::default());