aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--src/css.hh1
-rw-r--r--src/cssparser.cc13
3 files changed, 11 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 524747a9..de89eabb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -75,6 +75,7 @@ dillo-2.1
- Add support for negative numbers in CSS parser.
- Fix allow_white_bg dillorc option.
- Load <style></style> content only if applicable.
+ - Allow negative values for specific CSS properties only.
Patches: Johannes Hofmann
+- Updated the GPL copyright note in the source files.
Patch: Detlef Riekenberg
diff --git a/src/css.hh b/src/css.hh
index 4c43b313..c5f755a6 100644
--- a/src/css.hh
+++ b/src/css.hh
@@ -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,