From d7f92d9f140e92b3dcb1fd17efbce3e2bb8a8bea Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 18 Nov 2021 22:43:13 +0100 Subject: [PATCH] Fixes microsoft/monaco-editor#2339: Listen to `focusin` and `focusout` and refresh the dom focus tracker state --- src/vs/base/browser/dom.ts | 2 +- src/vs/editor/browser/widget/codeEditorWidget.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index de0524c037e..3a6cc1c87ad 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -908,7 +908,7 @@ export const EventHelper = { export interface IFocusTracker extends Disposable { onDidFocus: Event; onDidBlur: Event; - refreshState?(): void; + refreshState(): void; } export function saveParentsScrollTop(node: Element): number[] { diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index acb8fb98c0c..be2140eea29 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -2007,6 +2007,12 @@ class CodeEditorWidgetFocusTracker extends Disposable { this._hasFocus = false; this._onChange.fire(undefined); })); + this._register(dom.addDisposableListener(domElement, 'focusin', () => { + this._domFocusTracker.refreshState(); + })); + this._register(dom.addDisposableListener(domElement, 'focusout', () => { + this._domFocusTracker.refreshState(); + })); } public hasFocus(): boolean {