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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user