Better handle cases where webview view state in api can get out sync with real view state

Fixes #79492

Simplifies view state management logic in `mainThreadWebviews` to:

* Not be stateful
* Handle cases where a webview's view state changes through a more complex means (see #79492 for an example of this)
This commit is contained in:
Matt Bierner
2019-08-20 15:52:56 -07:00
parent 646d4ddb75
commit 5e57212107
2 changed files with 30 additions and 60 deletions

View File

@@ -89,11 +89,12 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel {
private readonly _options: vscode.WebviewPanelOptions;
private readonly _webview: ExtHostWebview;
private _isDisposed: boolean = false;
private _viewColumn: vscode.ViewColumn | undefined;
private _visible: boolean = true;
private _active: boolean = true;
_isDisposed: boolean = false;
readonly _onDisposeEmitter = new Emitter<void>();
public readonly onDidDispose: Event<void> = this._onDisposeEmitter.event;
@@ -302,7 +303,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
newState: WebviewPanelViewState
): void {
const panel = this.getWebviewPanel(handle);
if (!panel) {
if (!panel || panel._isDisposed) {
return;
}