From 06ce08e12e52008dc31dbb30e0a359553fb5fed5 Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Fri, 31 Jul 2026 20:53:30 +0200 Subject: [PATCH] Keep the title tap off the menu button, size it to 48dp (#57) --- .../ui/common/CalendarTitleButton.kt | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/de/jeanlucmakiola/calendula/ui/common/CalendarTitleButton.kt b/app/src/main/java/de/jeanlucmakiola/calendula/ui/common/CalendarTitleButton.kt index d237ea6..4857aa0 100644 --- a/app/src/main/java/de/jeanlucmakiola/calendula/ui/common/CalendarTitleButton.kt +++ b/app/src/main/java/de/jeanlucmakiola/calendula/ui/common/CalendarTitleButton.kt @@ -2,7 +2,7 @@ package de.jeanlucmakiola.calendula.ui.common import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowDropDown @@ -12,14 +12,13 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.Role -import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import de.jeanlucmakiola.calendula.R import kotlinx.datetime.LocalDate @@ -32,9 +31,10 @@ import kotlinx.datetime.LocalDate * [currentDate] seeds the picker with whatever the bar is currently naming (the * visible day, week start or month anchor). * - * The row is inset 8.dp and shifted back out by the same amount, so the ripple - * gets breathing room around the text while the title itself stays on the app - * bar's own start alignment. + * The row keeps its own 8.dp inset rather than shifting back onto the app bar's + * start alignment: M3 places the title flush against the navigation icon's + * trailing edge, and the title is hit-tested on top of it, so a negative offset + * would swallow taps meant for the menu button. */ @Composable fun CalendarTitleButton( @@ -43,24 +43,22 @@ fun CalendarTitleButton( onJumpToDate: (LocalDate) -> Unit, modifier: Modifier = Modifier, ) { - var showDatePicker by remember { mutableStateOf(false) } + var showDatePicker by rememberSaveable { mutableStateOf(false) } Row( modifier = modifier - .offset(x = (-8).dp) + .heightIn(min = 48.dp) .clip(MaterialTheme.shapes.large) .clickable( onClickLabel = stringResource(R.string.drawer_jump_to_date), role = Role.Button, ) { showDatePicker = true } - .padding(horizontal = 8.dp, vertical = 4.dp), + .padding(horizontal = 8.dp), verticalAlignment = Alignment.CenterVertically, ) { Text( text = title, style = MaterialTheme.typography.titleLarge, - maxLines = 1, - overflow = TextOverflow.Ellipsis, modifier = Modifier.weight(1f, fill = false), ) Icon(