Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java')
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
index fcafb95ebf7..bc4bbcabd1e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java
@@ -16,6 +16,9 @@
*******************************************************************************/
package org.eclipse.cdt.internal.ui.viewsupport;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
@@ -114,6 +117,12 @@ public class CElementImageProvider {
//DESC_OBJ_FOLDER= images.getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER);
}
+ /**
+ * Map of a descriptor back to its canonical one. This is needed to work around a bug in
+ * the Eclipse platform, see Bug 563454
+ */
+ private final Map<CElementImageDescriptor, CElementImageDescriptor> allDescriptors = new HashMap<>();
+
public CElementImageProvider() {
}
@@ -300,7 +309,9 @@ public class CElementImageProvider {
Point size = useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE;
ImageDescriptor desc = getBaseImageDescriptor(element, flags);
if (desc != null) {
- return new CElementImageDescriptor(desc, adornmentFlags, size);
+ CElementImageDescriptor descriptor = new CElementImageDescriptor(desc, adornmentFlags, size);
+ descriptor = allDescriptors.computeIfAbsent(descriptor, (k) -> k);
+ return descriptor;
}
return null;
}

Back to the top