mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Fix checkbox selection when tapping text in Compose dialogs
This commit is contained in:
		| @@ -1,8 +1,10 @@ | ||||
| package eu.kanade.presentation.components | ||||
|  | ||||
| import androidx.compose.foundation.clickable | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.Row | ||||
| import androidx.compose.foundation.layout.Spacer | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.material3.AlertDialog | ||||
| import androidx.compose.material3.Checkbox | ||||
| @@ -85,27 +87,30 @@ fun ChangeCategoryDialog( | ||||
|         text = { | ||||
|             Column { | ||||
|                 selection.forEach { checkbox -> | ||||
|                     val onChange: (CheckboxState<Category>) -> Unit = { | ||||
|                         val index = selection.indexOf(it) | ||||
|                         val mutableList = selection.toMutableList() | ||||
|                         mutableList.removeAt(index) | ||||
|                         mutableList.add(index, it.next()) | ||||
|                         selection = mutableList.toList() | ||||
|                     } | ||||
|                     Row( | ||||
|                         modifier = Modifier | ||||
|                             .fillMaxWidth() | ||||
|                             .clickable { onChange(checkbox) }, | ||||
|                         verticalAlignment = Alignment.CenterVertically, | ||||
|                     ) { | ||||
|                         val onCheckboxChange: (CheckboxState<Category>) -> Unit = { | ||||
|                             val index = selection.indexOf(it) | ||||
|                             val mutableList = selection.toMutableList() | ||||
|                             mutableList.removeAt(index) | ||||
|                             mutableList.add(index, it.next()) | ||||
|                             selection = mutableList.toList() | ||||
|                         } | ||||
|                         when (checkbox) { | ||||
|                             is CheckboxState.TriState -> { | ||||
|                                 TriStateCheckbox( | ||||
|                                     state = checkbox.asState(), | ||||
|                                     onClick = { onCheckboxChange(checkbox) }, | ||||
|                                     onClick = { onChange(checkbox) }, | ||||
|                                 ) | ||||
|                             } | ||||
|                             is CheckboxState.State -> { | ||||
|                                 Checkbox( | ||||
|                                     checked = checkbox.isChecked, | ||||
|                                     onCheckedChange = { onCheckboxChange(checkbox) }, | ||||
|                                     onCheckedChange = { onChange(checkbox) }, | ||||
|                                 ) | ||||
|                             } | ||||
|                         } | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| package eu.kanade.tachiyomi.ui.library | ||||
| package eu.kanade.presentation.components | ||||
|  | ||||
| import androidx.compose.foundation.clickable | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.Row | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.material3.AlertDialog | ||||
| import androidx.compose.material3.Checkbox | ||||
| import androidx.compose.material3.Text | ||||
| @@ -12,6 +14,7 @@ import androidx.compose.runtime.mutableStateOf | ||||
| import androidx.compose.runtime.remember | ||||
| import androidx.compose.runtime.setValue | ||||
| import androidx.compose.ui.Alignment | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.compose.ui.res.stringResource | ||||
| import eu.kanade.core.prefs.CheckboxState | ||||
| import eu.kanade.tachiyomi.R | ||||
| @@ -58,16 +61,23 @@ fun DeleteLibraryMangaDialog( | ||||
|         text = { | ||||
|             Column { | ||||
|                 list.forEach { state -> | ||||
|                     Row(verticalAlignment = Alignment.CenterVertically) { | ||||
|                     val onCheck = { | ||||
|                         val index = list.indexOf(state) | ||||
|                         val mutableList = list.toMutableList() | ||||
|                         mutableList.removeAt(index) | ||||
|                         mutableList.add(index, state.next() as CheckboxState.State<Int>) | ||||
|                         list = mutableList.toList() | ||||
|                     } | ||||
|  | ||||
|                     Row( | ||||
|                         modifier = Modifier | ||||
|                             .fillMaxWidth() | ||||
|                             .clickable { onCheck() }, | ||||
|                         verticalAlignment = Alignment.CenterVertically, | ||||
|                     ) { | ||||
|                         Checkbox( | ||||
|                             checked = state.isChecked, | ||||
|                             onCheckedChange = { | ||||
|                                 val index = list.indexOf(state) | ||||
|                                 val mutableList = list.toMutableList() | ||||
|                                 mutableList.removeAt(index) | ||||
|                                 mutableList.add(index, state.next() as CheckboxState.State<Int>) | ||||
|                                 list = mutableList.toList() | ||||
|                             }, | ||||
|                             onCheckedChange = { onCheck() }, | ||||
|                         ) | ||||
|                         Text(text = stringResource(state.value)) | ||||
|                     } | ||||
|   | ||||
| @@ -13,6 +13,7 @@ import eu.kanade.domain.manga.model.Manga | ||||
| import eu.kanade.domain.manga.model.isLocal | ||||
| import eu.kanade.domain.manga.model.toDbManga | ||||
| import eu.kanade.presentation.components.ChangeCategoryDialog | ||||
| import eu.kanade.presentation.components.DeleteLibraryMangaDialog | ||||
| import eu.kanade.presentation.library.LibraryScreen | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.models.toDomainManga | ||||
|   | ||||
		Reference in New Issue
	
	Block a user