Bug 278212 [Compatibility] stack overflow when using Open Declaration
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java index bb724c0..8ef9fb9 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java
@@ -16,6 +16,7 @@ import org.eclipse.e4.core.services.context.IEclipseContext; import org.eclipse.e4.core.services.context.spi.IContextConstants; import org.eclipse.e4.ui.model.application.ApplicationPackage; +import org.eclipse.e4.ui.model.application.MContribution; import org.eclipse.e4.ui.model.application.MItemPart; import org.eclipse.e4.ui.model.application.MMenu; import org.eclipse.e4.ui.model.application.MPart; @@ -325,7 +326,16 @@ // that logic expects this Control ctrl = item.getControl(); if (ctrl == null) { - renderer.createGui(selPart); + if (selPart instanceof MContribution) { + // if the MContribution has an object, that + // means + // we're in the middle of creating it + if (((MContribution) selPart).getObject() == null) { + renderer.createGui(selPart); + } + } else { + renderer.createGui(selPart); + } } ctf.setSelection(item);