diff --git a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF index 31364b7f1a8..f865a2a1f0d 100644 --- a/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.ui.workbench/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.ui.workbench; singleton:=true -Bundle-Version: 3.136.0.qualifier +Bundle-Version: 3.136.100.qualifier Bundle-Activator: org.eclipse.ui.internal.WorkbenchPlugin Bundle-ActivationPolicy: lazy Bundle-Vendor: %providerName diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorPart.java index 77dd834f462..c19bf708894 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorPart.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/EditorPart.java @@ -291,4 +291,12 @@ protected final void checkSite(IWorkbenchPartSite site) { Assert.isTrue(site instanceof IEditorSite, "The site for an editor must be an IEditorSite"); //$NON-NLS-1$ } + @Override + public void dispose() { + if (compatibilityTitleListener != null) { + removePropertyListener(compatibilityTitleListener); + compatibilityTitleListener = null; + } + super.dispose(); + } } diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java index c95a1e2cf97..68ecd674ead 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/part/MultiPageEditorPart.java @@ -153,6 +153,8 @@ public abstract class MultiPageEditorPart extends EditorPart implements IPageCha private ListenerList pageChangeListeners = new ListenerList<>(ListenerList.IDENTITY); + private org.eclipse.jface.util.IPropertyChangeListener propertyChangeListenerToUpdateContainer; + /** * Creates an empty multi-page editor with no pages and registers a * {@link PropertyChangeListener} to listen for changes to the editor's @@ -160,11 +162,12 @@ public abstract class MultiPageEditorPart extends EditorPart implements IPageCha */ protected MultiPageEditorPart() { super(); - getAPIPreferenceStore().addPropertyChangeListener(event -> { + propertyChangeListenerToUpdateContainer = event -> { if (isUpdateRequired(event)) { updateContainer(); } - }); + }; + getAPIPreferenceStore().addPropertyChangeListener(propertyChangeListenerToUpdateContainer); } /** @@ -526,6 +529,11 @@ protected IEditorSite createSite(IEditorPart editor) { */ @Override public void dispose() { + IPreferenceStore store = getAPIPreferenceStore(); + if (propertyChangeListenerToUpdateContainer != null) { + store.removePropertyChangeListener(propertyChangeListenerToUpdateContainer); + propertyChangeListenerToUpdateContainer = null; + } if (getSite() != null) { deactivateSite(true, false); }