diff options
-rw-r--r-- | bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java index 4fcb69f60fe..2c410126466 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/StackRenderer.java @@ -1426,11 +1426,22 @@ public class StackRenderer extends LazyStackRenderer implements IPreferenceChang } } - if (closeableElements > 0) { - new MenuItem(menu, SWT.SEPARATOR); + if (isDetachable(part)) { + if (closeableElements > 0) { + new MenuItem(menu, SWT.SEPARATOR); + } + + createMenuItem(menu, SWTRenderersMessages.menuDetach, e -> detachActivePart(menu)); + } + } + + protected boolean isDetachable(MPart part) { + // if it's a shared part check its current ref + if (part.getCurSharedRef() != null) { + return !part.getCurSharedRef().getTags().contains(IPresentationEngine.NO_DETACH); } - createMenuItem(menu, SWTRenderersMessages.menuDetach, e -> detachActivePart(menu)); + return !part.getTags().contains(IPresentationEngine.NO_DETACH); } /** |