From ebec68bc3d9655ac34e5b4de34651d2dd14354e6 Mon Sep 17 00:00:00 2001 From: rebornix Date: Wed, 24 Mar 2021 13:49:02 -0700 Subject: [PATCH] fix #119728. --- .../notebook/browser/view/renderers/cellWidgets.ts | 1 + .../notebook/browser/view/renderers/codeCell.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/cellWidgets.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/cellWidgets.ts index 6ac79f0adb0..88c3cccfcb7 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/cellWidgets.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/cellWidgets.ts @@ -65,6 +65,7 @@ export class CellEditorStatusBar extends Disposable { ) { super(); this.statusBarContainer = DOM.append(container, $('.cell-statusbar-container')); + this.statusBarContainer.tabIndex = -1; const leftItemsContainer = DOM.append(this.statusBarContainer, $('.cell-status-left')); const rightItemsContainer = DOM.append(this.statusBarContainer, $('.cell-status-right')); this.cellRunStatusContainer = DOM.append(leftItemsContainer, $('.cell-run-status')); diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts index f6a890533eb..df89095469d 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/codeCell.ts @@ -204,7 +204,13 @@ export class CodeCell extends Disposable { })); // Focus Mode - const updateFocusMode = () => viewCell.focusMode = templateData.editor.hasWidgetFocus() ? CellFocusMode.Editor : CellFocusMode.Container; + const updateFocusMode = () => { + viewCell.focusMode = + (templateData.editor.hasWidgetFocus() || (document.activeElement && this.templateData.statusBar.statusBarContainer.contains(document.activeElement))) + ? CellFocusMode.Editor + : CellFocusMode.Container; + }; + this._register(templateData.editor.onDidFocusEditorWidget(() => { updateFocusMode(); })); @@ -212,7 +218,7 @@ export class CodeCell extends Disposable { // this is for a special case: // users click the status bar empty space, which we will then focus the editor // so we don't want to update the focus state too eagerly - if (document.activeElement?.contains(this.templateData.container)) { + if (document.activeElement && this.templateData.statusBar.statusBarContainer.contains(document.activeElement)) { setTimeout(() => { updateFocusMode(); }, 300);