diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts index 3c283595c58..b36b0f54318 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts @@ -178,7 +178,9 @@ export class Renderer implements IPagedRenderer { const updateEnablement = async () => { let isDisabled = false; - if (extension.local && !isLanguagePackExtension(extension.local.manifest)) { + if (extension.state === ExtensionState.Uninstalled) { + isDisabled = !(await this.extensionsWorkbenchService.canInstall(extension)); + } else if (extension.local && !isLanguagePackExtension(extension.local.manifest)) { const runningExtensions = await this.extensionService.getExtensions(); const runningExtension = runningExtensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, extension.identifier))[0]; isDisabled = !(runningExtension && extension.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension))); diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts b/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts index f9a02bf0243..d26f1fa4f3d 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsViewer.ts @@ -22,7 +22,7 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { isNonEmptyArray } from 'vs/base/common/arrays'; import { IColorMapping } from 'vs/platform/theme/common/styler'; import { Delegate, Renderer } from 'vs/workbench/contrib/extensions/browser/extensionsList'; -import { listFocusForeground, listFocusBackground } from 'vs/platform/theme/common/colorRegistry'; +import { listFocusForeground, listFocusBackground, foreground, editorBackground } from 'vs/platform/theme/common/colorRegistry'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -349,4 +349,12 @@ registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) = if (focusForeground) { collector.addRule(`.extensions-grid-view .extension-container:focus { color: ${focusForeground}; }`); } + const foregroundColor = theme.getColor(foreground); + const editorBackgroundColor = theme.getColor(editorBackground); + if (foregroundColor && editorBackgroundColor) { + const authorForeground = foregroundColor.transparent(.9).makeOpaque(editorBackgroundColor); + collector.addRule(`.extensions-grid-view .extension-container:not(.disabled) .author { color: ${authorForeground}; }`); + const disabledExtensionForeground = foregroundColor.transparent(.5).makeOpaque(editorBackgroundColor); + collector.addRule(`.extensions-grid-view .extension-container.disabled { color: ${disabledExtensionForeground}; }`); + } }); diff --git a/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css b/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css index d15a4787bc9..866b8060302 100644 --- a/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css +++ b/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css @@ -658,6 +658,13 @@ text-decoration: underline; } +.monaco-workbench.vs .extension-editor .extensions-grid-view > .extension-container.disabled > .extension-list-item > .icon-container > .icon, +.monaco-workbench.vs-dark .extension-editor .extensions-grid-view > .extension-container.disabled > .extension-list-item > .icon-container > .icon, +.monaco-workbench.vs .extension-editor .extensions-grid-view > .extension-container.disabled > .extension-list-item > .details > .header-container .codicon, +.monaco-workbench.vs-dark .extension-editor .extensions-grid-view > .extension-container.disabled > .extension-list-item > .details > .header-container .codicon { + opacity: 0.5; +} + .extension-editor > .body > .content .runtime-status .no-status-message, .extension-editor > .body > .content .runtime-status .activation-message { font-size: medium;