FR-UI-5 — A thin, fading scroll position cue on Android #69

Closed
opened 2026-09-26 14:41:06 +00:00 by dtourolle · 2 comments
Owner

On Android, show a thin, non-interactive position indicator while a list or panel scrolls, fading out when it stops.

Why

v0.16.0 added a desktop scrollbar to the develop column, the library grid, the collections sidebar, the settings page, the help sheet and the film list (ScrollBar in widgets.slint, gated by Scrolling.bars = !dr_plat::is_touch_first(), set at library_ui/grid.rs:239). On Android the bars are off entirely, so a scroller gives no sign of how long it is or where you are in it. That is how the black-and-white film stocks came to look deleted when the film list could not scroll.

The photographer's direction: on Android, it must only be a thin visual cue, not a control. No touch target, no drag, and nothing that competes with the flick.

Deliverable

A touch-first variant of the same component: a 2–3 px line at the scroller's edge, sized and positioned as the desktop thumb is, shown while the viewport moves and fading out shortly after it stops, as Android's own scroll indicators do. It takes no input. Use the same Scrolling global, e.g. a cue mode alongside bars, so the platform decision stays in one place.

Acceptance

  • on Android every scroller that has a desktop bar shows the cue while scrolling, and nothing when it is idle
  • the cue takes no pointer or touch input; a flick starting on it scrolls the content
  • desktop behaviour is unchanged
  • checked on the tablet
**On Android, show a thin, non-interactive position indicator while a list or panel scrolls, fading out when it stops.** ## Why v0.16.0 added a desktop scrollbar to the develop column, the library grid, the collections sidebar, the settings page, the help sheet and the film list (`ScrollBar` in widgets.slint, gated by `Scrolling.bars = !dr_plat::is_touch_first()`, set at library_ui/grid.rs:239). On Android the bars are off entirely, so a scroller gives no sign of how long it is or where you are in it. That is how the black-and-white film stocks came to look deleted when the film list could not scroll. The photographer's direction: on Android, it must only be a thin visual cue, not a control. No touch target, no drag, and nothing that competes with the flick. ## Deliverable A touch-first variant of the same component: a 2–3 px line at the scroller's edge, sized and positioned as the desktop thumb is, shown while the viewport moves and fading out shortly after it stops, as Android's own scroll indicators do. It takes no input. Use the same `Scrolling` global, e.g. a `cue` mode alongside `bars`, so the platform decision stays in one place. ## Acceptance - [ ] on Android every scroller that has a desktop bar shows the cue while scrolling, and nothing when it is idle - [ ] the cue takes no pointer or touch input; a flick starting on it scrolls the content - [ ] desktop behaviour is unchanged - [ ] checked on the tablet
dtourolle added the uisize:Sandroid labels 2026-09-26 14:41:06 +00:00
Author
Owner

Shipped in v0.18.2 (502023c0, 8071f710): on Android the shared ScrollBar draws a 3 px position line at the edge while a scroller moves, fading 500 ms after it stops; it has no touch area, so a flick starting on it scrolls the content. The desktop keeps its bars; Scrolling.cue is set from dr_plat::is_touch_first() beside bars. ui/dr-ui/tests/scroll_cue.rs covers no input, visibility while moving, and the desktop unchanged; desktop screenshots with DR_SCROLL_CUE=1. Left open for the last box: checked on the tablet.

Shipped in v0.18.2 (502023c0, 8071f710): on Android the shared `ScrollBar` draws a 3 px position line at the edge while a scroller moves, fading 500 ms after it stops; it has no touch area, so a flick starting on it scrolls the content. The desktop keeps its bars; `Scrolling.cue` is set from `dr_plat::is_touch_first()` beside `bars`. `ui/dr-ui/tests/scroll_cue.rs` covers no input, visibility while moving, and the desktop unchanged; desktop screenshots with `DR_SCROLL_CUE=1`. Left open for the last box: checked on the tablet.
Author
Owner

Checked on the tablet (HONOR ROD2-W09, v0.18.2 release-signed APK): the cue shows while a list moves, fades after it stops, and a flick starting on it scrolls the list. All acceptance boxes met; closing.

Checked on the tablet (HONOR ROD2-W09, v0.18.2 release-signed APK): the cue shows while a list moves, fades after it stops, and a flick starting on it scrolls the list. All acceptance boxes met; closing.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dtourolle/DarkRoom#69