From 71d332b4645da2c7cf91ea54eaebc4f792ac556d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Wed, 18 Oct 2017 10:36:47 +0200 Subject: [PATCH] deco - remove opacity, use colors only, remove provider label from proposed api --- extensions/git/src/decorationProvider.ts | 4 ++-- extensions/git/src/repository.ts | 2 -- src/vs/vscode.proposed.d.ts | 3 +-- .../api/electron-browser/mainThreadDecorations.ts | 7 +++---- src/vs/workbench/api/node/extHost.api.impl.ts | 4 ++-- src/vs/workbench/api/node/extHost.protocol.ts | 2 +- src/vs/workbench/api/node/extHostDecorations.ts | 2 +- .../services/decorations/browser/decorations.ts | 1 - .../decorations/browser/decorationsService.ts | 12 ++++++------ 9 files changed, 16 insertions(+), 21 deletions(-) diff --git a/extensions/git/src/decorationProvider.ts b/extensions/git/src/decorationProvider.ts index 19ef25fb811..44789b518b5 100644 --- a/extensions/git/src/decorationProvider.ts +++ b/extensions/git/src/decorationProvider.ts @@ -21,7 +21,7 @@ class GitIgnoreDecorationProvider implements DecorationProvider { constructor(private repository: Repository) { this.disposables.push( - window.registerDecorationProvider(this, '.gitignore'), + window.registerDecorationProvider(this), filterEvent(workspace.onDidSaveTextDocument, e => e.fileName.endsWith('.gitignore'))(_ => this._onDidChangeDecorations.fire()) //todo@joh -> events when the ignore status actually changes, not only when the file changes ); @@ -72,7 +72,7 @@ class GitDecorationProvider implements DecorationProvider { constructor(private repository: Repository) { this.disposables.push( - window.registerDecorationProvider(this, repository.root), + window.registerDecorationProvider(this), repository.onDidRunOperation(this.onDidRunOperation, this) ); } diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 74cd6c48bfd..ccd92bf005f 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -183,8 +183,6 @@ export class Resource implements SourceControlResourceState { get resourceDecoration(): DecorationData | undefined { const title = this.tooltip; switch (this.type) { - case Status.IGNORED: - return { priority: 3, title, opacity: 0.75 }; case Status.UNTRACKED: return { priority: 1, title, abbreviation: localize('untracked, short', "U"), bubble: true, color: new ThemeColor('git.color.untracked') }; case Status.INDEX_MODIFIED: diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 63ebd06f1b4..3ff70ed91db 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -178,7 +178,6 @@ declare module 'vscode' { bubble?: boolean; abbreviation?: string; color?: ThemeColor; - opacity?: number; } export interface DecorationProvider { @@ -187,7 +186,7 @@ declare module 'vscode' { } export namespace window { - export function registerDecorationProvider(provider: DecorationProvider, label: string): Disposable; + export function registerDecorationProvider(provider: DecorationProvider): Disposable; } //#endregion diff --git a/src/vs/workbench/api/electron-browser/mainThreadDecorations.ts b/src/vs/workbench/api/electron-browser/mainThreadDecorations.ts index b2ae08b829c..7ac2b8c92ef 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDecorations.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDecorations.ts @@ -29,23 +29,22 @@ export class MainThreadDecorations implements MainThreadDecorationsShape { this._provider.clear(); } - $registerDecorationProvider(handle: number, label: string): void { + $registerDecorationProvider(handle: number): void { let emitter = new Emitter(); let registration = this._decorationsService.registerDecorationsProvider({ - label, + label: 'extension-provider', onDidChange: emitter.event, provideDecorations: (uri) => { return this._proxy.$providerDecorations(handle, uri).then(data => { if (!data) { return undefined; } - const [weight, bubble, title, letter, opacity, themeColor] = data; + const [weight, bubble, title, letter, themeColor] = data; return { weight: weight || 0, bubble: bubble || false, title, letter, - opacity, color: themeColor && themeColor.id }; }); diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 73c966c463e..128eb4a907e 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -378,8 +378,8 @@ export function createApiFactory( sampleFunction: proposedApiFunction(extension, () => { return extHostMessageService.showMessage(extension, Severity.Info, 'Hello Proposed Api!', {}, []); }), - registerDecorationProvider: proposedApiFunction(extension, (provider: vscode.DecorationProvider, label: string) => { - return extHostDecorations.registerDecorationProvider(provider, label); + registerDecorationProvider: proposedApiFunction(extension, (provider: vscode.DecorationProvider) => { + return extHostDecorations.registerDecorationProvider(provider, extension.id); }) }; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 17980ed5b35..2071ea617db 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -602,7 +602,7 @@ export interface ExtHostDebugServiceShape { } -export type DecorationData = [number, boolean, string, string, number, ThemeColor]; +export type DecorationData = [number, boolean, string, string, ThemeColor]; export interface ExtHostDecorationsShape { $providerDecorations(handle: number, uri: URI): TPromise; diff --git a/src/vs/workbench/api/node/extHostDecorations.ts b/src/vs/workbench/api/node/extHostDecorations.ts index 971896c96dd..e327dbe4995 100644 --- a/src/vs/workbench/api/node/extHostDecorations.ts +++ b/src/vs/workbench/api/node/extHostDecorations.ts @@ -41,7 +41,7 @@ export class ExtHostDecorations implements ExtHostDecorationsShape { $providerDecorations(handle: number, uri: URI): TPromise { const provider = this._provider.get(handle); return asWinJsPromise(token => provider.provideDecoration(uri, token)).then(data => { - return data && [data.priority, data.bubble, data.title, data.abbreviation, data.opacity, data.color]; + return data && [data.priority, data.bubble, data.title, data.abbreviation, data.color]; }); } } diff --git a/src/vs/workbench/services/decorations/browser/decorations.ts b/src/vs/workbench/services/decorations/browser/decorations.ts index 6a5b7993205..6356737cb2d 100644 --- a/src/vs/workbench/services/decorations/browser/decorations.ts +++ b/src/vs/workbench/services/decorations/browser/decorations.ts @@ -15,7 +15,6 @@ export const IDecorationsService = createDecorator('IFileDe export interface IDecorationData { readonly weight?: number; readonly color?: ColorIdentifier; - readonly opacity?: number; readonly letter?: string; readonly title?: string; readonly bubble?: boolean; diff --git a/src/vs/workbench/services/decorations/browser/decorationsService.ts b/src/vs/workbench/services/decorations/browser/decorationsService.ts index 63992705c3d..cd004e68f20 100644 --- a/src/vs/workbench/services/decorations/browser/decorationsService.ts +++ b/src/vs/workbench/services/decorations/browser/decorationsService.ts @@ -23,8 +23,8 @@ class DecorationRule { if (Array.isArray(data)) { return data.map(DecorationRule.keyOf).join(','); } else { - const { color, opacity, letter } = data; - return `${color}/${opacity}/${letter}`; + const { color, letter } = data; + return `${color}/${letter}`; } } @@ -49,9 +49,9 @@ class DecorationRule { } private _appendForOne(data: IDecorationData, element: HTMLStyleElement, theme: ITheme): void { - const { color, opacity, letter } = data; + const { color, letter } = data; // label - createCSSRule(`.${this.labelClassName}`, `color: ${theme.getColor(color) || 'inherit'}; opacity: ${opacity || 1};`, element); + createCSSRule(`.${this.labelClassName}`, `color: ${theme.getColor(color) || 'inherit'};`, element); createCSSRule(`.focused .selected .${this.labelClassName}`, `color: inherit; opacity: inherit;`, element); // badge if (letter) { @@ -62,8 +62,8 @@ class DecorationRule { private _appendForMany(data: IDecorationData[], element: HTMLStyleElement, theme: ITheme): void { // label - const { color, opacity } = data[0]; - createCSSRule(`.${this.labelClassName}`, `color: ${theme.getColor(color) || 'inherit'}; opacity: ${opacity || 1};`, element); + const { color } = data[0]; + createCSSRule(`.${this.labelClassName}`, `color: ${theme.getColor(color) || 'inherit'};`, element); createCSSRule(`.focused .selected .${this.labelClassName}`, `color: inherit; opacity: inherit;`, element); // badge