Community
Participate
Working Groups
Writing an action that uses the CompareUI, I get the following exception. Caused by: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:2139) at org.eclipse.swt.SWT.error(SWT.java:2071) at org.eclipse.swt.widgets.Display.error(Display.java:529) at org.eclipse.swt.widgets.Display.checkDevice(Display.java:397) at org.eclipse.swt.widgets.Display.getSystemColor(Display.java:1048) at org.eclipse.compare.internal.ComparePreferencePage.initDefaults (ComparePreferencePage.java:95) at org.eclipse.compare.internal.CompareUIPlugin.initializeDefaultPreferences (CompareUIPlugin.java:127) at org.eclipse.ui.plugin.AbstractUIPlugin.initializeDefaultPluginPreferences (AbstractUIPlugin.java:624) at org.eclipse.core.runtime.Plugin.getPluginPreferences(Plugin.java:347) at org.eclipse.ui.plugin.AbstractUIPlugin$CompatibilityPreferenceStore.initialize (AbstractUIPlugin.java:180) at org.eclipse.ui.plugin.AbstractUIPlugin.getPreferenceStore (AbstractUIPlugin.java:561) at org.eclipse.compare.internal.CompareUIPlugin.initPreferenceStore (CompareUIPlugin.java:788) at org.eclipse.compare.internal.CompareUIPlugin.<init> (CompareUIPlugin.java:118) My action does not run in the display thread and uses Display.asyncExec() to open the CompareUI. However, the CompareUI component's load is triggered when the referencing class is loaded at that happens outside the UI thread. If I used Eclipse's compare actions before, thus triggering the load of the component, everything works as expected.
fixed and released on 20021223