diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java index cf18432f18c6..f413476106f8 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/ColorAndFontOptions.java @@ -274,7 +274,7 @@ public class ColorAndFontOptions extends SearchableConfigurable.Parent.Abstract boolean refreshEditors = activeSchemeModified && schemeManager.getCurrentScheme() == activeOriginalScheme; schemeManager.setSchemes(includingInvisible(result, schemeManager), activeOriginalScheme); if (refreshEditors) { - EditorColorsManagerImpl.schemeChangedOrSwitched(); + ((EditorColorsManagerImpl)EditorColorsManager.getInstance()).schemeChangedOrSwitched(null); } final boolean isEditorThemeDark = ColorUtil.isDark(activeOriginalScheme.getDefaultBackground()); diff --git a/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java b/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java index ffbe3cb76e98..01f71372315f 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/AppearanceConfigurable.java @@ -20,11 +20,11 @@ import com.intellij.ide.ui.laf.darcula.DarculaInstaller; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceKt; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.colors.ex.DefaultColorSchemesManager; import com.intellij.openapi.editor.colors.impl.EditorColorsManagerImpl; -import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.openapi.options.BaseConfigurable; import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.ui.ComboBox; @@ -289,10 +289,11 @@ public class AppearanceConfigurable extends BaseConfigurable implements Searchab } myComponent.updateCombo(); - EditorUtil.reinitSettings(); - if (updateEditorScheme) { - EditorColorsManagerImpl.schemeChangedOrSwitched(); + ((EditorColorsManagerImpl)EditorColorsManager.getInstance()).schemeChangedOrSwitched(null); + } + else { + EditorFactory.getInstance().refreshAllEditors(); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java index 57a57b309d23..5cc228518a08 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java @@ -109,9 +109,7 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers @Override public void onCurrentSchemeSwitched(@Nullable EditorColorsScheme oldScheme, @Nullable EditorColorsScheme newScheme) { LafManager.getInstance().updateUI(); - schemeChangedOrSwitched(); - - fireChanges(newScheme); + schemeChangedOrSwitched(newScheme); } @NotNull @@ -173,15 +171,22 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers } } + @Deprecated public static void schemeChangedOrSwitched() { + EditorColorsManagerImpl manager = (EditorColorsManagerImpl)getInstance(); + manager.schemeChangedOrSwitched(manager.getGlobalScheme()); + } + + public void schemeChangedOrSwitched(@Nullable EditorColorsScheme newScheme) { EditorFactory.getInstance().refreshAllEditors(); // refreshAllEditors is not enough - for example, change "Errors and warnings -> Typo" from green (default) to red for (Project project : ProjectManager.getInstance().getOpenProjects()) { DaemonCodeAnalyzer.getInstance(project).restart(); } + // we need to push events to components that use editor font, e.g. HTML editor panes - EditorColorsManagerImpl instance = (EditorColorsManagerImpl)getInstance(); - instance.myTreeDispatcher.getMulticaster().globalSchemeChange(instance.getGlobalScheme()); + myDispatcher.getMulticaster().globalSchemeChange(newScheme); + myTreeDispatcher.getMulticaster().globalSchemeChange(newScheme); } static class ReadOnlyColorsSchemeImpl extends EditorColorsSchemeImpl implements ReadOnlyColorsScheme { @@ -301,11 +306,6 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers return mySchemeManager.findSchemeByName(schemeName); } - private void fireChanges(EditorColorsScheme scheme) { - myDispatcher.getMulticaster().globalSchemeChange(scheme); - myTreeDispatcher.getMulticaster().globalSchemeChange(scheme); - } - @Override public void addEditorColorsListener(@NotNull EditorColorsListener listener) { myDispatcher.addListener(listener);