diff options
| author | 2024-09-04 13:39:22 -0700 | |
|---|---|---|
| committer | 2024-09-04 13:44:39 -0700 | |
| commit | 1e6c421fe8ded03db23de5d7eb3c6f31beef339c (patch) | |
| tree | e4297181ac71d5bcb83328d57cc4e57aca945dfe | |
| parent | 782ffd0bc9ca647b0fec87afe7d779399605df0a (diff) | |
Fix an IndexOutOfBoundsException when dragging to add widgets.
Bug: 359992427
Test: Manually by dragging many widgets and verifying there is no crash.
Flag: EXEMPT bugfix
Change-Id: Ieb0e75044877ee7ee4e000ad98c72fc21b64dc69
| -rw-r--r-- | packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt index be6a0f9346a3..bc3fa824830a 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalHub.kt @@ -65,6 +65,7 @@ import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyGridState import androidx.compose.foundation.lazy.grid.LazyHorizontalGrid +import androidx.compose.foundation.lazy.grid.itemsIndexed import androidx.compose.foundation.lazy.grid.rememberLazyGridState import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.selection.selectable @@ -687,21 +688,20 @@ private fun BoxScope.CommunalHubLazyGrid( horizontalArrangement = Arrangement.spacedBy(Dimensions.ItemSpacing), verticalArrangement = Arrangement.spacedBy(Dimensions.ItemSpacing), ) { - items( - count = list.size, - key = { index -> list[index].key }, - contentType = { index -> list[index].key }, - span = { index -> GridItemSpan(list[index].size.span) }, - ) { index -> + itemsIndexed( + items = list, + key = { _, item -> item.key }, + contentType = { _, item -> item.key }, + span = { _, item -> GridItemSpan(item.size.span) }, + ) { index, item -> val size = SizeF( Dimensions.CardWidth.value, - list[index].size.dp().value, + item.size.dp().value, ) val cardModifier = Modifier.requiredSize(width = size.width.dp, height = size.height.dp) if (viewModel.isEditMode && dragDropState != null) { - val selected by - remember(index) { derivedStateOf { list[index].key == selectedKey.value } } + val selected = item.key == selectedKey.value DraggableItem( modifier = if (dragDropState.draggingItemIndex == index) { @@ -713,12 +713,12 @@ private fun BoxScope.CommunalHubLazyGrid( }, dragDropState = dragDropState, selected = selected, - enabled = list[index].isWidgetContent(), + enabled = item.isWidgetContent(), index = index, ) { isDragging -> CommunalContent( modifier = cardModifier, - model = list[index], + model = item, viewModel = viewModel, size = size, selected = selected && !isDragging, @@ -731,7 +731,7 @@ private fun BoxScope.CommunalHubLazyGrid( } } else { CommunalContent( - model = list[index], + model = item, viewModel = viewModel, size = size, selected = false, |