325937 - Active part/stack hard to detect
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 e66ae07..03aced7 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
@@ -353,14 +353,16 @@ points[index++] = selectionX1 = circX - radius; points[index++] = selectionY1 = bounds.y + bounds.height; } else { - points[index++] = shadowEnabled ? SIDE_DROP_WIDTH : 0 - + INNER_KEYLINE + OUTER_KEYLINE; - points[index++] = bounds.y + bounds.height; - + if (active) { + points[index++] = shadowEnabled ? SIDE_DROP_WIDTH : 0 + + INNER_KEYLINE + OUTER_KEYLINE; + points[index++] = bounds.y + bounds.height; + } points[index++] = selectionX1 = bounds.x; points[index++] = selectionY1 = bounds.y + bounds.height; } int[] ltt = drawCircle(circX, circY, radius, LEFT_TOP); + int startX = ltt[6]; for (int i = 0; i < ltt.length / 2; i += 2) { int tmp = ltt[i]; ltt[i] = ltt[ltt.length - i - 2]; @@ -374,6 +376,7 @@ int[] rt = drawCircle(circX + width - (radius * 2), circY, radius, RIGHT_TOP); + int endX = rt[rt.length - 4]; for (int i = 0; i < rt.length / 2; i += 2) { int tmp = rt[i]; rt[i] = rt[rt.length - i - 2]; @@ -388,11 +391,12 @@ points[index++] = selectionX2 = bounds.width + circX - radius; points[index++] = selectionY2 = bounds.y + bounds.height; - points[index++] = parent.getSize().x - - (shadowEnabled ? SIDE_DROP_WIDTH : 0 + INNER_KEYLINE - + OUTER_KEYLINE); - points[index++] = bounds.y + bounds.height; - + if (active) { + points[index++] = parent.getSize().x + - (shadowEnabled ? SIDE_DROP_WIDTH : 0 + INNER_KEYLINE + + OUTER_KEYLINE); + points[index++] = bounds.y + bounds.height; + } gc.setClipping(0, bounds.y, parent.getSize().x - (shadowEnabled ? SIDE_DROP_WIDTH : 0 + INNER_KEYLINE + OUTER_KEYLINE), bounds.y + bounds.height);// bounds.height @@ -409,15 +413,20 @@ if (tabOutlineColor == null) tabOutlineColor = gc.getDevice().getSystemColor(SWT.COLOR_BLACK); gc.setForeground(tabOutlineColor); - if (active) - gc.drawPolyline(tmpPoints); +// if (active) + gc.drawPolyline(tmpPoints); Rectangle rect = null; gc.setClipping(rect); + - if (outerKeyline == null) - outerKeyline = gc.getDevice().getSystemColor(SWT.COLOR_BLACK); - gc.setForeground(outerKeyline); - gc.drawPolyline(shape); + if (active) { + if (outerKeyline == null) + outerKeyline = gc.getDevice().getSystemColor(SWT.COLOR_RED); + gc.setForeground(outerKeyline); + gc.drawPolyline(shape); + } else { + gc.drawLine(startX, 0, endX, 0); + } } void drawUnselectedTab(int itemIndex, GC gc, Rectangle bounds, int state) {