diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/css.hh | 1 | ||||
-rw-r--r-- | src/cssparser.cc | 13 |
2 files changed, 10 insertions, 4 deletions
@@ -35,6 +35,7 @@ typedef enum { only because Dw cannot handle percentages in this particular case (e.g. 'margin-*-width'). */ + CSS_TYPE_SIGNED_LENGTH, /* As CSS_TYPE_LENGTH but may be negative. */ CSS_TYPE_COLOR, /* Represented as integer. */ CSS_TYPE_FONT_WEIGHT, /* this very special and only used by 'font-weight' */ diff --git a/src/cssparser.cc b/src/cssparser.cc index 830a0475..a924816c 100644 --- a/src/cssparser.cc +++ b/src/cssparser.cc @@ -148,10 +148,10 @@ const CssPropertyInfo Css_property_info[CSS_PROPERTY_LAST] = { {"list-style-image", {CSS_TYPE_UNUSED}, NULL}, {"list-style-position", {CSS_TYPE_UNUSED}, NULL}, {"list-style-type", {CSS_TYPE_ENUM, CSS_TYPE_UNUSED}, Css_list_style_type_enum_vals}, - {"margin-bottom", {CSS_TYPE_LENGTH, CSS_TYPE_UNUSED}, NULL}, - {"margin-left", {CSS_TYPE_LENGTH, CSS_TYPE_UNUSED}, NULL}, - {"margin-right", {CSS_TYPE_LENGTH, CSS_TYPE_UNUSED}, NULL}, - {"margin-top", {CSS_TYPE_LENGTH, CSS_TYPE_UNUSED}, NULL}, + {"margin-bottom", {CSS_TYPE_SIGNED_LENGTH, CSS_TYPE_UNUSED}, NULL}, + {"margin-left", {CSS_TYPE_SIGNED_LENGTH, CSS_TYPE_UNUSED}, NULL}, + {"margin-right", {CSS_TYPE_SIGNED_LENGTH, CSS_TYPE_UNUSED}, NULL}, + {"margin-top", {CSS_TYPE_SIGNED_LENGTH, CSS_TYPE_UNUSED}, NULL}, {"marker-offset", {CSS_TYPE_UNUSED}, NULL}, {"marks", {CSS_TYPE_UNUSED}, NULL}, {"max-height", {CSS_TYPE_UNUSED}, NULL}, @@ -622,6 +622,10 @@ bool CssParser::tokenMatchesProperty(CssPropertyName prop, CssValueType * type) case CSS_TYPE_LENGTH_PERCENTAGE: case CSS_TYPE_LENGTH: + if (tval[0] == '-') + return false; + // Fall Through + case CSS_TYPE_SIGNED_LENGTH: if (ttype == CSS_TK_DECINT || ttype == CSS_TK_FLOAT || (ttype == CSS_TK_SYMBOL && dStrcasecmp(tval, "auto") == 0)) @@ -709,6 +713,7 @@ bool CssParser::parseValue(CssPropertyName prop, case CSS_TYPE_LENGTH_PERCENTAGE: case CSS_TYPE_LENGTH: + case CSS_TYPE_SIGNED_LENGTH: if (ttype == CSS_TK_DECINT || ttype == CSS_TK_FLOAT) { fval = atof(tval); lentype = CSS_LENGTH_TYPE_PX; /* Actually, there must be a unit, |