|
14 | 14 | *******************************************************************************/ |
15 | 15 | package org.eclipse.swt.custom; |
16 | 16 |
|
| 17 | +import java.util.*; |
| 18 | + |
17 | 19 | import org.eclipse.swt.*; |
18 | 20 | import org.eclipse.swt.graphics.*; |
19 | 21 | import org.eclipse.swt.widgets.*; |
@@ -93,8 +95,8 @@ public class CTabFolderRenderer { |
93 | 95 | static final int BUTTON_FILL = SWT.COLOR_LIST_BACKGROUND; |
94 | 96 | static final int BORDER1_COLOR = SWT.COLOR_WIDGET_NORMAL_SHADOW; |
95 | 97 |
|
96 | | - static final int ITEM_TOP_MARGIN = 2; |
97 | | - static final int ITEM_BOTTOM_MARGIN = 2; |
| 98 | + static final int ITEM_TOP_MARGIN = 3; |
| 99 | + static final int ITEM_BOTTOM_MARGIN = 3; |
98 | 100 | static final int ITEM_LEFT_MARGIN = 4; |
99 | 101 | static final int ITEM_RIGHT_MARGIN = 4; |
100 | 102 | static final int INTERNAL_SPACING = 4; |
@@ -1380,10 +1382,23 @@ void drawSelected(int itemIndex, GC gc, Rectangle bounds, int state ) { |
1380 | 1382 |
|
1381 | 1383 | // draw highlight marker of selected tab |
1382 | 1384 | 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 | + gc.setBackground(highlightColor); |
| 1393 | + |
| 1394 | + int bottomY = y + height - 1; |
| 1395 | + int highlightY = onBottom ? bottomY - thickness : thickness + 1; |
| 1396 | + |
| 1397 | + int[] shape2 = Arrays.copyOf(shape, shape.length); |
| 1398 | + // Update Y coordinates in shape to apply highlight thickness |
| 1399 | + shape2[1] = shape2[3] = shape2[shape2.length - 1] = shape2[shape2.length - 3] = highlightY; |
| 1400 | + gc.fillPolygon(shape2); |
| 1401 | + gc.setBackground(oldBackground); |
1387 | 1402 | } |
1388 | 1403 |
|
1389 | 1404 | // draw outline |
|
0 commit comments