summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-02-28 23:08:54 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-02-28 23:08:54 +0000
commite34c238e473d36d4f066e1b9d8fac26ba7277692 (patch)
treefef78a48d37e844e12e06e02a05e4d05bf74c729 /java/src
parentc5aac7a24e3aa9b3ff80b6f13702d39df0a2f557 (diff)
parentf23537f84b01547adeadf0069a1dc5491bba5bda (diff)
Merge "Shareousel: make the only selected item unselectable" into main
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/contentpreview/PayloadToggleInteractor.kt11
-rw-r--r--java/src/com/android/intentresolver/contentpreview/SelectionTracker.kt2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/TargetIntentModifier.kt12
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]))
+ }
}
- }
+ }
}
}