aboutsummaryrefslogtreecommitdiffstats
path: root/ui/compose/src/main
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-02 20:49:28 +0100
committerDanilo M. <danix@danix.xyz>2026-11-02 20:49:28 +0100
commit4a011721261bd46da3e84d443154d8e360494ece (patch)
tree579b71dc3b2ffeb769752318ffddee7f2e41fc73 /ui/compose/src/main
parent940b3018b6fec2366257aac496da3335e8e4cbd7 (diff)
downloadHardenedPass-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/compose/src/main')
-rw-r--r--ui/compose/src/main/kotlin/app/passwordstore/ui/compose/EntryRows.kt19
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)