Skip to content

Commit b1f375c

Browse files
committed
Lazy load disabled icons in AbstractContributionItem
AbstractionContributionItems load their disabled icons even if the icon's widget is not disabled. This unnecessarily occupies resources that may never be used. This change updates the implementation to lazily load or create the disabled icon once the element is actually disabled for the first time.
1 parent a2c3331 commit b1f375c

File tree

1 file changed

+12
-15
lines changed

1 file changed

+12
-15
lines changed

bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/AbstractContributionItem.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -188,29 +188,26 @@ protected void updateIcons() {
188188
String iconURI = modelItem.getIconURI() != null ? modelItem.getIconURI() : ""; //$NON-NLS-1$
189189
String disabledURI = getDisabledIconURI(modelItem);
190190
Object disabledData = item.getData(DISABLED_URI);
191-
if (disabledData == null)
192-
disabledData = ""; //$NON-NLS-1$
193-
if (!iconURI.equals(item.getData(ICON_URI)) || !disabledURI.equals(disabledData)) {
191+
boolean enabledIconChanged = !iconURI.equals(item.getData(ICON_URI));
192+
boolean disabledIconChanged = disabledData != null && !disabledURI.equals(disabledData);
193+
if (enabledIconChanged || disabledIconChanged) {
194194
LocalResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources());
195195
Image iconImage = getImage(iconURI, resourceManager);
196196
item.setImage(iconImage);
197197
item.setData(ICON_URI, iconURI);
198-
if (item instanceof ToolItem toolItem) {
199-
iconImage = getImage(disabledURI, resourceManager);
200-
toolItem.setDisabledImage(iconImage);
201-
toolItem.setData(DISABLED_URI, disabledURI);
202-
}
198+
disabledData = null;
199+
item.setData(DISABLED_URI, null);
203200
disposeOldImages();
204201
localResourceManager = resourceManager;
205202
}
206-
// if there is no explicit disabled icon and the element becomes disabled,
207-
// create it
208-
boolean hasExplicitDisabledImage = "".equals(disabledURI); //$NON-NLS-1$
209-
if (!modelItem.isEnabled() && !hasExplicitDisabledImage && item instanceof ToolItem toolItem) {
210-
if (toolItem.getDisabledImage() == null) {
211-
Image iconImage = getDisabledImage(iconURI, localResourceManager);
212-
toolItem.setDisabledImage(iconImage);
203+
// If item is disabled, create disabled image if not done yet
204+
if (!modelItem.isEnabled() && disabledData == null && item instanceof ToolItem toolItem) {
205+
Image disabledImage = getImage(disabledURI, localResourceManager);
206+
if (disabledImage == null) {
207+
disabledImage = getDisabledImage(iconURI, localResourceManager);
213208
}
209+
toolItem.setDisabledImage(disabledImage);
210+
toolItem.setData(DISABLED_URI, disabledURI);
214211
}
215212
}
216213

0 commit comments

Comments
 (0)