From 1c8c9cf5f2c005e70a3b640df6180edf34e19ae8 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 13 May 2020 11:10:06 +0200 Subject: [PATCH] differentiate between pick and preview, https://github.com/microsoft/vscode/issues/96489 --- .../quickaccess/gotoSymbolQuickAccess.ts | 24 +++++++++---------- .../browser/contrib/toc/tocProvider.ts | 14 +++++++---- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts b/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts index d23fc98c27e..0f4dceb9a8f 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/quickaccess/gotoSymbolQuickAccess.ts @@ -12,7 +12,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IQuickAccessRegistry, Extensions as QuickaccessExtensions } from 'vs/platform/quickinput/common/quickAccess'; import { AbstractGotoSymbolQuickAccessProvider, IGotoSymbolQuickPickItem } from 'vs/editor/contrib/quickAccess/gotoSymbolQuickAccess'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { IWorkbenchEditorConfiguration, IEditorPane } from 'vs/workbench/common/editor'; +import { IWorkbenchEditorConfiguration, IEditorPane, IVisibleEditorPane } from 'vs/workbench/common/editor'; import { ITextModel } from 'vs/editor/common/model'; import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { timeout } from 'vs/base/common/async'; @@ -108,11 +108,13 @@ export class GotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccess protected provideWithoutTextEditor(picker: IQuickPick): IDisposable { const pane = this.editorService.activeEditorPane; - if (!pane || !TableOfContentsProviderRegistry.has(pane.getId())) { - // - return super.provideWithoutTextEditor(picker); + if (pane && TableOfContentsProviderRegistry.has(pane.getId())) { + return this.doGetTableOfContentsPicks(picker, pane); } + return super.provideWithoutTextEditor(picker); + } + private doGetTableOfContentsPicks(picker: IQuickPick, pane: IVisibleEditorPane): IDisposable { const provider = TableOfContentsProviderRegistry.get(pane.getId())!; const cts = new CancellationTokenSource(); @@ -144,7 +146,7 @@ export class GotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccess disposables.add(picker.onDidAccept(() => { picker.hide(); const [entry] = picker.selectedItems; - entries[entry.index]?.reveal(); + entries[entry.index]?.pick(); })); const updatePickerItems = () => { @@ -177,14 +179,11 @@ export class GotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccess let ignoreFirstActiveEvent = true; disposables.add(picker.onDidChangeActive(() => { const [entry] = picker.activeItems; - if (entry && entries[entry.index]) { - if (ignoreFirstActiveEvent) { - ignoreFirstActiveEvent = false; - return; + if (!ignoreFirstActiveEvent) { + entries[entry.index]?.preview(); } - - entries[entry.index]?.reveal(); + ignoreFirstActiveEvent = false; } })); @@ -238,7 +237,8 @@ export interface ITableOfContentsEntry { label: string; detail?: string; description?: string; - reveal(): any; + pick(): any; + preview(): any; } export interface ITableOfContentsProvider { diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts b/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts index b71692f646e..9f6b543e135 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/toc/tocProvider.ts @@ -14,7 +14,7 @@ TableOfContentsProviderRegistry.register(NotebookEditor.ID, new class implements return undefined; } // return an entry per markdown header - const editorWidget = editor.getControl(); + const notebookWidget = editor.getControl(); const result: ITableOfContentsEntry[] = []; for (let cell of editor.viewModel.viewCells) { const content = cell.getText(); @@ -28,10 +28,14 @@ TableOfContentsProviderRegistry.register(NotebookEditor.ID, new class implements result.push({ icon: cell.cellKind === CellKind.Markdown ? Codicon.markdown : Codicon.code, label: matches[j].replace(/^[ \t]*(\#+)/, ''), - reveal: () => { - editorWidget.revealInCenterIfOutsideViewport(cell); - editorWidget.selectElement(cell); - // editor.focusNotebookCell(cell, 'container'); + pick() { + notebookWidget.revealInCenterIfOutsideViewport(cell); + notebookWidget.selectElement(cell); + notebookWidget.focusNotebookCell(cell, 'container'); + }, + preview() { + notebookWidget.revealInCenterIfOutsideViewport(cell); + notebookWidget.selectElement(cell); } }); } -- GitLab