Skip to content

Keep the Now Playing text column readable when the body is short - #17

Merged
chrisuthe merged 3 commits into
masterfrom
chrisuthe/task/keep-the-now-playing-text-column-readable-when
Sep 2, 2026
Merged

Keep the Now Playing text column readable when the body is short#17
chrisuthe merged 3 commits into
masterfrom
chrisuthe/task/keep-the-now-playing-text-column-readable-when

Conversation

@chrisuthe

Copy link
Copy Markdown
Owner

Follow-up to #16. With the diagnostics panel open, or at the 560 px minimum height, the art dropped towards its floor and the stacked text column followed it, so the title trimmed to a word and the two times overlapped the bar.

Screenshots

400×560, diagnostics open (Plasma 6.7, Wayland) 440×700, diagnostics open — the reported scenario

What changed

  • The text column floors. In the narrow composition TrackText.Width is now the art's width floored at MinTextColumnWidth (280 px, the floor the wide column already had) and capped at the body width minus the two edge margins, through NowPlayingView.TextColumnWidthFor. It is never NaN when narrow, since the fixed width is what centres and trims the text; the wide composition keeps NaN. ArtSizeFor is unchanged, so the art still shrinks on its own.
  • The bar drops the theme's minimum. A second cause the brief did not name: Fluent's horizontal ProgressBar carries MinWidth="200", so in any slot narrower than that the bar overflowed its grid column and centred under the two times. ProgressBar.track now sets MinWidth="0", and the test reads it back.
  • Tests. A theory for the column-width rule, and a headless theory that lays the window out at 400×560 with diagnostics visible, applies a track with a duration, and asserts the column is at least the floor, the art is below it, neither time intersects the bar, and the bar is under 200 px. Runs once with an m:ss track and once with an hour-long one, whose wider times are what push the bar below the theme's minimum. The existing ArtSizeFor theory is untouched.
  • Docs. One sentence in the phase 3 "As shipped" paragraph on the floor and the bar's dropped minimum.

Verification

  • make test: Sendspin.Tests 269/269, Sendspin.Ui.Tests 98/98.
  • dotnet format --verify-no-changes clean on Core, Player, Tests, Ui.Tests; Release build with TreatWarningsAsErrors clean on every Linux-buildable project.
  • Ran the Release build on the Wayland head against a scratch copy of the settings (XDG_CONFIG_HOME, show_diagnostics on), MA Production connected to it, resized to 400×560 through KWin's scripting D-Bus interface; the screenshots above. The real settings file was not touched.

Notes

  • Out of scope, worth a follow-up. At 400×560 with diagnostics open the body leaves Now Playing about 216 px, so even with the art at its 96 px floor the progress row and transport draw under the diagnostics panel, whose ScrollViewer has a fixed MaxHeight="240". That is the shell's body rows, not the text column; the left screenshot shows it. Phase 4 moving diagnostics into Settings removes the panel, or the row could yield to Now Playing's minimum before then.
  • The second screenshot is not in the brief; it is there because it is the size the defect was reported at and shows the fix without the panel in the way.

With the diagnostics panel open, or at the 560 px minimum height, the art
drops towards its floor and the stacked text column followed it, so the
title trimmed to a word and the two times overlapped the bar. The column
now floors at MinTextColumnWidth, capped at the body, and the bar drops
the theme's 200 px MinWidth, which is what pushed it under the labels.
phase3-narrow-min is the window at 400x560 with diagnostics open, the
size the brief asks for; phase3-narrow-diagnostics is 440x700 with
diagnostics open, the scenario the defect was reported at.
The track style's MinWidth=0 has to beat Fluent's :horizontal setter for
the bar to stay in its column; the short-body test now reads it back and
runs an hour-long track, whose times leave the bar under 200 px.
@chrisuthe
chrisuthe marked this pull request as ready for review September 2, 2026 01:02
@chrisuthe
chrisuthe merged commit 867650c into master Sep 2, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant