summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ben Kwa <kenobi@google.com> 2015-09-25 07:47:56 -0700
committer Ben Kwa <kenobi@google.com> 2015-09-25 07:47:56 -0700
commitbd7da4c44ed0adac9eff0cc55a7c6f3b05f0a955 (patch)
tree7ecb59486028e5fe64cd8fcf960d005a54da43f5
parent2fbe72806909312c58542d3752da8c127fc8ddfc (diff)
Activate selection mode when selecting via mouse.
Modify the MultiSelectManager so that toggling selection on an item notifies listeners of selection changes, if necessary. This fixes a bug where notifySelectionChanged wasn't getting called when the selection changed. BUG=23944862 Change-Id: I3aef41cc92c560dc15bdc0fe310c340bdb3005f6
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/MultiSelectManager.java15
1 files changed, 8 insertions, 7 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/MultiSelectManager.java b/packages/DocumentsUI/src/com/android/documentsui/MultiSelectManager.java
index 583994351a0c..858fb423fe06 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/MultiSelectManager.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/MultiSelectManager.java
@@ -365,8 +365,8 @@ public final class MultiSelectManager {
// To make this more correct, we'd need to update the Ranger class to return
// information about what has changed.
notifySelectionChanged();
- } else if (toggleSelection(input.getItemPosition())) {
- notifySelectionChanged();
+ } else {
+ toggleSelection(input.getItemPosition());
}
}
@@ -375,14 +375,13 @@ public final class MultiSelectManager {
* a new Ranger (range selection manager) at that point is created.
*
* @param position
- * @return True if state changed.
*/
- private boolean toggleSelection(int position) {
+ private void toggleSelection(int position) {
// Position may be special "no position" during certain
// transitional phases. If so, skip handling of the event.
if (position == RecyclerView.NO_POSITION) {
if (DEBUG) Log.d(TAG, "Ignoring toggle for element with no position.");
- return false;
+ return;
}
boolean changed = false;
@@ -391,7 +390,7 @@ public final class MultiSelectManager {
} else {
boolean canSelect = notifyBeforeItemStateChange(position, true);
if (!canSelect) {
- return false;
+ return;
}
if (mSingleSelect && !mSelection.isEmpty()) {
clearSelectionQuietly();
@@ -407,7 +406,9 @@ public final class MultiSelectManager {
changed = true;
}
- return changed;
+ if (changed) {
+ notifySelectionChanged();
+ }
}
/**