From 1907e3004d8b8440d8cc5e55378f19e4626db3e2 Mon Sep 17 00:00:00 2001 From: OneWay Date: Fri, 4 Sep 2026 01:53:06 +0800 Subject: [PATCH] fix: key dictionary list items by path Swipe state follows its row instead of migrating to a neighbor on delete or reorder. --- .../settings/components/DictionaryManagement.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt b/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt index fed8e5a..16e4b6e 100644 --- a/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt +++ b/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.key import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState @@ -263,12 +264,14 @@ private fun DictionaryListSection( verticalArrangement = Arrangement.spacedBy(4.dp) ) { dictionaries.forEach { dictionary -> - DictionaryListItem( - dictionary = dictionary, - onToggle = { onToggleDictionary(dictionary.path) }, - onDelete = { onDeleteDictionary(dictionary) }, - isDeleteBlocked = isDeleteBlocked - ) + key(dictionary.path) { + DictionaryListItem( + dictionary = dictionary, + onToggle = { onToggleDictionary(dictionary.path) }, + onDelete = { onDeleteDictionary(dictionary) }, + isDeleteBlocked = isDeleteBlocked + ) + } } } }