diff --git a/src/vs/workbench/contrib/files/browser/fileActions.ts b/src/vs/workbench/contrib/files/browser/fileActions.ts index 8fc60ca17e97e3605a3cc5dcfd6deb5322b831cf..43beeb606fdeae8fa5256d2fd54febb6f81ce587 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.ts @@ -980,7 +980,12 @@ const downloadFileHandler = (accessor: ServicesAccessor) => { const explorerService = accessor.get(IExplorerService); const stats = explorerService.getContext(true); + let canceled = false; stats.forEach(async s => { + if (canceled) { + return; + } + if (isWeb) { if (!s.isDirectory) { triggerDownload(asDomUri(s.resource), s.name); @@ -999,6 +1004,9 @@ const downloadFileHandler = (accessor: ServicesAccessor) => { }); if (destination) { await textFileService.copy(s.resource, destination); + } else { + // User canceled a download. In case there were multiple files selected we should cancel the remainder of the prompts #86100 + canceled = true; } } });