diff options
2 files changed, 10 insertions, 3 deletions
diff --git a/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/PartHelper.java b/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/PartHelper.java index f767bf10..cbe2d201 100644 --- a/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/PartHelper.java +++ b/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/internal/PartHelper.java @@ -42,7 +42,7 @@ public class PartHelper { Object instance = site.getService(clazz); Method m = clazz.getMethod("getContext", new Class[0]); IEclipseContext ctx = (IEclipseContext) m.invoke(instance); - IEclipseContext rv = ctx.createChild(); + IEclipseContext rv = ctx; while( ctx.getParent() != null ) { ctx = ctx.getParent(); } diff --git a/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/parts/DIEditorPart.java b/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/parts/DIEditorPart.java index c135bb13..0c99e15f 100644 --- a/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/parts/DIEditorPart.java +++ b/bundles/org.eclipse.e4.tools.compat/src/org/eclipse/e4/tools/compat/parts/DIEditorPart.java @@ -148,8 +148,15 @@ public abstract class DIEditorPart<C> extends EditorPart implements @Override public void dispose() { - context.dispose(); - context = null; + IEclipseContext parentContext = (IEclipseContext) getSite().getService( + IEclipseContext.class); + // Check if running in 3.x, otherwise there was no dedicated context + // created + if (parentContext + .get("org.eclipse.e4.ui.workbench.IPresentationEngine") != null) { + context.dispose(); + context = null; + } super.dispose(); } } |