diff --git a/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsManager.java b/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsManager.java index ca627889b898..906b7a3468e9 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsManager.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/editor/colors/EditorColorsManager.java @@ -35,6 +35,8 @@ public abstract class EditorColorsManager { public abstract @NotNull EditorColorsScheme getGlobalScheme(); + public abstract @Nullable EditorColorsScheme getActiveVisibleScheme(); + public abstract EditorColorsScheme getScheme(@NotNull String schemeName); public abstract boolean isDefaultScheme(EditorColorsScheme scheme); diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt index f1ab64477290..058e6523b756 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.kt @@ -527,7 +527,9 @@ class LafManagerImpl(private val coroutineScope: CoroutineScope) : LafManager(), private fun setLookAndFeelImpl(lookAndFeelInfo: UIThemeLookAndFeelInfo, installEditorScheme: Boolean) { val oldLaf = currentTheme - rememberSchemeForLaf(EditorColorsManager.getInstance().globalScheme) + EditorColorsManager.getInstance().activeVisibleScheme ?.let { + rememberSchemeForLaf(it) + } if (oldLaf !== lookAndFeelInfo && oldLaf != null) { oldLaf.dispose() diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.kt b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.kt index 376a3c30f075..703bf83d2c0a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.kt +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.kt @@ -374,12 +374,14 @@ class EditorColorsManagerImpl @NonInjectable constructor(schemeManagerFactory: S }.getOrLogException(LOG) } - override fun getGlobalScheme(): EditorColorsScheme { + override fun getGlobalScheme(): EditorColorsScheme = activeVisibleScheme ?: getDefaultScheme() + + override fun getActiveVisibleScheme(): EditorColorsScheme? { val scheme = schemeManager.activeScheme if (scheme is AbstractColorsScheme && !scheme.isReadOnly && !scheme.isVisible) { - return getDefaultScheme() + return null } - return scheme?.let { getEditableCopy(it) } ?: scheme ?: getDefaultScheme() + return scheme?.let { getEditableCopy(it) } ?: scheme } private fun getDefaultScheme(): EditorColorsScheme {