From 1c31e758985efe11bc0453a45ea0bb6887e670a4 Mon Sep 17 00:00:00 2001 From: Andrea Mah <31675041+andreamah@users.noreply.github.com> Date: Tue, 13 Aug 2024 09:00:34 -0700 Subject: [PATCH] fix focus on `closeWidget` (#214289) * fix focus on `closeWidget` * remove `disposeFromClose` --- .../gotoSymbol/browser/peek/referencesController.ts | 7 ++++++- .../contrib/gotoSymbol/browser/peek/referencesWidget.ts | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.ts b/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.ts index 40d344f3e3a..e7691080b89 100644 --- a/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.ts +++ b/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.ts @@ -105,9 +105,14 @@ export abstract class ReferencesController implements IEditorContribution { modelPromise.cancel(); if (this._widget) { this._storageService.store(storageKey, JSON.stringify(this._widget.layoutData), StorageScope.PROFILE, StorageTarget.MACHINE); + if (!this._widget.isClosing) { + // to prevent calling this too many times, check whether it was already closing. + this.closeWidget(); + } this._widget = undefined; + } else { + this.closeWidget(); } - this.closeWidget(); })); this._disposables.add(this._widget.onDidSelectReference(event => { diff --git a/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.ts b/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.ts index 6503b7df220..977e68ec231 100644 --- a/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.ts +++ b/src/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.ts @@ -211,6 +211,7 @@ export class ReferenceWidget extends peekView.PeekViewWidget { private _previewContainer!: HTMLElement; private _messageContainer!: HTMLElement; private _dim = new dom.Dimension(0, 0); + private _isClosing = false; // whether or not a dispose is already in progress constructor( editor: ICodeEditor, @@ -231,7 +232,12 @@ export class ReferenceWidget extends peekView.PeekViewWidget { this.create(); } + get isClosing() { + return this._isClosing; + } + override dispose(): void { + this._isClosing = true; this.setModel(undefined); this._callOnDispose.dispose(); this._disposeOnNewModel.dispose();