Bug 486344: Overlay icons on editor tab disappear in split mode
- Fix drawing "override icon" when editor is split
- Correctly refresh when icon changes in split editor
Change-Id: Iee88ac05da14ac6b354f2b1ac58babe99f845508
Signed-off-by: Vlad Ionut Cruceru <vladcruceru27@gmail.com>
Signed-off-by: Matthias Becker <ma.becker@sap.com>
Also-by: Tobias Melcher <tobias.melcher@sap.com>
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/splitteraddon/SplitterAddon.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/splitteraddon/SplitterAddon.java
index d518ce3..bafad14 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/splitteraddon/SplitterAddon.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/splitteraddon/SplitterAddon.java
@@ -130,6 +130,12 @@
compPart.setCloseable(true);
compPart.setContributionURI("bundleclass://org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.splitteraddon.SplitHost"); //$NON-NLS-1$
+ // Check if icon from MPart was overridden
+ Object overriddenImage = originalPart.getTransientData().get(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY);
+ if (overriddenImage != null) {
+ compPart.getTransientData().put(IPresentationEngine.OVERRIDE_ICON_IMAGE_KEY, overriddenImage);
+ }
+
// Always remove the composite part from the model
compPart.getTags().add(EPartService.REMOVE_ON_HIDE_TAG);
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 757d573..66edd05 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
@@ -194,9 +194,12 @@
MUIElement partParent = part.getParent();
if (partParent instanceof MPartStack) {
- CTabItem item = findItemForPart(part);
- if (item != null) {
- itemsToSet.add(findItemForPart(part));
+ addItemToSet(itemsToSet, part);
+ } else if (partParent instanceof MPartSashContainer) {
+ MElementContainer<MUIElement> parentParent = partParent.getParent();
+ if (parentParent instanceof MPart) {
+ MPart parentParentMPart = (MPart) parentParent;
+ addItemToSet(itemsToSet, parentParentMPart);
}
} else if (part.getCurSharedRef() != null) {
MWindow topWin = modelService.getTopLevelWindowFor(part);
@@ -213,6 +216,13 @@
return itemsToSet;
}
+ private void addItemToSet(List<CTabItem> itemsToSet, MPart parentParent) {
+ CTabItem item = findItemForPart(parentParent);
+ if (item != null) {
+ itemsToSet.add(item);
+ }
+ }
+
@SuppressWarnings("unchecked")
@Inject
@Optional