diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java index 458aadffe7e..3862863bef5 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/buildconsole/BuildConsolePage.java @@ -114,17 +114,29 @@ public class BuildConsolePage extends Page implements ISelectionListener, IPrope return null; } - public void consoleChange(IBuildConsoleEvent event) { + public void consoleChange(final IBuildConsoleEvent event) { if (event.getType() == IBuildConsoleEvent.CONSOLE_START || event.getType() == IBuildConsoleEvent.CONSOLE_CLOSE) { - if (isAvailable()) { - if (event.getType() == IBuildConsoleEvent.CONSOLE_CLOSE && getProject() != event.getProject()) { - return; - } - setProject(event.getProject()); - if (isAvailable()) { - setDocument(); - getConsole().setTitle(getProject()); - } + Control control = getControl(); + if (control != null && !control.isDisposed()) { + Display display = control.getDisplay(); + display.asyncExec(new Runnable() { + + /* (non-Javadoc) + * @see java.lang.Runnable#run() + */ + public void run() { + if (isAvailable()) { + if (event.getType() == IBuildConsoleEvent.CONSOLE_CLOSE && getProject() != event.getProject()) { + return; + } + setProject(event.getProject()); + if (isAvailable()) { + setDocument(); + getConsole().setTitle(getProject()); + } + } + } + }); } } }