[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/4.1/kdelibs/khtml/css
From: Germain Garand <germain () ebooksfrance ! org>
Date: 2008-09-15 4:11:08
Message-ID: 1221451868.095121.17536.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 861067 by ggarand:
automatically merged revision 857212:
fix inheritance of border color
patch by Maksim Orlovich and
Anatoli Papirovski <apapirovski mac dot com>
BUG: 170089
M +32 -13 cssstyleselector.cpp
--- branches/KDE/4.1/kdelibs/khtml/css/cssstyleselector.cpp #861066:861067
@@ -186,6 +186,15 @@
return;\
}
+#define HANDLE_INHERIT_COND_WITH_BACKUP(propID, prop, propAlt, Prop) \
+if (id == propID) { \
+ if (parentStyle->prop().isValid()) \
+ style->set##Prop(parentStyle->prop()); \
+ else \
+ style->set##Prop(parentStyle->propAlt()); \
+ return; \
+}
+
#define HANDLE_INITIAL_COND(propID, Prop) \
if (id == propID) \
{\
@@ -2091,6 +2100,16 @@
return smaller ? a[r] : a[l];
}
+// If we're explicitly inheriting an initial border-color, its computed \
value is based +// on the parents' computed value of color, not ours.
+static QColor inheritedBorderColor( RenderStyle* parentStyle, const \
QColor& value ) +{
+ if ( value.isValid() )
+ return value;
+ else
+ return parentStyle->color();
+}
+
void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
{
// kDebug( 6080 ) << "applying property " << getPropertyName(id);
@@ -2719,12 +2738,12 @@
if (id != CSS_PROP_COLOR)
style->setInheritedNoninherited(true);
HANDLE_INHERIT_COND(CSS_PROP_BACKGROUND_COLOR, \
backgroundColor, BackgroundColor)
- HANDLE_INHERIT_COND(CSS_PROP_BORDER_TOP_COLOR, borderTopColor, \
BorderTopColor)
- HANDLE_INHERIT_COND(CSS_PROP_BORDER_BOTTOM_COLOR, \
borderBottomColor, BorderBottomColor)
- HANDLE_INHERIT_COND(CSS_PROP_BORDER_RIGHT_COLOR, \
borderRightColor, BorderRightColor)
- HANDLE_INHERIT_COND(CSS_PROP_BORDER_LEFT_COLOR, \
borderLeftColor, BorderLeftColor) + \
HANDLE_INHERIT_COND_WITH_BACKUP(CSS_PROP_BORDER_TOP_COLOR, borderTopColor, \
color, BorderTopColor) + \
HANDLE_INHERIT_COND_WITH_BACKUP(CSS_PROP_BORDER_BOTTOM_COLOR, \
borderBottomColor, color, BorderBottomColor) + \
HANDLE_INHERIT_COND_WITH_BACKUP(CSS_PROP_BORDER_RIGHT_COLOR, \
borderRightColor, color, BorderRightColor) + \
HANDLE_INHERIT_COND_WITH_BACKUP(CSS_PROP_BORDER_LEFT_COLOR, \
borderLeftColor, color, BorderLeftColor) \
HANDLE_INHERIT_COND(CSS_PROP_COLOR, color, Color)
- HANDLE_INHERIT_COND(CSS_PROP_OUTLINE_COLOR, outlineColor, \
OutlineColor) + \
HANDLE_INHERIT_COND_WITH_BACKUP(CSS_PROP_OUTLINE_COLOR, outlineColor, \
color, OutlineColor) return;
} else if (isInitial) {
// The border/outline colors will just map to the invalid \
color |col| above. This will have the @@ -3608,10 +3627,10 @@
if(id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_COLOR)
{
if (isInherit) {
- style->setBorderTopColor(parentStyle->borderTopColor());
- style->setBorderBottomColor(parentStyle->borderBottomColor());
- style->setBorderLeftColor(parentStyle->borderLeftColor());
- style->setBorderRightColor(parentStyle->borderRightColor());
+ style->setBorderTopColor(inheritedBorderColor(parentStyle, \
parentStyle->borderTopColor())); + \
style->setBorderBottomColor(inheritedBorderColor(parentStyle, \
parentStyle->borderBottomColor())); + \
style->setBorderLeftColor(inheritedBorderColor(parentStyle, \
parentStyle->borderLeftColor())); + \
style->setBorderRightColor(inheritedBorderColor(parentStyle, \
parentStyle->borderRightColor())); }
else if (isInitial) {
style->setBorderTopColor(QColor()); // Reset to invalid \
color so currentColor is used instead. @@ -3654,7 +3673,7 @@
case CSS_PROP_BORDER_TOP:
if ( isInherit ) {
style->setInheritedNoninherited(true);
- style->setBorderTopColor(parentStyle->borderTopColor());
+ style->setBorderTopColor(inheritedBorderColor(parentStyle, \
parentStyle->borderTopColor())); \
style->setBorderTopStyle(parentStyle->borderTopStyle()); \
style->setBorderTopWidth(parentStyle->borderTopWidth()); } else if \
(isInitial) @@ -3663,7 +3682,7 @@
case CSS_PROP_BORDER_RIGHT:
if (isInherit) {
style->setInheritedNoninherited(true);
- style->setBorderRightColor(parentStyle->borderRightColor());
+ style->setBorderRightColor(inheritedBorderColor(parentStyle,parentStyle->borderRightColor()));
style->setBorderRightStyle(parentStyle->borderRightStyle());
style->setBorderRightWidth(parentStyle->borderRightWidth());
}
@@ -3673,7 +3692,7 @@
case CSS_PROP_BORDER_BOTTOM:
if (isInherit) {
style->setInheritedNoninherited(true);
- style->setBorderBottomColor(parentStyle->borderBottomColor());
+ style->setBorderBottomColor(inheritedBorderColor(parentStyle, \
parentStyle->borderBottomColor()));
style->setBorderBottomStyle(parentStyle->borderBottomStyle());
style->setBorderBottomWidth(parentStyle->borderBottomWidth());
}
@@ -3683,7 +3702,7 @@
case CSS_PROP_BORDER_LEFT:
if (isInherit) {
style->setInheritedNoninherited(true);
- style->setBorderLeftColor(parentStyle->borderLeftColor());
+ style->setBorderLeftColor(inheritedBorderColor(parentStyle, \
parentStyle->borderLeftColor())); \
style->setBorderLeftStyle(parentStyle->borderLeftStyle()); \
style->setBorderLeftWidth(parentStyle->borderLeftWidth()); }
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic