diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2005-07-31 22:06:03 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2005-07-31 22:06:03 +0000 |
commit | 94433308d1d4e650795139aab49a44de75abdfbf (patch) | |
tree | 8b9f9c40bd7ed07b05b89efa6e2c1c4ee79eadc1 | |
parent | 0ba79e1ad41feb944b2ac81521f8343137cb6ddc (diff) | |
download | netsurf-94433308d1d4e650795139aab49a44de75abdfbf.tar.gz netsurf-94433308d1d4e650795139aab49a44de75abdfbf.tar.bz2 |
[project @ 2005-07-31 22:06:03 by jmb]
Ignore @import rules which occur after a valid rule.
svn path=/import/netsurf/; revision=1835
-rw-r--r-- | css/css.c | 4 | ||||
-rw-r--r-- | css/css.h | 1 | ||||
-rw-r--r-- | css/parser.y | 6 |
3 files changed, 7 insertions, 4 deletions
@@ -388,7 +388,7 @@ bool css_convert(struct content *c, int width, int height) unsigned int i; int token; void *parser; - struct css_parser_params param = {false, c, 0, false, false}; + struct css_parser_params param = {false, c, 0, false, false, false}; struct css_parser_token token_data; union content_msg_data msg_data; @@ -1478,7 +1478,7 @@ void css_parse_property_list(struct content *c, struct css_style * style, unsigned int i; int token; void *parser; - struct css_parser_params param = {true, c, 0, false, false}; + struct css_parser_params param = {true, c, 0, false, false, false}; struct css_parser_token token_data; const struct css_parser_token token_start = { "{", 1 }; const struct css_parser_token token_end = { "}", 1 }; @@ -588,6 +588,7 @@ struct css_parser_params { struct css_node *declaration; bool syntax_error; bool memory_error; + bool had_ruleset; }; /** Token type for the CSS parser. */ diff --git a/css/parser.y b/css/parser.y index 34aefabf1..2ede0ec25 100644 --- a/css/parser.y +++ b/css/parser.y @@ -47,7 +47,7 @@ statement ::= at_rule. at_rule ::= ATKEYWORD ws any_list block. at_rule ::= ATKEYWORD(A) ws any_list(B) SEMI ws. { if ((A.length == 7) && (strncasecmp(A.text, "@import", 7) == 0) - && B) + && B && !param->had_ruleset) css_atimport(param->stylesheet, B); css_free_node(B); } @@ -59,8 +59,10 @@ block_body ::= block_body ATKEYWORD ws. block_body ::= block_body SEMI ws. ruleset ::= selector_list(A) LBRACE ws declaration_list(B) RBRACE ws. - { if (A && B) + { if (A && B) { + param->had_ruleset = true; css_add_ruleset(param->stylesheet, A, B); + } else css_free_selector(A); css_free_node(B); } |