From da4b8aa3f18b0462a69883544a4453924e3feb3e Mon Sep 17 00:00:00 2001 From: Steve McKay Date: Tue, 8 Mar 2016 14:49:38 -0800 Subject: Don't exit selection after sharing and copying... And after canceled deletes. Bug: 27135937 Change-Id: I2cd736ce53e15d48b6b00ed1156a2b359f1aeb42 --- .../documentsui/dirlist/DirectoryFragment.java | 25 +++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java index 19679231c130..8d4472dc9450 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java @@ -586,18 +586,17 @@ public class DirectoryFragment extends Fragment case R.id.menu_share: shareDocuments(selection); - mode.finish(); return true; case R.id.menu_delete: - // Exit selection mode first, so we avoid deselecting deleted documents. - mode.finish(); - deleteDocuments(selection); + // Pass mode along to the delete function so it can + // end action mode when documents are deleted. + // It won't end action mode if user cancels the delete. + deleteDocuments(selection, mode); return true; case R.id.menu_copy_to: transferDocuments(selection, FileOperationService.OPERATION_COPY); - mode.finish(); return true; case R.id.menu_move_to: @@ -615,8 +614,10 @@ public class DirectoryFragment extends Fragment return true; case R.id.menu_rename: - renameDocuments(selection); + // Exit selection mode first, so we avoid deselecting deleted + // (renamed) documents. mode.finish(); + renameDocuments(selection); return true; default: @@ -700,7 +701,7 @@ public class DirectoryFragment extends Fragment }.execute(selected); } - private void deleteDocuments(final Selection selected) { + private void deleteDocuments(final Selection selected, final ActionMode mode) { assert(!selected.isEmpty()); final DocumentInfo srcParent = getDisplayState().stack.peek(); @@ -732,7 +733,15 @@ public class DirectoryFragment extends Fragment android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - // Hide the files in the UI. + // Finish selection mode first which clears selection so we + // don't end up trying to deselect deleted documents. + // This is done here, rather in the onActionItemClicked + // so we can avoid de-selecting items in the case where + // the user cancels the delete. + mode.finish(); + // Hide the files in the UI...since the operation + // might be queued up on FileOperationService. + // We're walking a line here. mAdapter.hide(selected.getAll()); FileOperations.delete( getActivity(), docs, srcParent, getDisplayState().stack); -- cgit v1.2.3-59-g8ed1b