mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-01 22:12:26 +01:00
Use onEditorsChanged to fire webview onBecameActive and onBecameInactive
Fixes #43775 Fixes #43776
This commit is contained in:
@@ -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,15 +345,31 @@ 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user