Bug 579666: Improve dark theme on Windows

On Windows, the TabFolder and TabItem classes does not follow the
themeing in Eclipse. As a result, the tab selectors will be drawn with
the light theme while the rest of the Eclipse UI is in dark theme.

Contributed by STMicroelectronics

Change-Id: I9169c9e01f8c9a3af7b6bb6d1c673a043735e7e9
Signed-off-by: Torbjörn Svensson <torbjorn.svensson@st.com>
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java
index ad5fbb4..bc375d8 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutoconfEditorPreferencePage.java
@@ -30,6 +30,8 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Color;
@@ -41,8 +43,6 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.model.WorkbenchViewerComparator;
 
@@ -259,21 +259,22 @@
 		getOverlayStore().load();
 		getOverlayStore().start();
 
-		TabFolder folder = new TabFolder(parent, SWT.NONE);
+		CTabFolder folder = new CTabFolder(parent, SWT.NONE);
 		folder.setLayout(new TabFolderLayout());
 		folder.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-		TabItem item = new TabItem(folder, SWT.NONE);
+		CTabItem item = new CTabItem(folder, SWT.NONE);
+		folder.setSelection(0);
 		item.setText(AutotoolsPreferencesMessages.getString("AutomakeEditorPreferencePage.syntax")); //$NON-NLS-1$
 		item.setControl(createSyntaxPage(folder));
 
-		item = new TabItem(folder, SWT.NONE);
+		item = new CTabItem(folder, SWT.NONE);
 		item.setText(AutotoolsPreferencesMessages.getString("AutoconfEditorPreferencePage.folding")); //$NON-NLS-1$
 		item.setControl(createFoldingTabContent(folder));
 
 		// Allow end-user to select which version of autoconf to use for hover help
 		// and syntax checking of macros.
-		item = new TabItem(folder, SWT.NONE);
+		item = new CTabItem(folder, SWT.NONE);
 		item.setText(AutotoolsPreferencesMessages.getString("AutoconfEditorPreferencePage.version")); //$NON-NLS-1$
 		item.setControl(createVersionTabContent(folder));
 
@@ -447,7 +448,7 @@
 		return colorComposite;
 	}
 
-	private Composite createFoldingTabContent(TabFolder folder) {
+	private Composite createFoldingTabContent(CTabFolder folder) {
 		Composite composite = new Composite(folder, SWT.NULL);
 		// assume parent page uses griddata
 		GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
@@ -474,7 +475,7 @@
 		return composite;
 	}
 
-	private Composite createVersionTabContent(TabFolder folder) {
+	private Composite createVersionTabContent(CTabFolder folder) {
 		Composite composite = new Composite(folder, SWT.NULL);
 		// assume parent page uses griddata
 		GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
diff --git a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java
index ef767c9..2d3e473 100644
--- a/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.autotools.ui/src/org/eclipse/cdt/internal/autotools/ui/preferences/AutomakeEditorPreferencePage.java
@@ -30,6 +30,8 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Color;
@@ -40,8 +42,6 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.model.WorkbenchViewerComparator;
 
@@ -238,15 +238,16 @@
 		getOverlayStore().load();
 		getOverlayStore().start();
 
-		TabFolder folder = new TabFolder(parent, SWT.NONE);
+		CTabFolder folder = new CTabFolder(parent, SWT.NONE);
 		folder.setLayout(new TabFolderLayout());
 		folder.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-		TabItem item = new TabItem(folder, SWT.NONE);
+		CTabItem item = new CTabItem(folder, SWT.NONE);
+		folder.setSelection(0);
 		item.setText(AutotoolsPreferencesMessages.getString("AutomakeEditorPreferencePage.syntax")); //$NON-NLS-1$
 		item.setControl(createSyntaxPage(folder));
 
-		item = new TabItem(folder, SWT.NONE);
+		item = new CTabItem(folder, SWT.NONE);
 		item.setText(AutotoolsPreferencesMessages.getString("AutomakeEditorPreferencePage.folding")); //$NON-NLS-1$
 		item.setControl(createFoldingTabContent(folder));
 
@@ -380,7 +381,7 @@
 		return colorComposite;
 	}
 
-	private Composite createFoldingTabContent(TabFolder folder) {
+	private Composite createFoldingTabContent(CTabFolder folder) {
 		Composite composite = new Composite(folder, SWT.NULL);
 		// assume parent page uses griddata
 		GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java
index 1ba6318..edeb814 100644
--- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java
+++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakefileEditorPreferencePage.java
@@ -36,6 +36,8 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
@@ -46,8 +48,6 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.model.WorkbenchViewerComparator;
 
@@ -246,15 +246,16 @@
 		getOverlayStore().load();
 		getOverlayStore().start();
 
-		TabFolder folder = new TabFolder(parent, SWT.NONE);
+		CTabFolder folder = new CTabFolder(parent, SWT.NONE);
 		folder.setLayout(new TabFolderLayout());
 		folder.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-		TabItem item = new TabItem(folder, SWT.NONE);
+		CTabItem item = new CTabItem(folder, SWT.NONE);
+		folder.setSelection(0);
 		item.setText(MakefilePreferencesMessages.getString("MakefileEditorPreferencePage.syntax")); //$NON-NLS-1$
 		item.setControl(createSyntaxPage(folder));
 
-		item = new TabItem(folder, SWT.NONE);
+		item = new CTabItem(folder, SWT.NONE);
 		item.setText(MakefilePreferencesMessages.getString("MakefileEditorPreferencePage.folding")); //$NON-NLS-1$
 		item.setControl(createFoldingTabContent(folder));
 
@@ -406,7 +407,7 @@
 		return colorComposite;
 	}
 
-	private Composite createFoldingTabContent(TabFolder folder) {
+	private Composite createFoldingTabContent(CTabFolder folder) {
 		Composite composite = new Composite(folder, SWT.NULL);
 		// assume parent page uses griddata
 		GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_FILL);
diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java
index 564153e..c272b62 100644
--- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java
+++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/CustomizeProblemComposite.java
@@ -18,11 +18,11 @@
 import org.eclipse.cdt.codan.internal.ui.CodanUIMessages;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 
 /**
  * Composite for problem customisable parameters
@@ -47,12 +47,13 @@
 		this.setLayout(new GridLayout(1, false));
 		this.problem = selectedProblem;
 		this.resource = resource;
-		final TabFolder tabFolder = new TabFolder(this, SWT.TOP);
+		final CTabFolder tabFolder = new CTabFolder(this, SWT.TOP);
 		tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
 		// createMainTab(tabFolder);
 		createParamtersTab(tabFolder, combined);
 		createScopeTab(tabFolder);
 		createLaunchingTab(tabFolder);
+		tabFolder.setSelection(0);
 	}
 
 	public void save(IProblemWorkingCopy problem) {
@@ -64,8 +65,8 @@
 	/**
 	 * @param tabFolder
 	 */
-	private void createParamtersTab(TabFolder tabFolder, boolean combined) {
-		TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
+	private void createParamtersTab(CTabFolder tabFolder, boolean combined) {
+		CTabItem tabItem1 = new CTabItem(tabFolder, SWT.NULL);
 		tabItem1.setText(CodanUIMessages.CustomizeProblemComposite_TabParameters);
 		parametersTab = new Composite(tabFolder, SWT.NONE);
 		tabItem1.setControl(parametersTab);
@@ -77,8 +78,8 @@
 	/**
 	 * @param tabFolder
 	 */
-	private void createScopeTab(TabFolder tabFolder) {
-		TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
+	private void createScopeTab(CTabFolder tabFolder) {
+		CTabItem tabItem1 = new CTabItem(tabFolder, SWT.NULL);
 		tabItem1.setText(CodanUIMessages.CustomizeProblemComposite_TabScope);
 		Composite comp = new Composite(tabFolder, SWT.NONE);
 		tabItem1.setControl(comp);
@@ -87,8 +88,8 @@
 		scopeComposite.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false));
 	}
 
-	private void createLaunchingTab(TabFolder tabFolder) {
-		TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
+	private void createLaunchingTab(CTabFolder tabFolder) {
+		CTabItem tabItem1 = new CTabItem(tabFolder, SWT.NULL);
 		tabItem1.setText(CodanUIMessages.CustomizeProblemComposite_LaunchingTab);
 		Composite comp = new Composite(tabFolder, SWT.NONE);
 		tabItem1.setControl(comp);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java
index 2760aeb..9336285 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/TabConfigurationBlock.java
@@ -24,14 +24,14 @@
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.layout.PixelConverter;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
 
 /**
@@ -75,12 +75,12 @@
 	@Override
 	protected Control createContents(Composite parent) {
 		PixelConverter pixelConverter = new PixelConverter(parent);
-		final TabFolder folder = new TabFolder(parent, SWT.NONE);
+		final CTabFolder folder = new CTabFolder(parent, SWT.NONE);
 		folder.setLayout(new TabFolderLayout());
 		folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
 
 		for (int i = 0; i < fTabs.length; i++) {
-			TabItem item = new TabItem(folder, SWT.NONE);
+			CTabItem item = new CTabItem(folder, SWT.NONE);
 			item.setText(fTabLabels[i]);
 			Composite composite = new Composite(folder, SWT.NONE);
 			FillLayout layout = new FillLayout();
@@ -91,6 +91,7 @@
 			item.setData(fTabs[i]);
 			fTabs[i].createContents(composite);
 		}
+		folder.setSelection(0);
 		Dialog.applyDialogFont(folder);
 		folder.addSelectionListener(new SelectionListener() {
 			@Override
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java
index 6b17b47..cb4506e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/preferences/formatter/ModifyDialog.java
@@ -42,6 +42,8 @@
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.StatusDialog;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Point;
@@ -54,8 +56,6 @@
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 
 public abstract class ModifyDialog extends StatusDialog implements IModifyDialogTabPage.IModificationListener {
 
@@ -88,7 +88,7 @@
 	private final Map<String, String> fWorkingValues;
 	private final List<IModifyDialogTabPage> fTabPages;
 	private final IDialogSettings fDialogSettings;
-	private TabFolder fTabFolder;
+	private CTabFolder fTabFolder;
 	private final ProfileManager fProfileManager;
 	private Button fApplyButton;
 	private Button fSaveButton;
@@ -137,7 +137,7 @@
 
 		if (!fNewProfile) {
 			fTabFolder.setSelection(lastFocusNr);
-			((IModifyDialogTabPage) fTabFolder.getSelection()[0].getData()).setInitialFocus();
+			((IModifyDialogTabPage) fTabFolder.getSelection().getData()).setInitialFocus();
 		}
 	}
 
@@ -165,11 +165,14 @@
 
 		fSaveButton = createButton(nameComposite, SAVE_BUTTON_ID, FormatterMessages.ModifyDialog_Export_Button, false);
 
-		fTabFolder = new TabFolder(composite, SWT.NONE);
+		fTabFolder = new CTabFolder(composite, SWT.NONE);
 		fTabFolder.setFont(composite.getFont());
 		fTabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
 		addPages(fWorkingValues);
+		if (fTabFolder.getSelection() == null) {
+			fTabFolder.setSelection(0);
+		}
 
 		applyDialogFont(composite);
 
@@ -180,7 +183,7 @@
 
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				final TabItem tabItem = (TabItem) e.item;
+				final CTabItem tabItem = (CTabItem) e.item;
 				final IModifyDialogTabPage page = (IModifyDialogTabPage) tabItem.getData();
 				//				page.fSashForm.setWeights();
 				fDialogSettings.put(fKeyLastFocus, fTabPages.indexOf(page));
@@ -330,7 +333,7 @@
 	}
 
 	protected final void addTabPage(String title, IModifyDialogTabPage tabPage) {
-		final TabItem tabItem = new TabItem(fTabFolder, SWT.NONE);
+		final CTabItem tabItem = new CTabItem(fTabFolder, SWT.NONE);
 		applyDialogFont(tabItem.getControl());
 		tabItem.setText(title);
 		tabItem.setData(tabPage);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java
index d0c51fc..d564a8c 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/TabFolderOptionBlock.java
@@ -25,6 +25,8 @@
 import org.eclipse.core.runtime.SubMonitor;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Image;
@@ -33,7 +35,6 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
 import org.eclipse.swt.widgets.TabItem;
 
 public abstract class TabFolderOptionBlock {
@@ -49,7 +50,7 @@
 	protected ICOptionContainer fParent;
 	private ICOptionPage fCurrentPage;
 
-	private TabFolder fFolder;
+	private CTabFolder fFolder;
 
 	public TabFolderOptionBlock(boolean showMessageArea) {
 		bShowMessageArea = showMessageArea;
@@ -116,7 +117,7 @@
 	}
 
 	protected void createFolder(Composite parent) {
-		fFolder = new TabFolder(parent, SWT.NONE);
+		fFolder = new CTabFolder(parent, SWT.NONE);
 		fFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
 		fFolder.setLayout(new TabFolderLayout());
 
@@ -133,7 +134,7 @@
 	}
 
 	protected void addTab(ICOptionPage tab) {
-		TabItem item = new TabItem(fFolder, SWT.NONE);
+		CTabItem item = new CTabItem(fFolder, SWT.NONE);
 		item.setText(tab.getTitle());
 		Image img = tab.getImage();
 		if (img != null)
@@ -143,6 +144,9 @@
 		tab.createControl(item.getParent());
 		item.setControl(tab.getControl());
 		addOptionPage(tab);
+		if (fFolder.getSelection() == null) {
+			fFolder.setSelection(item);
+		}
 	}
 
 	abstract protected void addTabs();
diff --git a/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java b/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java
index c626617..068feea 100644
--- a/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java
+++ b/cross/org.eclipse.cdt.launch.remote/src/org/eclipse/cdt/launch/remote/tabs/RemoteDSFGDBDebuggerPage.java
@@ -26,6 +26,8 @@
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -35,8 +37,6 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 
 public class RemoteDSFGDBDebuggerPage extends GdbDebuggerPage {
@@ -145,8 +145,8 @@
 		configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE, str);
 	}
 
-	protected void createGdbserverSettingsTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	protected void createGdbserverSettingsTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(Messages.Gdbserver_Settings_Tab_Name);
 
 		Composite comp = new Composite(tabFolder, SWT.NULL);
@@ -239,11 +239,8 @@
 		fRemoteTimeoutValueText.setEnabled(fRemoteTimeoutEnabledCheckbox.getSelection());
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.cdt.debug.mi.internal.ui.GDBDebuggerPage#createTabs(org.eclipse.swt.widgets.TabFolder)
-	 */
 	@Override
-	public void createTabs(TabFolder tabFolder) {
+	public void createTabs(CTabFolder tabFolder) {
 		super.createTabs(tabFolder);
 		createGdbserverSettingsTab(tabFolder);
 	}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java
index d645e5c..acb289b 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbCoreDebuggerPage.java
@@ -27,6 +27,8 @@
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -38,8 +40,6 @@
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 
 /**
@@ -49,7 +49,7 @@
  * @since 2.0
  */
 public class GdbCoreDebuggerPage extends AbstractCDebuggerPage implements Observer {
-	protected TabFolder fTabFolder;
+	protected CTabFolder fTabFolder;
 	protected Text fGDBCommandText;
 	protected Text fGDBInitText;
 
@@ -61,7 +61,7 @@
 		Composite comp = new Composite(parent, SWT.NONE);
 		comp.setLayout(new GridLayout());
 		comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-		fTabFolder = new TabFolder(comp, SWT.NONE);
+		fTabFolder = new CTabFolder(comp, SWT.NONE);
 		fTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL));
 		createTabs(fTabFolder);
 		fTabFolder.setSelection(0);
@@ -163,13 +163,13 @@
 		return block;
 	}
 
-	public void createTabs(TabFolder tabFolder) {
+	public void createTabs(CTabFolder tabFolder) {
 		createMainTab(tabFolder);
 		createSolibTab(tabFolder);
 	}
 
-	public void createMainTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createMainTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.main_tab_name")); //$NON-NLS-1$
 		Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
 		((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -269,8 +269,8 @@
 		label.setLayoutData(gd);
 	}
 
-	public void createSolibTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createSolibTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.shared_libraries")); //$NON-NLS-1$
 		Composite comp = ControlFactory.createCompositeEx(fTabFolder, 1, GridData.FILL_BOTH);
 		comp.setFont(tabFolder.getFont());
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java
index 03f9c5c..50b1a69 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbDebuggerPage.java
@@ -33,6 +33,8 @@
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -45,8 +47,6 @@
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.PlatformUI;
 
@@ -54,7 +54,7 @@
  * The dynamic tab for gdb-based debugger implementations.
  */
 public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
-	protected TabFolder fTabFolder;
+	protected CTabFolder fTabFolder;
 	protected Text fGDBCommandText;
 	protected Text fGDBInitText;
 	protected Button fNonStopCheckBox;
@@ -95,7 +95,7 @@
 		Composite comp = new Composite(parent, SWT.NONE);
 		comp.setLayout(new GridLayout());
 		comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-		fTabFolder = new TabFolder(comp, SWT.NONE);
+		fTabFolder = new CTabFolder(comp, SWT.NONE);
 		fTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL));
 		createTabs(fTabFolder);
 		fTabFolder.setSelection(0);
@@ -373,7 +373,7 @@
 		return block;
 	}
 
-	public void createTabs(TabFolder tabFolder) {
+	public void createTabs(CTabFolder tabFolder) {
 		createMainTab(tabFolder);
 		createSolibTab(tabFolder);
 		if (System.getenv("FLATPAK_SANDBOX_DIR") != null) { //$NON-NLS-1$
@@ -381,8 +381,8 @@
 		}
 	}
 
-	public void createFlatpakTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createFlatpakTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.flatpak_tab_name")); //$NON-NLS-1$
 		Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
 		((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -459,8 +459,8 @@
 		fRemoteTimeoutValueText.setEnabled(fRemoteTimeoutEnabledCheckbox.getSelection());
 	}
 
-	public void createMainTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createMainTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.main_tab_name")); //$NON-NLS-1$
 		Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
 		((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -622,8 +622,8 @@
 		fReverseDebugMode.select(0);
 	}
 
-	public void createSolibTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createSolibTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(LaunchUIMessages.getString("GDBDebuggerPage.shared_libraries")); //$NON-NLS-1$
 		Composite comp = ControlFactory.createCompositeEx(fTabFolder, 1, GridData.FILL_BOTH);
 		comp.setFont(tabFolder.getFont());
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java
index 05c6e41..9a6ffe4 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/GdbServerDebuggerPage.java
@@ -29,12 +29,12 @@
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.jface.layout.PixelConverter;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 
 /**
  * The dynamic debugger tab for remote launches using gdb server.
@@ -71,8 +71,8 @@
 		createRemoteTimeoutFields();
 	}
 
-	protected void createConnectionTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	protected void createConnectionTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(LaunchUIMessages.getString("GDBServerDebuggerPage.10")); //$NON-NLS-1$
 		Composite comp1 = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
 		((GridLayout) comp1.getLayout()).makeColumnsEqualWidth = false;
@@ -260,7 +260,7 @@
 	}
 
 	@Override
-	public void createTabs(TabFolder tabFolder) {
+	public void createTabs(CTabFolder tabFolder) {
 		super.createTabs(tabFolder);
 		createConnectionTab(tabFolder);
 	}
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java
index ee973c3..ec5badd 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/GdbDebuggerPage.java
@@ -31,6 +31,8 @@
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -44,8 +46,6 @@
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.PlatformUI;
 
@@ -53,7 +53,7 @@
  * The dynamic tab for gdb-based debugger implementations.
  */
 public class GdbDebuggerPage extends AbstractCDebuggerPage implements Observer {
-	protected TabFolder fTabFolder;
+	protected CTabFolder fTabFolder;
 	protected Text fGDBCommandText;
 	protected Text fGDBInitText;
 	protected Button fNonStopCheckBox;
@@ -77,7 +77,7 @@
 		Composite comp = new Composite(parent, SWT.NONE);
 		comp.setLayout(new GridLayout());
 		comp.setLayoutData(new GridData(GridData.FILL_BOTH));
-		fTabFolder = new TabFolder(comp, SWT.NONE);
+		fTabFolder = new CTabFolder(comp, SWT.NONE);
 		fTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL));
 		createTabs(fTabFolder);
 		fTabFolder.setSelection(0);
@@ -261,13 +261,13 @@
 		return block;
 	}
 
-	public void createTabs(TabFolder tabFolder) {
+	public void createTabs(CTabFolder tabFolder) {
 		createMainTab(tabFolder);
 		createSolibTab(tabFolder);
 	}
 
-	public void createMainTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createMainTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(Messages.GDBDebuggerPage_main_tab_name);
 		Composite comp = ControlFactory.createCompositeEx(tabFolder, 1, GridData.FILL_BOTH);
 		((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false;
@@ -423,8 +423,8 @@
 		fTracepointModeCombo.select(0);
 	}
 
-	public void createSolibTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	public void createSolibTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(Messages.GDBDebuggerPage10);
 		Composite comp = ControlFactory.createCompositeEx(fTabFolder, 1, GridData.FILL_BOTH);
 		comp.setFont(tabFolder.getFont());
diff --git a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java
index a9f7317..deb55bc 100644
--- a/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java
+++ b/launch/org.eclipse.cdt.docker.launcher/src/org/eclipse/cdt/internal/docker/launcher/RemoteDebuggerPage.java
@@ -24,6 +24,8 @@
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -33,8 +35,6 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 import org.eclipse.swt.widgets.Text;
 
 /**
@@ -121,8 +121,8 @@
 		configuration.setAttribute(IGDBLaunchConfigurationConstants.ATTR_DEBUGGER_REMOTE_TIMEOUT_VALUE, str);
 	}
 
-	protected void createGdbserverSettingsTab(TabFolder tabFolder) {
-		TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
+	protected void createGdbserverSettingsTab(CTabFolder tabFolder) {
+		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
 		tabItem.setText(Messages.Gdbserver_Settings_Tab_Name);
 
 		Composite comp = new Composite(tabFolder, SWT.NULL);
@@ -201,7 +201,7 @@
 	}
 
 	@Override
-	public void createTabs(TabFolder tabFolder) {
+	public void createTabs(CTabFolder tabFolder) {
 		super.createTabs(tabFolder);
 		createGdbserverSettingsTab(tabFolder);
 	}