Loading packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java +29 −19 Original line number Original line Diff line number Diff line Loading @@ -383,6 +383,10 @@ public final class MultiSelectManager implements View.OnKeyListener { * @param position * @param position */ */ void setSelectionRangeBegin(int position) { void setSelectionRangeBegin(int position) { if (position == RecyclerView.NO_POSITION) { return; } if (mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(position))) { if (mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(position))) { mRanger = new Range(position); mRanger = new Range(position); } } Loading Loading @@ -1160,13 +1164,15 @@ public final class MultiSelectManager implements View.OnKeyListener { mSelection.applyProvisionalSelection(); mSelection.applyProvisionalSelection(); mModel.endSelection(); mModel.endSelection(); int firstSelected = mModel.getPositionNearestOrigin(); int firstSelected = mModel.getPositionNearestOrigin(); if (!mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(firstSelected))) { if (firstSelected != NOT_SET) { Log.w(TAG, "First selected by band is NOT in selection!"); if (mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(firstSelected))) { // Sadly this is really happening. Need to figure out what's going on. } else if (firstSelected != NOT_SET) { // TODO: firstSelected should really be lastSelected, we want to anchor the item // TODO: firstSelected should really be lastSelected, we want to anchor the item // where the mouse-up occurred. // where the mouse-up occurred. setSelectionRangeBegin(firstSelected); setSelectionRangeBegin(firstSelected); } else { // TODO: Check if this is really happening. Log.w(TAG, "First selected by band is NOT in selection!"); } } } mModel = null; mModel = null; Loading Loading @@ -1558,7 +1564,10 @@ public final class MultiSelectManager implements View.OnKeyListener { for (int column = columnStartIndex; column <= columnEndIndex; column++) { for (int column = columnStartIndex; column <= columnEndIndex; column++) { SparseIntArray items = mColumns.get(mColumnBounds.get(column).lowerLimit); SparseIntArray items = mColumns.get(mColumnBounds.get(column).lowerLimit); for (int row = rowStartIndex; row <= rowEndIndex; row++) { for (int row = rowStartIndex; row <= rowEndIndex; row++) { int position = items.get(items.keyAt(row)); // The default return value for SparseIntArray.get is 0, which is a valid // position. Use a sentry value to prevent erroneously selecting item 0. int position = items.get(items.keyAt(row), NOT_SET); if (position != NOT_SET) { String id = mHelper.getModelIdFromAdapterPosition(position); String id = mHelper.getModelIdFromAdapterPosition(position); if (id != null) { if (id != null) { // The adapter inserts items for UI layout purposes that aren't associated // The adapter inserts items for UI layout purposes that aren't associated Loading @@ -1574,6 +1583,7 @@ public final class MultiSelectManager implements View.OnKeyListener { } } } } } } } /** /** * @return Returns true if the position is the nearest to the origin, or, in the case of the * @return Returns true if the position is the nearest to the origin, or, in the case of the Loading Loading
packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java +29 −19 Original line number Original line Diff line number Diff line Loading @@ -383,6 +383,10 @@ public final class MultiSelectManager implements View.OnKeyListener { * @param position * @param position */ */ void setSelectionRangeBegin(int position) { void setSelectionRangeBegin(int position) { if (position == RecyclerView.NO_POSITION) { return; } if (mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(position))) { if (mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(position))) { mRanger = new Range(position); mRanger = new Range(position); } } Loading Loading @@ -1160,13 +1164,15 @@ public final class MultiSelectManager implements View.OnKeyListener { mSelection.applyProvisionalSelection(); mSelection.applyProvisionalSelection(); mModel.endSelection(); mModel.endSelection(); int firstSelected = mModel.getPositionNearestOrigin(); int firstSelected = mModel.getPositionNearestOrigin(); if (!mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(firstSelected))) { if (firstSelected != NOT_SET) { Log.w(TAG, "First selected by band is NOT in selection!"); if (mSelection.contains(mEnvironment.getModelIdFromAdapterPosition(firstSelected))) { // Sadly this is really happening. Need to figure out what's going on. } else if (firstSelected != NOT_SET) { // TODO: firstSelected should really be lastSelected, we want to anchor the item // TODO: firstSelected should really be lastSelected, we want to anchor the item // where the mouse-up occurred. // where the mouse-up occurred. setSelectionRangeBegin(firstSelected); setSelectionRangeBegin(firstSelected); } else { // TODO: Check if this is really happening. Log.w(TAG, "First selected by band is NOT in selection!"); } } } mModel = null; mModel = null; Loading Loading @@ -1558,7 +1564,10 @@ public final class MultiSelectManager implements View.OnKeyListener { for (int column = columnStartIndex; column <= columnEndIndex; column++) { for (int column = columnStartIndex; column <= columnEndIndex; column++) { SparseIntArray items = mColumns.get(mColumnBounds.get(column).lowerLimit); SparseIntArray items = mColumns.get(mColumnBounds.get(column).lowerLimit); for (int row = rowStartIndex; row <= rowEndIndex; row++) { for (int row = rowStartIndex; row <= rowEndIndex; row++) { int position = items.get(items.keyAt(row)); // The default return value for SparseIntArray.get is 0, which is a valid // position. Use a sentry value to prevent erroneously selecting item 0. int position = items.get(items.keyAt(row), NOT_SET); if (position != NOT_SET) { String id = mHelper.getModelIdFromAdapterPosition(position); String id = mHelper.getModelIdFromAdapterPosition(position); if (id != null) { if (id != null) { // The adapter inserts items for UI layout purposes that aren't associated // The adapter inserts items for UI layout purposes that aren't associated Loading @@ -1574,6 +1583,7 @@ public final class MultiSelectManager implements View.OnKeyListener { } } } } } } } /** /** * @return Returns true if the position is the nearest to the origin, or, in the case of the * @return Returns true if the position is the nearest to the origin, or, in the case of the Loading