diff --git a/docs/traceability.md b/docs/traceability.md index a362219..e73a523 100644 --- a/docs/traceability.md +++ b/docs/traceability.md @@ -123,7 +123,7 @@ _None._ | FR-RAW-3 | [`core/dr-decode/src/lib.rs:139`](../core/dr-decode/src/lib.rs#L139), [`core/dr-decode/src/lib.rs:506`](../core/dr-decode/src/lib.rs#L506), [`core/dr-decode/src/locate.rs:1366`](../core/dr-decode/src/locate.rs#L1366) | | FR-RAW-4 | [`core/dr-decode/src/error.rs:1`](../core/dr-decode/src/error.rs#L1), [`ui/dr-ui/src/lib.rs:232`](../ui/dr-ui/src/lib.rs#L232) | | FR-RAW-5 | [`core/dr-decode/src/lib.rs:167`](../core/dr-decode/src/lib.rs#L167), [`core/dr-gpu/src/demosaic.rs:34`](../core/dr-gpu/src/demosaic.rs#L34), [`core/dr-gpu/src/demosaic.rs:602`](../core/dr-gpu/src/demosaic.rs#L602), [`core/dr-gpu/src/demosaic.rs:681`](../core/dr-gpu/src/demosaic.rs#L681), [`core/dr-gpu/src/demosaic.rs:805`](../core/dr-gpu/src/demosaic.rs#L805) | -| FR-UI-1 | [`core/dr-types/src/settings.rs:1166`](../core/dr-types/src/settings.rs#L1166), [`core/dr-types/src/settings.rs:321`](../core/dr-types/src/settings.rs#L321), [`core/dr-types/src/settings.rs:341`](../core/dr-types/src/settings.rs#L341), [`ui/dr-ui/src/lib.rs:101`](../ui/dr-ui/src/lib.rs#L101), [`ui/dr-ui/src/lib.rs:108`](../ui/dr-ui/src/lib.rs#L108), [`ui/dr-ui/src/lib.rs:2460`](../ui/dr-ui/src/lib.rs#L2460), [`ui/dr-ui/src/lib.rs:3575`](../ui/dr-ui/src/lib.rs#L3575), [`ui/dr-ui/src/lib.rs:3594`](../ui/dr-ui/src/lib.rs#L3594), [`ui/dr-ui/src/lib.rs:3621`](../ui/dr-ui/src/lib.rs#L3621), [`ui/dr-ui/src/lib.rs:3638`](../ui/dr-ui/src/lib.rs#L3638), [`ui/dr-ui/src/masks_ui.rs:951`](../ui/dr-ui/src/masks_ui.rs#L951), [`ui/dr-ui/src/settings_ui.rs:160`](../ui/dr-ui/src/settings_ui.rs#L160), [`ui/dr-ui/ui/app.slint:2661`](../ui/dr-ui/ui/app.slint#L2661), [`ui/dr-ui/ui/app.slint:787`](../ui/dr-ui/ui/app.slint#L787), [`ui/dr-ui/ui/app.slint:956`](../ui/dr-ui/ui/app.slint#L956), [`ui/dr-ui/ui/identity.slint:188`](../ui/dr-ui/ui/identity.slint#L188), [`ui/dr-ui/ui/library.slint:1076`](../ui/dr-ui/ui/library.slint#L1076), [`ui/dr-ui/ui/settings.slint:104`](../ui/dr-ui/ui/settings.slint#L104), [`ui/dr-ui/ui/settings.slint:565`](../ui/dr-ui/ui/settings.slint#L565), [`ui/dr-ui/ui/toolrail.slint:156`](../ui/dr-ui/ui/toolrail.slint#L156), [`ui/dr-ui/ui/toolrail.slint:89`](../ui/dr-ui/ui/toolrail.slint#L89) | +| FR-UI-1 | [`core/dr-types/src/settings.rs:1166`](../core/dr-types/src/settings.rs#L1166), [`core/dr-types/src/settings.rs:321`](../core/dr-types/src/settings.rs#L321), [`core/dr-types/src/settings.rs:341`](../core/dr-types/src/settings.rs#L341), [`ui/dr-ui/src/lib.rs:101`](../ui/dr-ui/src/lib.rs#L101), [`ui/dr-ui/src/lib.rs:108`](../ui/dr-ui/src/lib.rs#L108), [`ui/dr-ui/src/lib.rs:2460`](../ui/dr-ui/src/lib.rs#L2460), [`ui/dr-ui/src/lib.rs:3575`](../ui/dr-ui/src/lib.rs#L3575), [`ui/dr-ui/src/lib.rs:3594`](../ui/dr-ui/src/lib.rs#L3594), [`ui/dr-ui/src/lib.rs:3621`](../ui/dr-ui/src/lib.rs#L3621), [`ui/dr-ui/src/lib.rs:3672`](../ui/dr-ui/src/lib.rs#L3672), [`ui/dr-ui/src/masks_ui.rs:951`](../ui/dr-ui/src/masks_ui.rs#L951), [`ui/dr-ui/src/settings_ui.rs:160`](../ui/dr-ui/src/settings_ui.rs#L160), [`ui/dr-ui/ui/app.slint:2661`](../ui/dr-ui/ui/app.slint#L2661), [`ui/dr-ui/ui/app.slint:787`](../ui/dr-ui/ui/app.slint#L787), [`ui/dr-ui/ui/app.slint:956`](../ui/dr-ui/ui/app.slint#L956), [`ui/dr-ui/ui/identity.slint:188`](../ui/dr-ui/ui/identity.slint#L188), [`ui/dr-ui/ui/library.slint:1076`](../ui/dr-ui/ui/library.slint#L1076), [`ui/dr-ui/ui/settings.slint:104`](../ui/dr-ui/ui/settings.slint#L104), [`ui/dr-ui/ui/settings.slint:565`](../ui/dr-ui/ui/settings.slint#L565), [`ui/dr-ui/ui/toolrail.slint:156`](../ui/dr-ui/ui/toolrail.slint#L156), [`ui/dr-ui/ui/toolrail.slint:89`](../ui/dr-ui/ui/toolrail.slint#L89) | | FR-UI-2 | [`ui/dr-ui/src/collections_ui.rs:1045`](../ui/dr-ui/src/collections_ui.rs#L1045), [`ui/dr-ui/src/collections_ui.rs:1055`](../ui/dr-ui/src/collections_ui.rs#L1055), [`ui/dr-ui/src/collections_ui.rs:116`](../ui/dr-ui/src/collections_ui.rs#L116), [`ui/dr-ui/src/collections_ui.rs:154`](../ui/dr-ui/src/collections_ui.rs#L154), [`ui/dr-ui/src/collections_ui.rs:1552`](../ui/dr-ui/src/collections_ui.rs#L1552), [`ui/dr-ui/src/collections_ui.rs:1569`](../ui/dr-ui/src/collections_ui.rs#L1569), [`ui/dr-ui/src/collections_ui.rs:1821`](../ui/dr-ui/src/collections_ui.rs#L1821), [`ui/dr-ui/src/collections_ui.rs:2926`](../ui/dr-ui/src/collections_ui.rs#L2926), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:101`](../ui/dr-ui/src/lib.rs#L101), [`ui/dr-ui/src/library_ui.rs:360`](../ui/dr-ui/src/library_ui.rs#L360), [`ui/dr-ui/src/library_ui.rs:6457`](../ui/dr-ui/src/library_ui.rs#L6457), [`ui/dr-ui/src/library_ui.rs:6602`](../ui/dr-ui/src/library_ui.rs#L6602), [`ui/dr-ui/src/library_ui.rs:7817`](../ui/dr-ui/src/library_ui.rs#L7817), [`ui/dr-ui/ui/app.slint:1038`](../ui/dr-ui/ui/app.slint#L1038), [`ui/dr-ui/ui/app.slint:60`](../ui/dr-ui/ui/app.slint#L60), [`ui/dr-ui/ui/app.slint:652`](../ui/dr-ui/ui/app.slint#L652), [`ui/dr-ui/ui/app.slint:666`](../ui/dr-ui/ui/app.slint#L666), [`ui/dr-ui/ui/controls.slint:605`](../ui/dr-ui/ui/controls.slint#L605), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1287`](../ui/dr-ui/ui/library.slint#L1287), [`ui/dr-ui/ui/library.slint:1294`](../ui/dr-ui/ui/library.slint#L1294), [`ui/dr-ui/ui/library.slint:1391`](../ui/dr-ui/ui/library.slint#L1391), [`ui/dr-ui/ui/library.slint:2575`](../ui/dr-ui/ui/library.slint#L2575), [`ui/dr-ui/ui/library.slint:4289`](../ui/dr-ui/ui/library.slint#L4289), [`ui/dr-ui/ui/library.slint:965`](../ui/dr-ui/ui/library.slint#L965), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998), [`ui/dr-ui/ui/presets.slint:19`](../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/settings.slint:118`](../ui/dr-ui/ui/settings.slint#L118) | | FR-UI-3 | [`ui/dr-ui/src/develop.rs:2525`](../ui/dr-ui/src/develop.rs#L2525), [`ui/dr-ui/src/develop.rs:2634`](../ui/dr-ui/src/develop.rs#L2634), [`ui/dr-ui/src/library_ui.rs:5486`](../ui/dr-ui/src/library_ui.rs#L5486), [`ui/dr-ui/src/masks_ui.rs:1043`](../ui/dr-ui/src/masks_ui.rs#L1043), [`ui/dr-ui/src/masks_ui.rs:1065`](../ui/dr-ui/src/masks_ui.rs#L1065), [`ui/dr-ui/src/masks_ui.rs:263`](../ui/dr-ui/src/masks_ui.rs#L263), [`ui/dr-ui/src/spots_ui.rs:19`](../ui/dr-ui/src/spots_ui.rs#L19), [`ui/dr-ui/ui/app.slint:2226`](../ui/dr-ui/ui/app.slint#L2226), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:747`](../ui/dr-ui/ui/collections.slint#L747), [`ui/dr-ui/ui/masks.slint:767`](../ui/dr-ui/ui/masks.slint#L767), [`ui/dr-ui/ui/widgets.slint:71`](../ui/dr-ui/ui/widgets.slint#L71) | | FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../tools/traceability/src/gestures.rs#L1), [`ui/dr-ui/src/collections_ui.rs:1045`](../ui/dr-ui/src/collections_ui.rs#L1045), [`ui/dr-ui/src/collections_ui.rs:1055`](../ui/dr-ui/src/collections_ui.rs#L1055), [`ui/dr-ui/src/collections_ui.rs:116`](../ui/dr-ui/src/collections_ui.rs#L116), [`ui/dr-ui/src/collections_ui.rs:117`](../ui/dr-ui/src/collections_ui.rs#L117), [`ui/dr-ui/src/collections_ui.rs:126`](../ui/dr-ui/src/collections_ui.rs#L126), [`ui/dr-ui/src/collections_ui.rs:154`](../ui/dr-ui/src/collections_ui.rs#L154), [`ui/dr-ui/src/collections_ui.rs:1552`](../ui/dr-ui/src/collections_ui.rs#L1552), [`ui/dr-ui/src/collections_ui.rs:1569`](../ui/dr-ui/src/collections_ui.rs#L1569), [`ui/dr-ui/src/collections_ui.rs:1685`](../ui/dr-ui/src/collections_ui.rs#L1685), [`ui/dr-ui/src/collections_ui.rs:1821`](../ui/dr-ui/src/collections_ui.rs#L1821), [`ui/dr-ui/src/collections_ui.rs:1848`](../ui/dr-ui/src/collections_ui.rs#L1848), [`ui/dr-ui/src/collections_ui.rs:1964`](../ui/dr-ui/src/collections_ui.rs#L1964), [`ui/dr-ui/src/collections_ui.rs:2926`](../ui/dr-ui/src/collections_ui.rs#L2926), [`ui/dr-ui/src/collections_ui.rs:2963`](../ui/dr-ui/src/collections_ui.rs#L2963), [`ui/dr-ui/src/collections_ui.rs:365`](../ui/dr-ui/src/collections_ui.rs#L365), [`ui/dr-ui/src/collections_ui.rs:569`](../ui/dr-ui/src/collections_ui.rs#L569), [`ui/dr-ui/src/collections_ui.rs:589`](../ui/dr-ui/src/collections_ui.rs#L589), [`ui/dr-ui/src/develop.rs:4620`](../ui/dr-ui/src/develop.rs#L4620), [`ui/dr-ui/src/develop.rs:4645`](../ui/dr-ui/src/develop.rs#L4645), [`ui/dr-ui/src/develop.rs:4656`](../ui/dr-ui/src/develop.rs#L4656), [`ui/dr-ui/src/develop.rs:4670`](../ui/dr-ui/src/develop.rs#L4670), [`ui/dr-ui/src/develop.rs:5707`](../ui/dr-ui/src/develop.rs#L5707), [`ui/dr-ui/src/develop.rs:5738`](../ui/dr-ui/src/develop.rs#L5738), [`ui/dr-ui/src/develop.rs:5759`](../ui/dr-ui/src/develop.rs#L5759), [`ui/dr-ui/src/gesture_book.rs:3`](../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:1724`](../ui/dr-ui/src/lib.rs#L1724), [`ui/dr-ui/src/lib.rs:2130`](../ui/dr-ui/src/lib.rs#L2130), [`ui/dr-ui/src/lib.rs:2367`](../ui/dr-ui/src/lib.rs#L2367), [`ui/dr-ui/src/lib.rs:2946`](../ui/dr-ui/src/lib.rs#L2946), [`ui/dr-ui/src/lib.rs:3765`](../ui/dr-ui/src/lib.rs#L3765), [`ui/dr-ui/src/lib.rs:414`](../ui/dr-ui/src/lib.rs#L414), [`ui/dr-ui/src/lib.rs:443`](../ui/dr-ui/src/lib.rs#L443), [`ui/dr-ui/src/library_ui.rs:5486`](../ui/dr-ui/src/library_ui.rs#L5486), [`ui/dr-ui/src/library_ui.rs:5498`](../ui/dr-ui/src/library_ui.rs#L5498), [`ui/dr-ui/src/library_ui.rs:5568`](../ui/dr-ui/src/library_ui.rs#L5568), [`ui/dr-ui/src/library_ui.rs:5678`](../ui/dr-ui/src/library_ui.rs#L5678), [`ui/dr-ui/src/library_ui.rs:5706`](../ui/dr-ui/src/library_ui.rs#L5706), [`ui/dr-ui/src/library_ui.rs:6590`](../ui/dr-ui/src/library_ui.rs#L6590), [`ui/dr-ui/src/library_ui.rs:6602`](../ui/dr-ui/src/library_ui.rs#L6602), [`ui/dr-ui/ui/app.slint:2000`](../ui/dr-ui/ui/app.slint#L2000), [`ui/dr-ui/ui/app.slint:2184`](../ui/dr-ui/ui/app.slint#L2184), [`ui/dr-ui/ui/app.slint:2450`](../ui/dr-ui/ui/app.slint#L2450), [`ui/dr-ui/ui/app.slint:2561`](../ui/dr-ui/ui/app.slint#L2561), [`ui/dr-ui/ui/app.slint:275`](../ui/dr-ui/ui/app.slint#L275), [`ui/dr-ui/ui/app.slint:628`](../ui/dr-ui/ui/app.slint#L628), [`ui/dr-ui/ui/app.slint:657`](../ui/dr-ui/ui/app.slint#L657), [`ui/dr-ui/ui/app.slint:666`](../ui/dr-ui/ui/app.slint#L666), [`ui/dr-ui/ui/app.slint:754`](../ui/dr-ui/ui/app.slint#L754), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1053`](../ui/dr-ui/ui/library.slint#L1053), [`ui/dr-ui/ui/library.slint:1262`](../ui/dr-ui/ui/library.slint#L1262), [`ui/dr-ui/ui/library.slint:1287`](../ui/dr-ui/ui/library.slint#L1287), [`ui/dr-ui/ui/library.slint:1294`](../ui/dr-ui/ui/library.slint#L1294), [`ui/dr-ui/ui/library.slint:1327`](../ui/dr-ui/ui/library.slint#L1327), [`ui/dr-ui/ui/library.slint:1384`](../ui/dr-ui/ui/library.slint#L1384), [`ui/dr-ui/ui/library.slint:1391`](../ui/dr-ui/ui/library.slint#L1391), [`ui/dr-ui/ui/library.slint:2575`](../ui/dr-ui/ui/library.slint#L2575), [`ui/dr-ui/ui/library.slint:4173`](../ui/dr-ui/ui/library.slint#L4173), [`ui/dr-ui/ui/library.slint:4289`](../ui/dr-ui/ui/library.slint#L4289), [`ui/dr-ui/ui/library.slint:965`](../ui/dr-ui/ui/library.slint#L965), [`ui/dr-ui/ui/library.slint:992`](../ui/dr-ui/ui/library.slint#L992), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998) | diff --git a/ui/dr-ui/src/lib.rs b/ui/dr-ui/src/lib.rs index 901de71..97cce68 100644 --- a/ui/dr-ui/src/lib.rs +++ b/ui/dr-ui/src/lib.rs @@ -3618,23 +3618,6 @@ fn groups_in_rail(settings: &settings_ui::SettingsController) -> bool { .groups_in_rail(dr_plat::is_touch_first()) } -/// TRACES: FR-UI-1 -/// The window's own measurements, named plainly enough to be read out of -/// `adb logcat`. -/// -/// `ui-navigation.md` N6. Every figure in D-N7's table was computed at a -/// *guessed* scale factor, because nothing in this repository has ever -/// recorded the density Android reports: the tablet's panel is 3000 x 1920 -/// physical, and the two plausible densities put the dock's width at 900 or -/// 1037 and its available height 200px apart. The only way to settle it is to -/// ask the window on the device and read the answer off the wire. -/// -/// Both coordinate systems, on one line, so they can be checked against each -/// other. Logical alone cannot be trusted when the scale is the thing in -/// doubt, and a physical size that does not divide into the logical one by the -/// scale reported beside it says the reading is of something other than the -/// panel — an emulator, a scaled-down desktop window, a display that changed -/// under the application. /// TRACES: FR-UI-1 /// How loudly to say the window's size, given what has already been said. /// @@ -3686,6 +3669,23 @@ fn window_metrics_level( } } +/// TRACES: FR-UI-1 +/// The window's own measurements, named plainly enough to be read out of +/// `adb logcat`. +/// +/// `ui-navigation.md` N6. Every figure in D-N7's table was computed at a +/// *guessed* scale factor, because nothing in this repository has ever +/// recorded the density Android reports: the tablet's panel is 3000 x 1920 +/// physical, and the two plausible densities put the dock's width at 900 or +/// 1037 and its available height 200px apart. The only way to settle it is to +/// ask the window on the device and read the answer off the wire. +/// +/// Both coordinate systems, on one line, so they can be checked against each +/// other. Logical alone cannot be trusted when the scale is the thing in +/// doubt, and a physical size that does not divide into the logical one by the +/// scale reported beside it says the reading is of something other than the +/// panel — an emulator, a scaled-down desktop window, a display that changed +/// under the application. fn log_window_metrics(window: &AppWindow, level: log::Level) { let physical = window.window().size(); // The same floor `apply_layout_class`'s caller uses: a scale of zero is