diff options
author | Markus Keller | 2015-04-10 15:06:07 +0000 |
---|---|---|
committer | Markus Keller | 2015-04-10 15:06:07 +0000 |
commit | e1874b7906bcf1b0f6ce3e77b1648052831f8929 (patch) | |
tree | 9b3ca85e316240efdf144daea00d3af23b32ee07 /org.eclipse.debug.ui | |
parent | 04dd5241860b779818f0b3d2f268c4a81c13ccb4 (diff) | |
download | eclipse.platform.debug-e1874b7906bcf1b0f6ce3e77b1648052831f8929.tar.gz eclipse.platform.debug-e1874b7906bcf1b0f6ce3e77b1648052831f8929.tar.xz eclipse.platform.debug-e1874b7906bcf1b0f6ce3e77b1648052831f8929.zip |
Bug 462274: Invalid thread access from DebugUIPreferenceInitializer
Diffstat (limited to 'org.eclipse.debug.ui')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java index bd23a5443..771fd7945 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java @@ -20,6 +20,7 @@ import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; public class DebugUIPreferenceInitializer extends AbstractPreferenceInitializer { @@ -203,22 +204,33 @@ public class DebugUIPreferenceInitializer extends AbstractPreferenceInitializer } } - public static void setThemeBasedPreferences(IPreferenceStore store, boolean fireEvent) { - ColorRegistry registry= null; - if (PlatformUI.isWorkbenchRunning()) - registry= PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry(); - - setDefault(store, - IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR, - findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_BACKGROUND, new RGB(255, 255, 255)), fireEvent); - setDefault(store, - IDebugPreferenceConstants.CONSOLE_SYS_OUT_COLOR, - findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_STD_OUT, new RGB(0, 0, 0)), fireEvent); - setDefault(store, - IDebugPreferenceConstants.CONSOLE_SYS_IN_COLOR, - findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_STD_IN, new RGB(0, 200, 125)), fireEvent); - setDefault(store, - IDebugPreferenceConstants.CONSOLE_SYS_ERR_COLOR, - findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_STD_ERR, new RGB(255, 0, 0)), fireEvent); + public static void setThemeBasedPreferences(final IPreferenceStore store, final boolean fireEvent) { + Display display= PlatformUI.getWorkbench().getDisplay(); + Runnable runnable= new Runnable() { + @Override + public void run() { + ColorRegistry registry= null; + if (PlatformUI.isWorkbenchRunning()) { + registry= PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry(); + } + setDefault(store, + IDebugPreferenceConstants.CONSOLE_BAKGROUND_COLOR, + findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_BACKGROUND, new RGB(255, 255, 255)), fireEvent); + setDefault(store, + IDebugPreferenceConstants.CONSOLE_SYS_OUT_COLOR, + findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_STD_OUT, new RGB(0, 0, 0)), fireEvent); + setDefault(store, + IDebugPreferenceConstants.CONSOLE_SYS_IN_COLOR, + findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_STD_IN, new RGB(0, 200, 125)), fireEvent); + setDefault(store, + IDebugPreferenceConstants.CONSOLE_SYS_ERR_COLOR, + findRGB(registry, IInternalDebugUIConstants.THEME_CONSOLE_COLOR_STD_ERR, new RGB(255, 0, 0)), fireEvent); + } + }; + if (display.getThread() == Thread.currentThread()) { + runnable.run(); + } else { + display.asyncExec(runnable); + } } } |