From a987a45a6d6bdf27aecf1ef0625801834ab27e44 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Fri, 13 Jan 2012 22:23:26 +0100 Subject: 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:
should be bold
Noticed-by: Sebastian Geerken --- src/cssparser.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/cssparser.cc') 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; -- cgit v1.2.3