Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd7da4c4 authored by Ben Kwa's avatar Ben Kwa
Browse files

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
parent 2fbe7280
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -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();
        }
    }

    /**