|
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.*; |
@@ -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 |
@@ -1642,7 +1657,7 @@ void drawUnselected(int index, GC gc, Rectangle bounds, int state) { |
1642 | 1657 | if (imageBounds.width < maxImageWidth) { |
1643 | 1658 | int imageX = xDraw; |
1644 | 1659 | int imageHeight = imageBounds.height; |
1645 | | - int imageY = y + (height - imageHeight) / 2; |
| 1660 | + int imageY = 1 + y + (height - imageHeight) / 2; |
1646 | 1661 | imageY += parent.onBottom ? -1 : 1; |
1647 | 1662 | int imageWidth = imageBounds.width * imageHeight / imageBounds.height; |
1648 | 1663 | gc.drawImage(image, imageX, imageY, imageWidth, imageHeight); |
|
0 commit comments