From 384f7d224f73b69b099f060d0d46708a9bd47c58 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Sun, 1 Nov 2026 08:34:56 +0000 Subject: Settings: switches that line up, and a label that fits Reviewing the settings screen on a device. The two switches did not line up with each other: SwitchRow centred the switch against its whole text block, which looks right while every label fits on one line and goes wrong the moment one wraps. The second switch sat lower than the first for no reason a reader could see. Top-aligned now, so the control is level with the first line of what it controls whatever the text does. "Race through breaks at 3x instead of skipping" was the label that wrapped. "instead of skipping" is gone from it -- the detail underneath already draws that contrast, in better words -- and the multiplication sign matches the speed chip, which has always used one. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B --- app/src/main/java/org/terst/listen/ui/SettingRows.kt | 6 +++++- app/src/main/java/org/terst/listen/ui/SettingsScreen.kt | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/terst/listen/ui/SettingRows.kt b/app/src/main/java/org/terst/listen/ui/SettingRows.kt index a1a6db9..b224719 100644 --- a/app/src/main/java/org/terst/listen/ui/SettingRows.kt +++ b/app/src/main/java/org/terst/listen/ui/SettingRows.kt @@ -31,7 +31,11 @@ fun SwitchRow( ) { Row( Modifier.fillMaxWidth().padding(vertical = 4.dp), - verticalAlignment = Alignment.CenterVertically, + // Aligned to the top rather than the middle. Centring looks right while every label + // fits on one line and goes wrong the moment one wraps: the switch drifts down beside + // the middle of the block and stops lining up with the switch above it, which is + // exactly what the settings screen looked like. + verticalAlignment = Alignment.Top, ) { Switch( modifier = Modifier.semantics { contentDescription = description }, diff --git a/app/src/main/java/org/terst/listen/ui/SettingsScreen.kt b/app/src/main/java/org/terst/listen/ui/SettingsScreen.kt index 00f973d..8f4aeca 100644 --- a/app/src/main/java/org/terst/listen/ui/SettingsScreen.kt +++ b/app/src/main/java/org/terst/listen/ui/SettingsScreen.kt @@ -140,8 +140,11 @@ private fun SkippingSection(settings: SkipServerSettings, furniture: FurnitureSk "its break cue and its closing credits.", ) SwitchRow( - label = "Race through breaks at 3x instead of skipping", - description = "Turn racing through breaks at 3x instead of skipping them on or off", + // "instead of skipping" came off the label: it wrapped the line onto two and the + // detail underneath already draws that contrast. The multiplication sign matches + // the speed chip, which has always used one. + label = "Race through breaks at 3\u00d7", + description = "Turn racing through breaks instead of skipping them on or off", checked = furniture.fastPlayBreaks, onCheckedChange = furniture.onFastPlayBreaksChange, // Says "breaks" rather than "ads" deliberately: this chooses what happens to -- cgit v1.2.3