Merge "Do not crash when trying to select unselectable items with keyboard." into nyc-dev

am: 566c595

* commit '566c595d4d283f10d4d26b6c4ee2805abb7fa2df':
  Do not crash when trying to select unselectable items with keyboard.

Change-Id: Ica9fb710057a2d5f94625a4ec71a27797b85c27f
This commit is contained in:
Tomasz Mikolajewski
2016-04-13 06:41:14 +00:00
committed by android-build-merger
2 changed files with 19 additions and 6 deletions

View File

@@ -1410,7 +1410,7 @@ public class DirectoryFragment extends Fragment
// Handle range selection adjustments. Extending the selection will adjust the
// bounds of the in-progress range selection. Each time an unshifted navigation
// event is received, the range selection is restarted.
if (shouldExtendSelection(event)) {
if (shouldExtendSelection(doc, event)) {
if (!mSelectionManager.isRangeSelectionActive()) {
// Start a range selection if one isn't active
mSelectionManager.startRangeSelection(doc.getAdapterPosition());
@@ -1447,9 +1447,22 @@ public class DirectoryFragment extends Fragment
return false;
}
private boolean shouldExtendSelection(KeyEvent event) {
return Events.isNavigationKeyCode(event.getKeyCode()) &&
event.isShiftPressed();
private boolean shouldExtendSelection(DocumentHolder doc, KeyEvent event) {
if (!Events.isNavigationKeyCode(event.getKeyCode()) || !event.isShiftPressed()) {
return false;
}
// TODO: Combine this method with onBeforeItemStateChange, as both of them are almost
// the same, and responsible for the same thing (whether to select or not).
final Cursor cursor = mModel.getItem(doc.modelId);
if (cursor == null) {
Log.w(TAG, "Couldn't obtain cursor for modelId: " + doc.modelId);
return false;
}
final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
return mTuner.canSelectType(docMimeType, docFlags);
}
}

View File

@@ -378,8 +378,8 @@ public final class MultiSelectManager {
* @param pos The anchor position for the selection range.
*/
void startRangeSelection(int pos) {
attemptSelect(mAdapter.getModelId(pos));
setSelectionRangeBegin(pos);
attemptSelect(mAdapter.getModelId(pos));
setSelectionRangeBegin(pos);
}
/**