提交 70b41f0b 编写于 作者: M Matt Bierner

Use onEditorsChanged to fire webview onBecameActive and onBecameInactive

Fixes #43775
Fixes #43776
上级 ae15d09c
......@@ -246,18 +246,6 @@ class WebviewEditor extends BaseWebviewEditor {
}
}, null, this._contentDisposables);
this._webview.onFocus(() => {
if (this.input) {
(this.input as WebviewInput).events.onFocus();
}
}, this, this._contentDisposables);
this._webview.onBlur(() => {
if (this.input) {
(this.input as WebviewInput).events.onBlur();
}
}, this, this._contentDisposables);
this._contentDisposables.push(this._webview);
this._contentDisposables.push(toDisposable(() => this._webview = null));
}
......@@ -283,7 +271,7 @@ export class MainThreadWebview implements MainThreadWebviewShape {
private readonly _proxy: ExtHostWebviewsShape;
private readonly _webviews = new Map<number, WebviewInput>();
// private _activeWebview: WebviewInput | undefined;
private _activeWebview: WebviewInput | undefined = undefined;
constructor(
context: IExtHostContext,
......@@ -293,7 +281,7 @@ export class MainThreadWebview implements MainThreadWebviewShape {
) {
this._proxy = context.getProxy(ExtHostContext.ExtHostWebviews);
_editorGroupService.onEditorsChanged(() => this.onEditorsChanged, null, this._toDispose);
_editorGroupService.onEditorsChanged(this.onEditorsChanged, this, this._toDispose);
}
dispose(): void {
......@@ -357,13 +345,29 @@ export class MainThreadWebview implements MainThreadWebviewShape {
private onEditorsChanged() {
const activeEditor = this._editorService.getActiveEditor();
let newActiveWebview: WebviewInput | undefined = undefined;
if (activeEditor.input instanceof WebviewInput) {
// this._activeWebview = activeEditor.input;
for (const handle of map.keys(this._webviews)) {
const input = this._webviews.get(handle);
if (input.matches(activeEditor.input)) {
newActiveWebview = input;
break;
}
}
}
if (newActiveWebview) {
if (!this._activeWebview || !newActiveWebview.matches(this._activeWebview)) {
if (this._activeWebview) {
this._activeWebview.events.onBlur();
}
newActiveWebview.events.onFocus();
this._activeWebview = newActiveWebview;
}
} else {
if (this._activeWebview) {
this._activeWebview.events.onBlur();
this._activeWebview = undefined;
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册