diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 40ec898635e426ca16fd68c4a6939c301d8828d1..8654cb14b36bb1bf97c52e001abcc0bc83e00090 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -1087,6 +1087,8 @@ window.FileList = {
 		else {
 			// no files passed, delete all in current dir
 			params.allfiles = true;
+			// show spinner for all files
+			this.$fileList.find('tr>td.date .action.delete').removeClass('delete-icon').addClass('progress-icon');
 		}
 
 		$.post(OC.filePath('files', 'ajax', 'delete.php'),
@@ -1106,6 +1108,7 @@ window.FileList = {
 								FileList.fileSummary.remove({type: fileEl.attr('data-type'), size: fileEl.attr('data-size')});
 							});
 						}
+						// TODO: this info should be returned by the ajax call!
 						checkTrashStatus();
 						FileList.updateEmptyContent();
 						FileList.fileSummary.update();
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index eab364644cdef10fdcc59bded34c893c90fd81eb..7a2b56d559a00edcf6b5fdf3e26cd5ce98875287 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -413,6 +413,20 @@ describe('FileList tests', function() {
 
 			expect(notificationStub.notCalled).toEqual(true);
 		});
+		it('shows spinner on files to be deleted', function() {
+			FileList.setFiles(testFiles);
+			doDelete();
+
+			expect(FileList.findFileEl('One.txt').find('.progress-icon:not(.delete-icon)').length).toEqual(1);
+			expect(FileList.findFileEl('Three.pdf').find('.delete-icon:not(.progress-icon)').length).toEqual(1);
+		});
+		it('shows spinner on all files when deleting all', function() {
+			FileList.setFiles(testFiles);
+
+			FileList.do_delete();
+
+			expect(FileList.$fileList.find('tr .progress-icon:not(.delete-icon)').length).toEqual(4);
+		});
 		it('updates summary when deleting last file', function() {
 			FileList.setFiles([testFiles[0], testFiles[1]]);
 			doDelete();