mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 21:09:43 +00:00
Tweak WebviewPanelOnDidChangeViewStateEvent to only provide a webview panel
Expose a webview panel's view state as properties. Make WebviewPanelOnDidChangeViewStateEvent only fire an event with the webview who's state changed
This commit is contained in:
parent
23113a4443
commit
e16ec3c1ff
|
@ -147,13 +147,13 @@ export class MarkdownPreviewManager implements vscode.WebviewPanelSerializer {
|
|||
}
|
||||
});
|
||||
|
||||
preview.onDidChangeViewState(({ active }) => {
|
||||
preview.onDidChangeViewState(({ webviewPanel }) => {
|
||||
disposeAll(this.previews.filter(otherPreview => preview !== otherPreview && preview!.matches(otherPreview)));
|
||||
|
||||
vscode.commands.executeCommand('setContext', MarkdownPreviewManager.markdownPreviewActiveContextKey,
|
||||
active);
|
||||
webviewPanel.visible);
|
||||
|
||||
this.activePreview = active ? preview : undefined;
|
||||
this.activePreview = webviewPanel.visible ? preview : undefined;
|
||||
});
|
||||
|
||||
return preview;
|
||||
|
|
14
src/vs/vscode.proposed.d.ts
vendored
14
src/vs/vscode.proposed.d.ts
vendored
|
@ -691,6 +691,11 @@ declare module 'vscode' {
|
|||
*/
|
||||
readonly viewColumn?: ViewColumn;
|
||||
|
||||
/**
|
||||
* Is the panel current visible?
|
||||
*/
|
||||
readonly visible: boolean;
|
||||
|
||||
/**
|
||||
* Fired when the panel's view state changes.
|
||||
*/
|
||||
|
@ -724,9 +729,14 @@ declare module 'vscode' {
|
|||
dispose(): any;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event fired when a webview panel's view state changes.
|
||||
*/
|
||||
export interface WebviewPanelOnDidChangeViewStateEvent {
|
||||
readonly viewColumn: ViewColumn;
|
||||
readonly active: boolean;
|
||||
/**
|
||||
* Webview panel who's view state changed.
|
||||
*/
|
||||
readonly webviewPanel: WebviewPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -97,7 +97,7 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel {
|
|||
private readonly _proxy: MainThreadWebviewsShape;
|
||||
private _isDisposed: boolean = false;
|
||||
private _viewColumn: vscode.ViewColumn;
|
||||
private _active: boolean;
|
||||
private _visible: boolean;
|
||||
|
||||
public readonly onDisposeEmitter = new Emitter<void>();
|
||||
public readonly onDidDispose: Event<void> = this.onDisposeEmitter.event;
|
||||
|
@ -155,9 +155,9 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel {
|
|||
return this._viewColumn;
|
||||
}
|
||||
|
||||
get active(): boolean {
|
||||
get visible(): boolean {
|
||||
this.assertNotDisposed();
|
||||
return this._active;
|
||||
return this._visible;
|
||||
}
|
||||
|
||||
set viewColumn(value: vscode.ViewColumn) {
|
||||
|
@ -167,7 +167,7 @@ export class ExtHostWebviewPanel implements vscode.WebviewPanel {
|
|||
|
||||
set active(value: boolean) {
|
||||
this.assertNotDisposed();
|
||||
this._active = value;
|
||||
this._visible = value;
|
||||
}
|
||||
|
||||
public postMessage(message: any): Thenable<boolean> {
|
||||
|
@ -247,7 +247,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
|
|||
if (panel.active !== active || panel.viewColumn !== viewColumn) {
|
||||
panel.active = active;
|
||||
panel.viewColumn = viewColumn;
|
||||
panel.onDidChangeViewStateEmitter.fire({ active, viewColumn });
|
||||
panel.onDidChangeViewStateEmitter.fire({ webviewPanel: panel });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue