diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-02 20:49:28 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-02 20:49:28 +0100 |
| commit | 4a011721261bd46da3e84d443154d8e360494ece (patch) | |
| tree | 579b71dc3b2ffeb769752318ffddee7f2e41fc73 /ui | |
| parent | 940b3018b6fec2366257aac496da3335e8e4cbd7 (diff) | |
| download | HardenedPass-4a011721261bd46da3e84d443154d8e360494ece.tar.gz HardenedPass-4a011721261bd46da3e84d443154d8e360494ece.zip | |
fix(ui-compose): tighten row accessibility
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/compose/src/main/kotlin/app/passwordstore/ui/compose/EntryRows.kt | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/ui/compose/src/main/kotlin/app/passwordstore/ui/compose/EntryRows.kt b/ui/compose/src/main/kotlin/app/passwordstore/ui/compose/EntryRows.kt index 56ceb5b5..2cabaefd 100644 --- a/ui/compose/src/main/kotlin/app/passwordstore/ui/compose/EntryRows.kt +++ b/ui/compose/src/main/kotlin/app/passwordstore/ui/compose/EntryRows.kt @@ -24,6 +24,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource +import androidx.compose.ui.semantics.clearAndSetSemantics +import androidx.compose.ui.semantics.selected +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import app.passwordstore.ui.compose.preview.ThemePreviews import app.passwordstore.ui.compose.theme.APSTheme @@ -41,7 +44,10 @@ public fun LetterAvatar(name: String, modifier: Modifier = Modifier) { scheme.tertiaryContainer to scheme.onTertiaryContainer, ) val (bg, fg) = pairs[Math.floorMod(name.hashCode(), pairs.size)] - Box(modifier.size(36.dp).background(bg, CircleShape), contentAlignment = Alignment.Center) { + Box( + modifier.size(36.dp).background(bg, CircleShape).clearAndSetSemantics {}, + contentAlignment = Alignment.Center, + ) { Text(name.take(1).uppercase(), color = fg, style = MaterialTheme.typography.titleMedium) } } @@ -50,7 +56,7 @@ public fun LetterAvatar(name: String, modifier: Modifier = Modifier) { @Composable private fun RowShell( onClick: () -> Unit, - onLongClick: () -> Unit, + onLongClick: (() -> Unit)?, selected: Boolean, modifier: Modifier = Modifier, content: @Composable RowScope.() -> Unit, @@ -62,6 +68,7 @@ private fun RowShell( .background( if (selected) MaterialTheme.colorScheme.secondaryContainer else Color.Transparent ) + .semantics { this.selected = selected } .combinedClickable(onClick = onClick, onLongClick = onLongClick) .padding(horizontal = SpacingLarge, vertical = SpacingMedium + 2.dp), verticalAlignment = Alignment.CenterVertically, @@ -78,11 +85,13 @@ public fun FolderRow( onClick: () -> Unit, modifier: Modifier = Modifier, selected: Boolean = false, - onLongClick: () -> Unit = {}, + onLongClick: (() -> Unit)? = null, ) { RowShell(onClick, onLongClick, selected, modifier) { Box( - Modifier.size(36.dp).background(MaterialTheme.colorScheme.secondaryContainer, CircleShape), + Modifier.size(36.dp) + .background(MaterialTheme.colorScheme.secondaryContainer, CircleShape) + .clearAndSetSemantics {}, contentAlignment = Alignment.Center, ) { Icon( @@ -108,7 +117,7 @@ public fun EntryRow( onClick: () -> Unit, modifier: Modifier = Modifier, selected: Boolean = false, - onLongClick: () -> Unit = {}, + onLongClick: (() -> Unit)? = null, ) { RowShell(onClick, onLongClick, selected, modifier) { LetterAvatar(name) |
