/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { isWindows, isMacintosh } from 'vs/base/common/platform'; import { systemPreferences } from 'electron'; import { IStateService } from 'vs/platform/state/common/state'; const DEFAULT_BG_LIGHT = '#FFFFFF'; const DEFAULT_BG_DARK = '#1E1E1E'; const DEFAULT_BG_HC_BLACK = '#000000'; const THEME_STORAGE_KEY = 'theme'; const THEME_BG_STORAGE_KEY = 'themeBackground'; export function storeBackgroundColor(stateService: IStateService, data: { baseTheme: string, background: string }): void { stateService.setItem(THEME_STORAGE_KEY, data.baseTheme); stateService.setItem(THEME_BG_STORAGE_KEY, data.background); } export function getBackgroundColor(stateService: IStateService): string { if (isWindows && systemPreferences.isInvertedColorScheme()) { return DEFAULT_BG_HC_BLACK; } let background = stateService.getItem(THEME_BG_STORAGE_KEY, null); if (!background) { let baseTheme: string; if (isWindows && systemPreferences.isInvertedColorScheme()) { baseTheme = 'hc-black'; } else { baseTheme = stateService.getItem(THEME_STORAGE_KEY, 'vs-dark').split(' ')[0]; } background = (baseTheme === 'hc-black') ? DEFAULT_BG_HC_BLACK : (baseTheme === 'vs' ? DEFAULT_BG_LIGHT : DEFAULT_BG_DARK); } if (isMacintosh && background.toUpperCase() === DEFAULT_BG_DARK) { background = '#171717'; // https://github.com/electron/electron/issues/5150 } return background; }