From 4b5960616720c1f6e5769b7976c829eca292a65b Mon Sep 17 00:00:00 2001 From: orange4glace Date: Tue, 18 Jun 2019 20:05:02 +0900 Subject: [PATCH 1/2] fix: #75693 --- .../files/browser/views/explorerViewer.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts index 76fab05327567..3da1ae98039bf 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts @@ -218,22 +218,20 @@ export class FilesRenderer implements ITreeRenderer inputBox.focus(), 100); inputBox.select({ start: 0, end: lastDot > 0 && !stat.isDirectory ? lastDot : value.length }); - const done = once(async (success: boolean, finishEditing: boolean) => { + const done = once(async (success: boolean) => { label.element.style.display = 'none'; const value = inputBox.value; dispose(toDispose); container.removeChild(label.element); - if (finishEditing) { - // Timeout: once done rendering only then re-render #70902 - setTimeout(() => editableData.onFinish(value, success), 0); - } + // Timeout: once done rendering only then re-render #70902 + setTimeout(() => editableData.onFinish(value, success), 0); }); const blurDisposable = DOM.addDisposableListener(inputBox.inputElement, DOM.EventType.BLUR, () => { - done(inputBox.isInputValid(), true); + done(inputBox.isInputValid()); }); const toDispose = [ @@ -241,10 +239,10 @@ export class FilesRenderer implements ITreeRenderer { if (e.equals(KeyCode.Enter)) { if (inputBox.validate()) { - done(true, true); + done(true); } } else if (e.equals(KeyCode.Escape)) { - done(false, true); + done(false); } }), blurDisposable, @@ -254,7 +252,7 @@ export class FilesRenderer implements ITreeRenderer { blurDisposable.dispose(); - done(false, false); + done(false); }); } From 63d867d80403f6be290955e71a7b7e05ea414ba8 Mon Sep 17 00:00:00 2001 From: orange4glace Date: Wed, 19 Jun 2019 21:36:30 +0900 Subject: [PATCH 2/2] fix: code convention --- .../files/browser/views/explorerViewer.ts | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts index 3da1ae98039bf..184916e4ee56c 100644 --- a/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts @@ -218,8 +218,17 @@ export class FilesRenderer implements ITreeRenderer inputBox.focus(), 100); - inputBox.select({ start: 0, end: lastDot > 0 && !stat.isDirectory ? lastDot : value.length }); + + let isFinishableDisposeEvent = false; + setTimeout(() => { + // Check if disposed + if (!inputBox.inputElement) { + return; + } + inputBox.focus(); + inputBox.select({ start: 0, end: lastDot > 0 && !stat.isDirectory ? lastDot : value.length }); + isFinishableDisposeEvent = true; + }, 0); const done = once(async (success: boolean) => { label.element.style.display = 'none'; @@ -251,8 +260,12 @@ export class FilesRenderer implements ITreeRenderer { - blurDisposable.dispose(); - done(false); + if (isFinishableDisposeEvent) { + done(false); + } + else { + dispose(toDispose); + } }); }