summaryrefslogtreecommitdiff
path: root/src/cssparser.cc
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2012-01-13 22:23:26 +0100
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2012-01-13 22:23:26 +0100
commita987a45a6d6bdf27aecf1ef0625801834ab27e44 (patch)
tree98723f8992c65ad81aae9f66f06d0f0bfda5ccd2 /src/cssparser.cc
parentfe21a59c2c565d827147ac27f3398f2b3c2f22a4 (diff)
fix descendant selector matching
When matching descendant selectors we need to test all possibilities and not just the first one. While at it refactor CssSelector::match (). Testcase: <html> <head> <style type=text/css> .a > .b .c { font-weight:bold }</style> </head> <body> <div class=a> <div class=b> <div class=b> <div class=c>should be bold</div> </div> </div> </div> </body> </html> Noticed-by: Sebastian Geerken <sgeerken@dillo.org>
Diffstat (limited to 'src/cssparser.cc')
-rw-r--r--src/cssparser.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/cssparser.cc b/src/cssparser.cc
index 6d5b3768..306aa58c 100644
--- a/src/cssparser.cc
+++ b/src/cssparser.cc
@@ -1292,13 +1292,13 @@ CssSelector *CssParser::parseSelector()
(tval[0] == ',' || tval[0] == '{')) {
break;
} else if (ttype == CSS_TK_CHAR && tval[0] == '>') {
- selector->addSimpleSelector (CssSelector::CHILD);
+ selector->addSimpleSelector (CssSelector::COMB_CHILD);
nextToken();
} else if (ttype == CSS_TK_CHAR && tval[0] == '+') {
- selector->addSimpleSelector (CssSelector::ADJACENT_SIBLING);
+ selector->addSimpleSelector (CssSelector::COMB_ADJACENT_SIBLING);
nextToken();
} else if (ttype != CSS_TK_END && spaceSeparated) {
- selector->addSimpleSelector (CssSelector::DESCENDANT);
+ selector->addSimpleSelector (CssSelector::COMB_DESCENDANT);
} else {
delete selector;
selector = NULL;