diff options
| author | Daniel Rolka | 2014-10-15 11:56:46 +0000 |
|---|---|---|
| committer | Daniel Rolka | 2014-10-15 12:09:21 +0000 |
| commit | b431db0746b124993da998f5e8fbe1c6dcf1dec1 (patch) | |
| tree | 7acb3d0340b47df95e312db268e6b92bb5c08056 | |
| parent | e7c315e2708fbf6c81f0f61d43162109c5aff1f9 (diff) | |
| download | eclipse.platform.ui-b431db0746b124993da998f5e8fbe1c6dcf1dec1.tar.gz eclipse.platform.ui-b431db0746b124993da998f5e8fbe1c6dcf1dec1.tar.xz eclipse.platform.ui-b431db0746b124993da998f5e8fbe1c6dcf1dec1.zip | |
Bug 435512 - [CSS] Override the preferences customized by the user with
the proper CSS values
Change-Id: Ic8ed8b380fb26caa5e9a8c9fe6d9d886482ec6ad
Signed-off-by: Daniel Rolka <daniel.rolka@pl.ibm.com>
3 files changed, 21 insertions, 2 deletions
diff --git a/bundles/org.eclipse.e4.ui.css.swt.theme/src/org/eclipse/e4/ui/css/swt/internal/theme/ThemeEngine.java b/bundles/org.eclipse.e4.ui.css.swt.theme/src/org/eclipse/e4/ui/css/swt/internal/theme/ThemeEngine.java index 99765533e8b..c0d4901a7a2 100644 --- a/bundles/org.eclipse.e4.ui.css.swt.theme/src/org/eclipse/e4/ui/css/swt/internal/theme/ThemeEngine.java +++ b/bundles/org.eclipse.e4.ui.css.swt.theme/src/org/eclipse/e4/ui/css/swt/internal/theme/ThemeEngine.java @@ -44,6 +44,7 @@ import org.eclipse.e4.ui.css.core.engine.CSSEngine; import org.eclipse.e4.ui.css.core.util.impl.resources.FileResourcesLocatorImpl; import org.eclipse.e4.ui.css.core.util.impl.resources.OSGiResourceLocator; import org.eclipse.e4.ui.css.core.util.resources.IResourceLocator; +import org.eclipse.e4.ui.css.swt.helpers.EclipsePreferencesHelper; import org.eclipse.e4.ui.css.swt.theme.ITheme; import org.eclipse.e4.ui.css.swt.theme.IThemeEngine; import org.eclipse.osgi.service.datalocation.Location; @@ -453,6 +454,9 @@ public class ThemeEngine implements IThemeEngine { if (restore) { IEclipsePreferences pref = getPreferences(); + EclipsePreferencesHelper.setPreviousThemeId(pref.get(THEMEID_KEY, null)); + EclipsePreferencesHelper.setCurrentThemeId(theme.getId()); + pref.put(THEMEID_KEY, theme.getId()); try { pref.flush(); diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java index e1023a64dd1..b8bbaad9459 100644 --- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java +++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/helpers/EclipsePreferencesHelper.java @@ -27,6 +27,10 @@ public class EclipsePreferencesHelper { private static IPreferenceChangeListener preferenceChangeListener; + private static String previousThemeId; + + private static String currentThemeId; + public static void appendOverriddenPropertyName( IEclipsePreferences preferences, String name) { String value = preferences.get(PROPS_OVERRIDDEN_BY_CSS_PROP, SEPARATOR); @@ -87,6 +91,18 @@ public class EclipsePreferencesHelper { overriddenByCSS.toString()); } + public static void setPreviousThemeId(String themeId) { + previousThemeId = themeId; + } + + public static void setCurrentThemeId(String themeId) { + currentThemeId = themeId; + } + + public static boolean isThemeChanged() { + return currentThemeId != null && !currentThemeId.equals(previousThemeId); + } + public static class PreferenceOverriddenByCssChangeListener implements IPreferenceChangeListener { @Override diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java index faee09356fb..d48c64c5579 100644 --- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java +++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/preference/EclipsePreferencesHandler.java @@ -67,8 +67,7 @@ public class EclipsePreferencesHandler implements ICSSPropertyHandler { protected void overrideProperty(IEclipsePreferences preferences, String name, String value) { - // when pref is not already set, either by the user or by the CSS - if (preferences.get(name, null) == null) { + if (preferences.get(name, null) == null || EclipsePreferencesHelper.isThemeChanged()) { preferences.put(name, value); EclipsePreferencesHelper.appendOverriddenPropertyName(preferences, name); |
