schemeChangedOrSwitched must call myDispatcher.getMulticaster().globalSchemeChange

This commit is contained in:
Vladimir Krivosheev
2016-09-14 14:52:02 +02:00
parent 40612d424a
commit 306d705e18
3 changed files with 16 additions and 15 deletions
@@ -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());
@@ -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();
}
}
@@ -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);