Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Rolka2014-04-07 09:20:32 +0000
committerEric Moffatt2014-04-28 14:45:15 +0000
commita84eb9a9f764a6dd3b9e2e65bf0cbcf22b091af4 (patch)
tree034a388b582170c440baf293bacb4a1e3eabbd9b
parent87ce6024139c8ae949d7fe5c33a417ab2c3e4c0b (diff)
downloadeclipse.platform.ui-a84eb9a9f764a6dd3b9e2e65bf0cbcf22b091af4.tar.gz
eclipse.platform.ui-a84eb9a9f764a6dd3b9e2e65bf0cbcf22b091af4.tar.xz
eclipse.platform.ui-a84eb9a9f764a6dd3b9e2e65bf0cbcf22b091af4.zip
Bug 430872 - [CSS] ACTIVE_TAB_BG_END must not be used to set view
background and description background Change-Id: I87d6446fdbad4d4552152f12873ba7e3ea8d46d9 Signed-off-by: Daniel Rolka <daniel.rolka@pl.ibm.com>
-rw-r--r--bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabFolderElement.java37
-rw-r--r--bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CompositeElement.java25
-rw-r--r--bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java3
-rw-r--r--bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/custom/CSSPropertyUnselectedTabsSWTHandler.java9
-rw-r--r--bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/CTabRendering.java90
-rw-r--r--bundles/org.eclipse.ui.themes/css/e4_basestyle.css8
6 files changed, 58 insertions, 114 deletions
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabFolderElement.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabFolderElement.java
index e587cb7ed16..1aa25321888 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabFolderElement.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CTabFolderElement.java
@@ -37,8 +37,6 @@ import org.w3c.dom.NodeList;
*
*/
public class CTabFolderElement extends CompositeElement implements ChildVisibilityAwareElement {
- private final static String BACKGROUND_SET_BY_TAB_RENDERER = "bgSetByTabRenderer"; //$NON-NLS-1$
-
private SelectionListener selectionListener = new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -119,9 +117,7 @@ public class CTabFolderElement extends CompositeElement implements ChildVisibili
folder.setSelectionBackground((Color) null);
folder.setSelectionForeground((Color) null);
folder.setSelectionBackground((Image) null);
-
folder.setBackground(null, null);
- resetChildrenBackground(folder);
if (folder.getRenderer() instanceof ICTabRendering) {
ICTabRendering renderer = (ICTabRendering) folder
@@ -136,39 +132,6 @@ public class CTabFolderElement extends CompositeElement implements ChildVisibili
super.reset();
}
- private void resetChildrenBackground(Composite composite) {
- for (Control control : composite.getChildren()) {
- resetChildBackground(control);
- if (control instanceof Composite) {
- resetChildrenBackground((Composite) control);
- }
- }
- }
-
- private void resetChildBackground(Control control) {
- Color backgroundSetByRenderer = (Color) control
- .getData(BACKGROUND_SET_BY_TAB_RENDERER);
- if (backgroundSetByRenderer != null) {
- if (control.getBackground() == backgroundSetByRenderer) {
- control.setBackground(null);
- }
- control.setData(BACKGROUND_SET_BY_TAB_RENDERER, null);
- }
- }
-
- public static void setBackgroundOverriddenDuringRenderering(
- Composite composite, Color background) {
- composite.setBackground(background);
- composite.setData(BACKGROUND_SET_BY_TAB_RENDERER, background);
-
- for (Control control : composite.getChildren()) {
- if (!CompositeElement.hasBackgroundOverriddenByCSS(control)) {
- control.setBackground(background);
- control.setData(BACKGROUND_SET_BY_TAB_RENDERER, background);
- }
- }
- }
-
@Override
public NodeList getVisibleChildNodes() {
// CTabFolder#getChildren() exposes the "tab controls" (the toolbars and
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CompositeElement.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CompositeElement.java
index f0c32e72702..3a0a7da5588 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CompositeElement.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/dom/CompositeElement.java
@@ -12,9 +12,7 @@ package org.eclipse.e4.ui.css.swt.dom;
import org.eclipse.e4.ui.css.core.dom.CSSStylableElement;
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
-import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Widget;
import org.w3c.dom.Node;
@@ -23,8 +21,6 @@ import org.w3c.dom.Node;
*
*/
public class CompositeElement extends ControlElement {
- private final static String BACKGROUND_OVERRIDDEN_BY_CSS_MARKER = "bgOverriddenByCSS";
-
public CompositeElement(Composite composite, CSSEngine engine) {
super(composite, engine);
}
@@ -43,25 +39,4 @@ public class CompositeElement extends ControlElement {
protected Composite getComposite() {
return (Composite) getNativeWidget();
}
-
- @Override
- public void reset() {
- Composite composite = getComposite();
-
- if (composite.getData(BACKGROUND_OVERRIDDEN_BY_CSS_MARKER) != null) {
- composite.setData(BACKGROUND_OVERRIDDEN_BY_CSS_MARKER, null);
- }
- super.reset();
- }
-
- public static boolean hasBackgroundOverriddenByCSS(Control control) {
- return control.getData(BACKGROUND_OVERRIDDEN_BY_CSS_MARKER) != null;
- }
-
- public static void setBackgroundOverriddenByCSSMarker(Widget widget) {
- if (widget instanceof Composite && !(widget instanceof CTabFolder)) {
- widget.setData(BACKGROUND_OVERRIDDEN_BY_CSS_MARKER, true);
- }
- }
-
}
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java
index e8b072ecd9b..c8ec90cdec9 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/css2/CSSPropertyBackgroundSWTHandler.java
@@ -15,7 +15,6 @@ import org.eclipse.e4.ui.css.core.dom.properties.Gradient;
import org.eclipse.e4.ui.css.core.dom.properties.css2.AbstractCSSPropertyBackgroundHandler;
import org.eclipse.e4.ui.css.core.dom.properties.css2.ICSSPropertyBackgroundHandler;
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
-import org.eclipse.e4.ui.css.swt.dom.CompositeElement;
import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
import org.eclipse.e4.ui.css.swt.helpers.CSSSWTColorHelper;
import org.eclipse.e4.ui.css.swt.helpers.CSSSWTImageHelper;
@@ -84,7 +83,6 @@ AbstractCSSPropertyBackgroundHandler {
} else if (widget instanceof Control) {
GradientBackgroundListener.remove((Control) widget);
CSSSWTColorHelper.setBackground((Control) widget, newColor);
- CompositeElement.setBackgroundOverriddenByCSSMarker(widget);
}
} else if (value.getCssValueType() == CSSValue.CSS_VALUE_LIST) {
Gradient grad = (Gradient) engine.convert(value, Gradient.class,
@@ -106,7 +104,6 @@ AbstractCSSPropertyBackgroundHandler {
} else if (widget instanceof Control) {
GradientBackgroundListener.handle((Control) widget, grad);
- CompositeElement.setBackgroundOverriddenByCSSMarker(widget);
}
}
}
diff --git a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/custom/CSSPropertyUnselectedTabsSWTHandler.java b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/custom/CSSPropertyUnselectedTabsSWTHandler.java
index 5dfa3f64d82..2799a0644e8 100644
--- a/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/custom/CSSPropertyUnselectedTabsSWTHandler.java
+++ b/bundles/org.eclipse.e4.ui.css.swt/src/org/eclipse/e4/ui/css/swt/properties/custom/CSSPropertyUnselectedTabsSWTHandler.java
@@ -30,7 +30,8 @@ public class CSSPropertyUnselectedTabsSWTHandler extends AbstractCSSPropertySWTH
@Override
protected void applyCSSProperty(Control control, String property,
CSSValue value, String pseudo, CSSEngine engine) throws Exception {
- if (!(control instanceof CTabFolder)) {
+ if (!(control instanceof CTabFolder)
+ || !isUnselectedTabsColorProp(property)) {
return;
}
CTabFolder folder = ((CTabFolder) control);
@@ -58,10 +59,8 @@ public class CSSPropertyUnselectedTabsSWTHandler extends AbstractCSSPropertySWTH
control.getDisplay(), engine);
percents = CSSSWTColorHelper.getPercents(grad);
}
- if (isUnselectedTabsColorProp(property)) {
- ((ICTabRendering) renderer).setUnselectedTabsColor(colors,
- percents);
- }
+ ((ICTabRendering) renderer)
+ .setUnselectedTabsColor(colors, percents);
folder.setBackground(colors, percents, true);
}
}
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 85ccd0523c4..e9f866464e2 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
@@ -10,9 +10,6 @@
*******************************************************************************/
package org.eclipse.e4.ui.workbench.renderers.swt;
-import static org.eclipse.e4.ui.css.swt.dom.CTabFolderElement.setBackgroundOverriddenDuringRenderering;
-import static org.eclipse.e4.ui.css.swt.dom.CompositeElement.hasBackgroundOverriddenByCSS;
-
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import javax.inject.Inject;
@@ -1059,30 +1056,35 @@ public class CTabRendering extends CTabFolderRenderer implements
defaultBackground);
drawTabBackground(gc, partHeaderBounds, state, vertical,
defaultBackground);
- drawChildrenBackground(partHeaderBounds);
+ redrawChildren();
}
private void drawUnselectedTabBackground(GC gc, Rectangle partHeaderBounds,
int state, boolean vertical, Color defaultBackground) {
+ rendererWrapper.drawBackground(gc, partHeaderBounds.x,
+ partHeaderBounds.y - 1, partHeaderBounds.width,
+ partHeaderBounds.height, defaultBackground,
+ getUnselectedTabsColors(state),
+ getUnselectedTabsPercents(state),
+ vertical);
+ }
+
+ private Color[] getUnselectedTabsColors(int state) {
if (unselectedTabsColors == null) {
- boolean selected = (state & SWT.SELECTED) != 0;
- unselectedTabsColors = selected ? parentWrapper
+ return (state & SWT.SELECTED) != 0 ? parentWrapper
.getSelectionGradientColors() : parentWrapper
.getGradientColors();
- unselectedTabsPercents = selected ? parentWrapper
- .getSelectionGradientPercents() :
- parentWrapper.getGradientPercents();
- }
- if (unselectedTabsColors == null) {
- unselectedTabsColors = new Color[] { gc.getDevice().getSystemColor(
- SWT.COLOR_WHITE) };
- unselectedTabsPercents = new int[] { 100 };
}
+ return unselectedTabsColors;
+ }
- rendererWrapper.drawBackground(gc, partHeaderBounds.x,
- partHeaderBounds.y - 1, partHeaderBounds.width,
- partHeaderBounds.height, defaultBackground,
- unselectedTabsColors, unselectedTabsPercents, vertical);
+ private int[] getUnselectedTabsPercents(int state) {
+ if (unselectedTabsPercents == null) {
+ return (state & SWT.SELECTED) != 0 ? parentWrapper
+ .getSelectionGradientPercents() : parentWrapper
+ .getGradientPercents();
+ }
+ return unselectedTabsPercents;
}
private void drawTabBackground(GC gc, Rectangle partHeaderBounds,
@@ -1095,42 +1097,42 @@ public class CTabRendering extends CTabFolderRenderer implements
}
if (colors == null) {
boolean selected = (state & SWT.SELECTED) != 0;
- colors = selected ? parentWrapper.getSelectionGradientColors() :
- parentWrapper.getGradientColors();
- percents = selected ? parentWrapper.getSelectionGradientPercents() :
- parentWrapper.getGradientPercents();
+ colors = selected ? parentWrapper.getSelectionGradientColors()
+ : parentWrapper.getGradientColors();
+ percents = selected ? parentWrapper.getSelectionGradientPercents()
+ : parentWrapper.getGradientPercents();
}
if (colors == null) {
- colors = new Color[] { gc.getDevice().getSystemColor(SWT.COLOR_WHITE) };
+ colors = new Color[] { gc.getDevice().getSystemColor(
+ SWT.COLOR_WHITE) };
percents = new int[] { 100 };
}
- rendererWrapper.drawBackground(gc, partHeaderBounds.x, partHeaderBounds.height - 1, partHeaderBounds.width,
+
+ rendererWrapper.drawBackground(gc, partHeaderBounds.x,
+ partHeaderBounds.height - 1, partHeaderBounds.width,
parent.getBounds().height, defaultBackground, colors, percents,
vertical);
- }
- private void drawChildrenBackground(Rectangle partHeaderBounds) {
- for (Control control : parent.getChildren()) {
- if (control instanceof Composite
- && !hasBackgroundOverriddenByCSS(control)) {
- drawChildBackground((Composite) control, partHeaderBounds);
- }
- }
+ int selectedItemWidth = parent.getSelectionIndex() > -1 ? parent
+ .getSelection().getControl().getBounds().width : parent
+ .getBounds().width;
+ int leftRightBorder = (parent.getBounds().width - selectedItemWidth) / 2;
+ int topBorder = INNER_KEYLINE + OUTER_KEYLINE;
+
+ rendererWrapper.drawBackground(gc,
+ partHeaderBounds.x + leftRightBorder, partHeaderBounds.height
+ + topBorder, partHeaderBounds.width - leftRightBorder
+ * 2, partHeaderBounds.height,
+ defaultBackground, getUnselectedTabsColors(state),
+ getUnselectedTabsPercents(state), vertical);
}
- private void drawChildBackground(Composite composite,
- Rectangle partHeaderBounds) {
- Rectangle rec = composite.getBounds();
- Color background = null;
- boolean partOfHeader = rec.y >= partHeaderBounds.y
- && rec.y < partHeaderBounds.height;
-
- if (!partOfHeader && selectedTabFillColors != null) {
- background = selectedTabFillColors.length == 2 ? selectedTabFillColors[1]
- : selectedTabFillColors[0];
+ private void redrawChildren() {
+ for (Control child : parent.getChildren()) {
+ if (child instanceof Composite) {
+ child.reskin(SWT.ALL);
+ }
}
-
- setBackgroundOverriddenDuringRenderering(composite, background);
}
private static class CTabFolderRendererWrapper extends
diff --git a/bundles/org.eclipse.ui.themes/css/e4_basestyle.css b/bundles/org.eclipse.ui.themes/css/e4_basestyle.css
index a21ad1f2b80..3918c4b91eb 100644
--- a/bundles/org.eclipse.ui.themes/css/e4_basestyle.css
+++ b/bundles/org.eclipse.ui.themes/css/e4_basestyle.css
@@ -166,6 +166,14 @@ CTabItem:selected {
color: '#org-eclipse-ui-workbench-ACTIVE_NOFOCUS_TAB_TEXT_COLOR';
}
+.MPartStack Composite {
+ background-color: '#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_START' '#org-eclipse-ui-workbench-INACTIVE_UNSELECTED_TABS_COLOR_END' 100% 100%;
+}
+
+.MPartStack.active Composite {
+ background-color: '#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_START' '#org-eclipse-ui-workbench-ACTIVE_UNSELECTED_TABS_COLOR_END' 100% 100%;
+}
+
#PerspectiveSwitcher {
eclipse-perspective-keyline-color: #AAB0BF #AAB0BF;
}

Back to the top