diff --git a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarInjector.java b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarInjector.java index 8302931e891..25ae34d662f 100644 --- a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarInjector.java +++ b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarInjector.java @@ -27,6 +27,7 @@ import org.eclipse.e4.ui.workbench.UIEvents; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.widgets.Widget; import org.osgi.service.event.Event; import org.osgi.service.event.EventHandler; @@ -103,12 +104,9 @@ public class LaunchBarInjector { if (!enabled) { // remove it if we're disabled trimBar.getChildren().remove(launchBarElement); - for (MTrimElement trimElement : trimBar.getChildren()) { - if (LaunchBarControl.ID.equals(trimElement.getElementId())) { - launchBarElement = trimElement; - break; - } - } + // This seems to be a bug in the platform but for now, dispose of the widget + Widget widget = (Widget)launchBarElement.getWidget(); + widget.dispose(); } // either way, we're done return; diff --git a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarPreferencePage.java b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarPreferencePage.java index ea42453a471..2f13cbffe07 100644 --- a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarPreferencePage.java +++ b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/LaunchBarPreferencePage.java @@ -20,7 +20,7 @@ public class LaunchBarPreferencePage extends FieldEditorPreferencePage implement @Override protected void createFieldEditors() { - addField(new BooleanFieldEditor(Activator.PREF_ENABLE_LAUNCHBAR, "Enable the Launch Bar (may require restart).", getFieldEditorParent())); + addField(new BooleanFieldEditor(Activator.PREF_ENABLE_LAUNCHBAR, "Enable the Launch Bar.", getFieldEditorParent())); } } diff --git a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/LaunchBarControl.java b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/LaunchBarControl.java index b9c47325fe9..f9c7c1916b2 100644 --- a/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/LaunchBarControl.java +++ b/launch/org.eclipse.cdt.launchbar.ui/src/org/eclipse/cdt/launchbar/ui/internal/controls/LaunchBarControl.java @@ -52,6 +52,12 @@ public class LaunchBarControl implements ILaunchBarManager.Listener { container.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); GridLayout layout = new GridLayout(7, false); container.setLayout(layout); + container.addDisposeListener(new DisposeListener() { + @Override + public void widgetDisposed(DisposeEvent e) { + LaunchBarControl.this.dispose(); + } + }); createButton(container, Activator.IMG_BUTTON_BUILD, Messages.LaunchBarControl_Build, Activator.CMD_BUILD); createButton(container, Activator.IMG_BUTTON_LAUNCH, Messages.LaunchBarControl_Launch, Activator.CMD_LAUNCH); @@ -84,7 +90,7 @@ public class LaunchBarControl implements ILaunchBarManager.Listener { } @PreDestroy - public void shutdown() { + public void dispose() { manager.removeListener(this); }