Skip to content

Commit c586435

Browse files
Adjust selection filling the curve for CTabFolder
When CTabFolder is selected there is a visible gap on top as well as on the top left where there is a curve (in RCP when theming is disabled). Also the image was too close to selection highlight which is adjusted here as well.
1 parent f627f8a commit c586435

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolderRenderer.java

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
*******************************************************************************/
1515
package org.eclipse.swt.custom;
1616

17+
import java.util.*;
18+
1719
import org.eclipse.swt.*;
1820
import org.eclipse.swt.graphics.*;
1921
import org.eclipse.swt.widgets.*;
@@ -1380,10 +1382,31 @@ void drawSelected(int itemIndex, GC gc, Rectangle bounds, int state ) {
13801382

13811383
// draw highlight marker of selected tab
13821384
if (parent.selectionHighlightBarThickness > 0 && parent.simple) {
1383-
Color previousColor = gc.getBackground();
1384-
gc.setBackground(item.getDisplay().getSystemColor(parent.shouldHighlight() ? SWT.COLOR_LIST_SELECTION : SWT.COLOR_WIDGET_DISABLED_FOREGROUND));
1385-
gc.fillRectangle(x + 1 /* outline */, parent.onBottom ? y + height - 1 - parent.selectionHighlightBarThickness : y + 1, width - 2 /*outline*/, parent.selectionHighlightBarThickness);
1386-
gc.setBackground(previousColor);
1385+
int thickness = parent.selectionHighlightBarThickness;
1386+
boolean onBottom = parent.onBottom;
1387+
boolean highlight = parent.shouldHighlight();
1388+
1389+
Color oldBackground = gc.getBackground();
1390+
Color highlightColor = item.getDisplay().getSystemColor(
1391+
highlight ? SWT.COLOR_LIST_SELECTION : SWT.COLOR_WIDGET_DISABLED_FOREGROUND
1392+
);
1393+
gc.setBackground(highlightColor);
1394+
1395+
int bottomY = y + height - 1;
1396+
int highlightY = onBottom ? bottomY - thickness : thickness;
1397+
1398+
int[] shape2 = Arrays.copyOf(shape, shape.length);
1399+
// Update Y coordinates in shape to apply highlight thickness
1400+
shape2[1] = shape2[3] = shape2[shape2.length - 1] = shape2[shape2.length - 3] = highlightY;
1401+
1402+
xx = x;
1403+
yy = onBottom ? bottomY - thickness - 1 : y;
1404+
ww = width;
1405+
hh = height;
1406+
1407+
drawBackground(gc, shape2, xx, yy, ww, hh, highlightColor, null, null, null, false);
1408+
1409+
gc.setBackground(oldBackground);
13871410
}
13881411

13891412
// draw outline

0 commit comments

Comments
 (0)