From 3dd9638f61589fecc13d3b754a50dc3c4828ec8f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:44:30 +0000 Subject: [PATCH 1/2] Hide icons in chevron menu when preference is enabled #3463 Fixes https://github.com/eclipse-platform/eclipse.platform.ui/issues/3463 Co-authored-by: laeubi <1331477+laeubi@users.noreply.github.com> --- .../renderers/swt/BasicPartList.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java index 1da73e31ce6..fbc1d9c821d 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java @@ -17,6 +17,8 @@ import java.util.ArrayList; import java.util.List; +import org.eclipse.core.runtime.Platform; +import org.eclipse.e4.ui.internal.workbench.PartStackUtil; import org.eclipse.e4.ui.model.application.ui.MDirtyable; import org.eclipse.e4.ui.model.application.ui.MElementContainer; import org.eclipse.e4.ui.model.application.ui.MUIElement; @@ -24,6 +26,7 @@ import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder; import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.workbench.modeling.EPartService; +import org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering; import org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; @@ -78,6 +81,10 @@ public String getText(Object element) { @Override public Image getImage(Object element) { + // Check if icons should be hidden for view tabs + if (shouldHideIcons()) { + return null; + } return renderer.getImage((MUILabel) element); } @@ -208,4 +215,25 @@ protected boolean deleteSelectedElement(Object selectedElement) { return false; } + + /** + * Checks if icons should be hidden based on the preference setting. + * Icons are only hidden for view stacks, not for editor stacks. + * + * @return true if icons should be hidden, false otherwise + */ + private boolean shouldHideIcons() { + // Check if this is an editor stack - if so, don't hide icons + if (PartStackUtil.isEditorStack(input)) { + return false; + } + + // Get the preference value for hiding icons in view tabs + // Note: The preference qualifier is hardcoded here as it's private in CTabRendering + return Platform.getPreferencesService().getBoolean( + "org.eclipse.e4.ui.workbench.renderers.swt", //$NON-NLS-1$ + CTabRendering.HIDE_ICONS_FOR_VIEW_TABS, + CTabRendering.HIDE_ICONS_FOR_VIEW_TABS_DEFAULT, + null); + } } From d564ac0a75d8b928af204d9f29b481f11c0d273e Mon Sep 17 00:00:00 2001 From: Federico Jeanne Date: Tue, 18 Nov 2025 08:59:17 +0100 Subject: [PATCH 2/2] Declare constant in CTabFolder to be public --- .../internal/workbench/renderers/swt/BasicPartList.java | 3 +-- .../e4/ui/workbench/renderers/swt/CTabRendering.java | 2 +- .../e4/ui/workbench/renderers/swt/StackRenderer.java | 2 +- .../org/eclipse/ui/internal/WorkbookEditorsHandler.java | 8 ++------ .../eclipse/ui/internal/dialogs/ViewsPreferencePage.java | 8 +++----- 5 files changed, 8 insertions(+), 15 deletions(-) diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java index fbc1d9c821d..83df2a75389 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/internal/workbench/renderers/swt/BasicPartList.java @@ -229,9 +229,8 @@ private boolean shouldHideIcons() { } // Get the preference value for hiding icons in view tabs - // Note: The preference qualifier is hardcoded here as it's private in CTabRendering return Platform.getPreferencesService().getBoolean( - "org.eclipse.e4.ui.workbench.renderers.swt", //$NON-NLS-1$ + CTabRendering.PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT, CTabRendering.HIDE_ICONS_FOR_VIEW_TABS, CTabRendering.HIDE_ICONS_FOR_VIEW_TABS_DEFAULT, null); diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/CTabRendering.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/CTabRendering.java index ddbdc346105..aee7ae6ff19 100644 --- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/CTabRendering.java +++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/CTabRendering.java @@ -47,7 +47,7 @@ public class CTabRendering extends CTabFolderRenderer implements ICTabRendering, /** * The preference qualifier. */ - private static final String PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT = "org.eclipse.e4.ui.workbench.renderers.swt"; //$NON-NLS-1$ + public static final String PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT = "org.eclipse.e4.ui.workbench.renderers.swt"; //$NON-NLS-1$ /** * A named preference for setting CTabFolder's to be rendered with rounded 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 41eb5e5c1dd..900c047152b 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 @@ -161,7 +161,7 @@ public class StackRenderer extends LazyStackRenderer { private static final String TAB_FONT_KEY = "org.eclipse.ui.workbench.TAB_TEXT_FONT"; //$NON-NLS-1$ @Inject - @Preference(nodePath = "org.eclipse.e4.ui.workbench.renderers.swt") + @Preference(nodePath = CTabRendering.PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT) private IEclipsePreferences preferences; @Inject diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbookEditorsHandler.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbookEditorsHandler.java index a16e7074b8f..af2b0fe19de 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbookEditorsHandler.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/WorkbookEditorsHandler.java @@ -33,6 +33,7 @@ import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.e4.ui.model.application.ui.basic.MPart; +import org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering; import org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer; import org.eclipse.jface.viewers.BoldStylerProvider; import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; @@ -62,11 +63,6 @@ */ public class WorkbookEditorsHandler extends FilteredTableBaseHandler { - /** - * Preference node for the workbench SWT renderer - */ - private static final String ORG_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT = "org.eclipse.e4.ui.workbench.renderers.swt"; //$NON-NLS-1$ - /** * Id for the command that opens the editor drop down */ @@ -98,7 +94,7 @@ public class WorkbookEditorsHandler extends FilteredTableBaseHandler { * @return Returns the enableMRU. */ private static boolean isMruEnabled() { - IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(ORG_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT); + IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(CTabRendering.PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT); boolean initialMRUValue = preferences.getBoolean(StackRenderer.MRU_KEY_DEFAULT, StackRenderer.MRU_DEFAULT); return preferences.getBoolean(StackRenderer.MRU_KEY, initialMRUValue); } diff --git a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java index af350f44b9b..a74acb1c1a2 100644 --- a/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java +++ b/bundles/org.eclipse.ui.workbench/eclipseui/org/eclipse/ui/internal/dialogs/ViewsPreferencePage.java @@ -92,8 +92,6 @@ */ public class ViewsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { - private static final String PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT = "org.eclipse.e4.ui.workbench.renderers.swt"; //$NON-NLS-1$ - private static final String E4_THEME_EXTENSION_POINT = "org.eclipse.e4.ui.css.swt.theme"; //$NON-NLS-1$ /** The workbench theme engine; may be {@code null} if no engine */ @@ -248,7 +246,7 @@ protected void createHideIconsForViewTabs(Composite composite) { } private boolean getSwtRendererPreference(String prefName, boolean defaultValue) { - return Platform.getPreferencesService().getBoolean(PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT, + return Platform.getPreferencesService().getBoolean(CTabRendering.PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT, prefName, defaultValue, null); } @@ -332,7 +330,7 @@ public void init(IWorkbench workbench) { @Override public boolean performOk() { IEclipsePreferences prefs = InstanceScope.INSTANCE - .getNode(PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT); + .getNode(CTabRendering.PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT); if (isThemingPossible()) { ITheme theme = getSelectedTheme(); if (theme != null) { @@ -441,7 +439,7 @@ private void setColorsAndFontsTheme(ColorsAndFontsTheme theme) { @Override protected void performDefaults() { IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE - .getNode(PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT); + .getNode(CTabRendering.PREF_QUALIFIER_ECLIPSE_E4_UI_WORKBENCH_RENDERERS_SWT); if (isThemingPossible()) { setColorsAndFontsTheme(currentColorsAndFontsTheme);