diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java index 0a4aeea18117d9a58f48f08957b0030e2567f9e0..d85973d59ec7bfdec30285a0da34c5705c1e4e5b 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/AbstractPresentation.java @@ -57,6 +57,7 @@ public abstract class AbstractPresentation implements IResultSetPresentation, IS private final List selectionChangedListenerList = new ArrayList<>(); protected IThemeManager themeManager; private IPropertyChangeListener themeChangeListener; + private long lastThemeUpdateTime; @Override @NotNull @@ -84,8 +85,15 @@ public abstract class AbstractPresentation implements IResultSetPresentation, IS this.themeManager = controller.getSite().getWorkbenchWindow().getWorkbench().getThemeManager(); this.themeChangeListener = event -> { - if (event.getProperty().startsWith(ThemeConstants.RESULTS_PROP_PREFIX)) { - applyThemeSettings(); + if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME) || + event.getProperty().startsWith(ThemeConstants.RESULTS_PROP_PREFIX)) + { + if (lastThemeUpdateTime > 0 && System.currentTimeMillis() - lastThemeUpdateTime < 500) { + // Do not update too often (theme change may trigger this hundreds of times) + return; + } + lastThemeUpdateTime = System.currentTimeMillis(); + UIUtils.asyncExec(this::applyThemeSettings); } }; this.themeManager.addPropertyChangeListener(themeChangeListener); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java index 44f82a315be94e59662461c613bceed4826a960d..a62d6d183b0f186bfcdd7debbc92f0060afa39b3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java @@ -123,9 +123,11 @@ public abstract class SQLEditorBase extends BaseTextEditor implements IErrorVisu return; } lastUpdateTime = System.currentTimeMillis(); - reloadSyntaxRules(); - // Reconfigure to let comments/strings colors to take effect - getSourceViewer().configure(getSourceViewerConfiguration()); + UIUtils.asyncExec(() -> { + reloadSyntaxRules(); + // Reconfigure to let comments/strings colors to take effect + getSourceViewer().configure(getSourceViewerConfiguration()); + }); } } };