未验证 提交 5360e035 编写于 作者: I Isidor Nikolic 提交者: GitHub

Merge pull request #69524 from Microsoft/isidorn/ignoreBlurAndDispose

Fix rename input in Explorer
......@@ -107,6 +107,8 @@ export class NewFileAction extends BaseErrorReportingAction {
static readonly ID = 'workbench.files.action.createFileFromExplorer';
static readonly LABEL = nls.localize('createNewFile', "New File");
private toDispose: IDisposable[] = [];
constructor(
private getElement: () => ExplorerItem,
@INotificationService notificationService: INotificationService,
......@@ -116,6 +118,10 @@ export class NewFileAction extends BaseErrorReportingAction {
) {
super('explorer.newFile', NEW_FILE_LABEL, notificationService);
this.class = 'explorer-action new-file';
this.toDispose.push(this.explorerService.onDidChangeEditable(e => {
const elementIsBeingEdited = this.explorerService.isEditable(e);
this.enabled = !elementIsBeingEdited;
}));
}
run(): Promise<any> {
......@@ -158,6 +164,11 @@ export class NewFileAction extends BaseErrorReportingAction {
});
});
}
dispose(): void {
super.dispose();
dispose(this.toDispose);
}
}
/* New Folder */
......@@ -165,6 +176,8 @@ export class NewFolderAction extends BaseErrorReportingAction {
static readonly ID = 'workbench.files.action.createFolderFromExplorer';
static readonly LABEL = nls.localize('createNewFolder', "New Folder");
private toDispose: IDisposable[] = [];
constructor(
private getElement: () => ExplorerItem,
@INotificationService notificationService: INotificationService,
......@@ -173,6 +186,10 @@ export class NewFolderAction extends BaseErrorReportingAction {
) {
super('explorer.newFolder', NEW_FOLDER_LABEL, notificationService);
this.class = 'explorer-action new-folder';
this.toDispose.push(this.explorerService.onDidChangeEditable(e => {
const elementIsBeingEdited = this.explorerService.isEditable(e);
this.enabled = !elementIsBeingEdited;
}));
}
run(): Promise<any> {
......@@ -215,6 +232,11 @@ export class NewFolderAction extends BaseErrorReportingAction {
});
});
}
dispose(): void {
super.dispose();
dispose(this.toDispose);
}
}
/* Create new file from anywhere: Open untitled */
......
......@@ -214,8 +214,12 @@ export class FilesRenderer implements ITreeRenderer<ExplorerItem, FuzzyScore, IF
editableData.onFinish(value, success);
});
let ignoreDisposeAndBlur = true;
setTimeout(() => ignoreDisposeAndBlur = false, 0);
const blurDisposable = DOM.addDisposableListener(inputBox.inputElement, DOM.EventType.BLUR, () => {
done(inputBox.isInputValid());
if (!ignoreDisposeAndBlur) {
done(inputBox.isInputValid());
}
});
const toDispose = [
......@@ -235,8 +239,10 @@ export class FilesRenderer implements ITreeRenderer<ExplorerItem, FuzzyScore, IF
];
return toDisposable(() => {
blurDisposable.dispose();
done(inputBox.isInputValid());
if (!ignoreDisposeAndBlur) {
blurDisposable.dispose();
done(inputBox.isInputValid());
}
});
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册