fix: folder tabs selectable again — long-press via pointerInput/detectTapGestures instead of combinedClickable (Tab's selectable masked the modifier's onClick)
This commit is contained in:
parent
38b36687ee
commit
3f84249c82
1 changed files with 20 additions and 17 deletions
|
|
@ -2,10 +2,9 @@ package com.rada.ui.library
|
||||||
|
|
||||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.combinedClickable
|
import androidx.compose.foundation.gestures.detectTapGestures
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
|
@ -64,6 +63,7 @@ import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.input.pointer.pointerInput
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
|
@ -79,7 +79,7 @@ import com.rada.ui.theme.PremiumSurfaceVariant
|
||||||
import com.rada.ui.theme.PremiumText
|
import com.rada.ui.theme.PremiumText
|
||||||
import com.rada.ui.theme.PremiumTextSecondary
|
import com.rada.ui.theme.PremiumTextSecondary
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun LibraryScreen(
|
fun LibraryScreen(
|
||||||
onBack: () -> Unit,
|
onBack: () -> Unit,
|
||||||
|
|
@ -210,7 +210,17 @@ fun LibraryScreen(
|
||||||
) {
|
) {
|
||||||
tabLabels.forEachIndexed { index, label ->
|
tabLabels.forEachIndexed { index, label ->
|
||||||
Tab(
|
Tab(
|
||||||
modifier = Modifier.combinedClickable(
|
// Long-press detected at the pointer level: putting
|
||||||
|
// combinedClickable here would be masked by Tab's own
|
||||||
|
// selectable semantics and break selection entirely.
|
||||||
|
modifier = Modifier.pointerInput(index) {
|
||||||
|
detectTapGestures(
|
||||||
|
onLongPress = {
|
||||||
|
if (index > 0) playlistToDelete = filteredPlaylists[index - 1]
|
||||||
|
},
|
||||||
|
)
|
||||||
|
},
|
||||||
|
selected = selectedTabIndex == index,
|
||||||
onClick = {
|
onClick = {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
viewModel.selectPlaylist(null)
|
viewModel.selectPlaylist(null)
|
||||||
|
|
@ -218,13 +228,6 @@ fun LibraryScreen(
|
||||||
viewModel.selectPlaylist(filteredPlaylists[index - 1].id)
|
viewModel.selectPlaylist(filteredPlaylists[index - 1].id)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLongClick = {
|
|
||||||
// Long-press a folder tab to delete the group.
|
|
||||||
if (index > 0) playlistToDelete = filteredPlaylists[index - 1]
|
|
||||||
},
|
|
||||||
),
|
|
||||||
selected = selectedTabIndex == index,
|
|
||||||
onClick = { },
|
|
||||||
text = {
|
text = {
|
||||||
Text(
|
Text(
|
||||||
text = label,
|
text = label,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue