diff options
| author | 2024-02-17 13:41:31 -0800 | |
|---|---|---|
| committer | 2024-02-17 13:53:59 -0800 | |
| commit | f23537f84b01547adeadf0069a1dc5491bba5bda (patch) | |
| tree | 9f3ab39da13de820809e76c954748d5348bfa356 /java/src | |
| parent | 87aeb10a63dea6f47aa66eff8ef2da8b5814223c (diff) | |
Shareousel: make the only selected item unselectable
Fix: 325496908
Test: atest IntentResolver-tests-unit
Test: manual functionality testing
Change-Id: Ie7d8a7691d697f3c0aa87ce0a4b144f48bfdbdd5
Diffstat (limited to 'java/src')
3 files changed, 14 insertions, 11 deletions
diff --git a/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt b/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt index 003f6884..61eaca77 100644 --- a/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt +++ b/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt @@ -163,13 +163,14 @@ class PayloadToggleInteractor( fun setSelected(item: Item, isSelected: Boolean) { val record = item as Record - record.isSelected.value = isSelected scope.launch { val (_, selectionTracker) = waitForCursorData() ?: return@launch - selectionTracker.setItemSelection(record.key, record, isSelected) - val targetIntent = targetIntentModifier(selectionTracker.getSelection()) - val newJob = scope.launch { notifySelectionChanged(targetIntent) } - notifySelectionJobRef.getAndSet(newJob)?.cancel() + if (selectionTracker.setItemSelection(record.key, record, isSelected)) { + val targetIntent = targetIntentModifier(selectionTracker.getSelection()) + val newJob = scope.launch { notifySelectionChanged(targetIntent) } + notifySelectionJobRef.getAndSet(newJob)?.cancel() + record.isSelected.value = selectionTracker.isItemSelected(record.key) + } } } diff --git a/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt b/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt index 4ce006ec..c9431731 100644 --- a/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt +++ b/java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt @@ -131,7 +131,7 @@ class SelectionTracker<Item>( selections[key] = item return true } - if (!isSelected && idx >= 0) { + if (!isSelected && idx >= 0 && selections.size() > 1) { selections.removeAt(idx) return true } diff --git a/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt b/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt index d7e04920..58da5bc4 100644 --- a/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt +++ b/java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt @@ -46,12 +46,14 @@ class TargetIntentModifier<Item>( } else { putParcelableArrayListExtra(EXTRA_STREAM, uris) } - clipData = - ClipData("", arrayOf(targetMimeType), ClipData.Item(uris[0])).also { - for (i in 1 until uris.size) { - it.addItem(ClipData.Item(uris[i])) + if (uris.isNotEmpty()) { + clipData = + ClipData("", arrayOf(targetMimeType), ClipData.Item(uris[0])).also { + for (i in 1 until uris.size) { + it.addItem(ClipData.Item(uris[i])) + } } - } + } } } |