diff --git a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts index fca82bf3247c796a18df8b7bf822e3addd2ccd07..7dc37dd9fa138f75822936ff26e21da21d96a964 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadWebview.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadWebview.ts @@ -204,7 +204,6 @@ class WebviewEditor extends BaseWebviewEditor { enableWrappedPostMessage: true }; this.webview.contents = input.html; - this.webview.style(this.themeService.getTheme()); } private get webview(): Webview { @@ -214,6 +213,7 @@ class WebviewEditor extends BaseWebviewEditor { this._webview = new Webview( this.webviewContent, this._partService.getContainer(Parts.EDITOR_PART), + this.themeService, this._environmentService, this._contextService, this._contextViewService, @@ -223,17 +223,9 @@ class WebviewEditor extends BaseWebviewEditor { enableWrappedPostMessage: true }, false); - this.webview.style(this.themeService.getTheme()); this._webview.onDidClickLink(this.onDidClickLink, this, this._contentDisposables); - - this.themeService.onThemeChange(theme => { - if (this._webview) { - this._webview.style(theme); - } - }, null, this._contentDisposables); - this._webview.onMessage(message => { if (this.input) { (this.input as WebviewInput).events.onMessage(message); diff --git a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts index 0e421122a64d42b3f371ea75e1ebf23430bc83df..706eb304befb3a89978cb91cc818f54e65ab21cc 100644 --- a/src/vs/workbench/parts/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/parts/extensions/browser/extensionEditor.ts @@ -421,11 +421,9 @@ export class ExtensionEditor extends BaseEditor { .then(body => { const allowedBadgeProviders = this.extensionsWorkbenchService.allowedBadgeProviders; const webViewOptions = allowedBadgeProviders.length > 0 ? { allowScripts: false, allowSvgs: false, svgWhiteList: allowedBadgeProviders } : {}; - this.activeWebview = new Webview(this.content, this.partService.getContainer(Parts.EDITOR_PART), this.environmentService, this.contextService, this.contextViewService, this.contextKey, this.findInputFocusContextKey, webViewOptions, false); + this.activeWebview = new Webview(this.content, this.partService.getContainer(Parts.EDITOR_PART), this.themeService, this.environmentService, this.contextService, this.contextViewService, this.contextKey, this.findInputFocusContextKey, webViewOptions, false); const removeLayoutParticipant = arrays.insert(this.layoutParticipants, this.activeWebview); this.contentDisposables.push(toDisposable(removeLayoutParticipant)); - - this.activeWebview.style(this.themeService.getTheme()); this.activeWebview.contents = body; this.activeWebview.onDidClickLink(link => { @@ -434,7 +432,6 @@ export class ExtensionEditor extends BaseEditor { this.openerService.open(link); } }, null, this.contentDisposables); - this.themeService.onThemeChange(theme => this.activeWebview.style(theme), null, this.contentDisposables); this.contentDisposables.push(this.activeWebview); }) .then(null, () => { diff --git a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts index fc69a1d23d8fe73595be476e56acaaf5157dd6f4..bc9904993a56c92f1c4aee66a690eb3deca7604b 100644 --- a/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts +++ b/src/vs/workbench/parts/html/browser/htmlPreviewPart.ts @@ -91,6 +91,7 @@ export class HtmlPreviewPart extends WebviewEditor { this._webview = new Webview( this.content, this.partService.getContainer(Parts.EDITOR_PART), + this.themeService, this._environmentService, this._contextService, this._contextViewService, @@ -107,7 +108,6 @@ export class HtmlPreviewPart extends WebviewEditor { const resourceUri = this.input.getResource(); this.webview.baseUrl = resourceUri.toString(true); } - this._webview.style(this.themeService.getTheme()); this._webviewDisposables = [ this._webview, this._webview.onDidClickLink(uri => this.openerService.open(uri)), diff --git a/src/vs/workbench/parts/html/browser/webview.ts b/src/vs/workbench/parts/html/browser/webview.ts index 9080b542333ace756e6b18e7608e1ef0695c186e..0b406b797ed020b17970ef82f4b87743aca42bb7 100644 --- a/src/vs/workbench/parts/html/browser/webview.ts +++ b/src/vs/workbench/parts/html/browser/webview.ts @@ -10,7 +10,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import Event, { Emitter } from 'vs/base/common/event'; import { addDisposableListener, addClass } from 'vs/base/browser/dom'; import { editorBackground, editorForeground, textLinkForeground } from 'vs/platform/theme/common/colorRegistry'; -import { ITheme, LIGHT, DARK } from 'vs/platform/theme/common/themeService'; +import { ITheme, LIGHT, DARK, IThemeService } from 'vs/platform/theme/common/themeService'; import { WebviewFindWidget } from './webviewFindWidget'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextKey } from 'vs/platform/contextkey/common/contextkey'; @@ -38,6 +38,7 @@ export class Webview { constructor( private readonly parent: HTMLElement, private readonly _styleElement: Element, + private readonly _themeService: IThemeService, private readonly _environmentService: IEnvironmentService, private readonly _contextService: IWorkspaceContextService, private readonly _contextViewService: IContextViewService, @@ -178,6 +179,9 @@ export class Webview { this._webviewFindWidget = new WebviewFindWidget(this._contextViewService, this); this._disposables.push(this._webviewFindWidget); + this.style(this._themeService.getTheme()); + this._themeService.onThemeChange(this.style, this, this._disposables); + if (parent) { parent.appendChild(this._webviewFindWidget.getDomNode()); parent.appendChild(this._webview); @@ -257,7 +261,7 @@ export class Webview { }); } - style(theme: ITheme): void { + private style(theme: ITheme): void { const { fontFamily, fontWeight, fontSize } = window.getComputedStyle(this._styleElement); // TODO@theme avoid styleElement const styles = { diff --git a/src/vs/workbench/parts/html/browser/webviewEditor.ts b/src/vs/workbench/parts/html/browser/webviewEditor.ts index 4d268f9baeaa99bcffe762b49b20823a6e3325b6..c3f870f510c15906a090d2bca3d26879464cecd0 100644 --- a/src/vs/workbench/parts/html/browser/webviewEditor.ts +++ b/src/vs/workbench/parts/html/browser/webviewEditor.ts @@ -74,13 +74,6 @@ export abstract class WebviewEditor extends BaseWebviewEditor { } } - public updateStyles() { - super.updateStyles(); - if (this._webview) { - this._webview.style(this.themeService.getTheme()); - } - } - public get isWebviewEditor() { return true; } diff --git a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts index 5a76d993bacb238fe258dba9861a2f43f5308ec5..a4b84a8f94e23d844cae33d5feb0d119cb1399cc 100644 --- a/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts +++ b/src/vs/workbench/parts/update/electron-browser/releaseNotesEditor.ts @@ -91,6 +91,7 @@ export class ReleaseNotesEditor extends WebviewEditor { this._webview = new Webview( this.content, this.partService.getContainer(Parts.EDITOR_PART), + this.themeService, this.environmentService, this._contextService, this._contextViewService, @@ -105,7 +106,6 @@ export class ReleaseNotesEditor extends WebviewEditor { this._webview.initialScrollProgress = state.scrollYPercentage; } } - this._webview.style(this.themeService.getTheme()); this._webview.contents = body;