diff options
| author | 2024-02-28 23:08:54 +0000 | |
|---|---|---|
| committer | 2024-02-28 23:08:54 +0000 | |
| commit | e34c238e473d36d4f066e1b9d8fac26ba7277692 (patch) | |
| tree | fef78a48d37e844e12e06e02a05e4d05bf74c729 /java/src | |
| parent | c5aac7a24e3aa9b3ff80b6f13702d39df0a2f557 (diff) | |
| parent | f23537f84b01547adeadf0069a1dc5491bba5bda (diff) | |
Merge "Shareousel: make the only selected item unselectable" into main
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 6f4f5167..eda5c4ca 100644 --- a/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt +++ b/java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt @@ -165,13 +165,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])) + } } - } + } } } |