summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordodji <dodji@seketeli.org>2003-06-17 15:24:12 +0000
committerDodji Seketeli <dodji@src.gnome.org>2003-06-17 15:24:12 +0000
commit527c728aeb4957a97a86c6fa558c2f1c057bbcb7 (patch)
tree0dfbb24b0fb163aaac7bad444710a47d121c8553
parent5d526f8953f29f41d58de76f49314d72e3ccc919 (diff)
downloadlibcroco-527c728aeb4957a97a86c6fa558c2f1c057bbcb7.tar.gz
updated this to test cr_statement_at_media_rule_parse_from_buf().
2003-06-17 dodji <dodji@seketeli.org> * tests/test4-main.c: updated this to test cr_statement_at_media_rule_parse_from_buf(). * src/parser/cr-statement.[ch]: debuged cr_statement_at_media_rule_parse_from_buf() and the functions it relies on. cr_statement_new_ruleset()=> fixed this so that it properly handles the containing "@media" rule. cr_statement_new_at_media_rule =>fixed this so that it properly handles the contained rulesets. Dodji.
-rw-r--r--ChangeLog13
-rw-r--r--src/parser/cr-statement.c34
2 files changed, 42 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 6072ae2..92c3f02 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2003-06-17 dodji <dodji@seketeli.org>
-
+
+ * tests/test4-main.c: updated this to test
+ cr_statement_at_media_rule_parse_from_buf().
+
+ * src/parser/cr-statement.[ch]:
+ debuged cr_statement_at_media_rule_parse_from_buf() and the functions
+ it relies on.
+ cr_statement_new_ruleset()=> fixed this so that it properly
+ handles the containing "@media" rule.
+ cr_statement_new_at_media_rule =>fixed this so that it properly
+ handles the contained rulesets.
+
* src/parser/cr-statement.[hc]:
coded a first version of cr_statement_at_media_rule_parse_from_buf().
This took the writing of a couple a SAC callback. Pfffew, SAC is a rather
diff --git a/src/parser/cr-statement.c b/src/parser/cr-statement.c
index efd87a2..8ce749e 100644
--- a/src/parser/cr-statement.c
+++ b/src/parser/cr-statement.c
@@ -146,7 +146,7 @@ parse_at_media_end_selector_cb (CRDocHandler *a_this,
g_return_if_fail (a_this && a_sellist) ;
status = cr_doc_handler_get_ctxt (a_this,
- (gpointer *)stmt) ;
+ (gpointer *)&stmt) ;
g_return_if_fail (status == CR_OK && stmt
&& stmt->type == RULESET_STMT) ;
g_return_if_fail (stmt->kind.ruleset->parent_media_rule) ;
@@ -714,6 +714,8 @@ cr_statement_new_ruleset (CRStyleSheet * a_sheet,
g_return_val_if_fail
(a_parent_media_rule->type == AT_MEDIA_RULE_STMT,
NULL) ;
+ g_return_val_if_fail (a_parent_media_rule->kind.media_rule,
+ NULL) ;
}
result = g_try_malloc (sizeof (CRStatement)) ;
@@ -740,7 +742,17 @@ cr_statement_new_ruleset (CRStyleSheet * a_sheet,
if (a_sel_list)
cr_selector_ref (a_sel_list) ;
result->kind.ruleset->decl_list = a_decl_list;
- result->kind.ruleset->parent_media_rule = a_parent_media_rule;
+
+ if (a_parent_media_rule)
+ {
+ result->kind.ruleset->parent_media_rule =
+ a_parent_media_rule;
+ a_parent_media_rule->kind.media_rule->rulesets =
+ cr_statement_append
+ (a_parent_media_rule->kind.media_rule->rulesets,
+ result) ;
+ }
+
cr_statement_set_parent_sheet (result, a_sheet) ;
@@ -836,7 +848,7 @@ cr_statement_new_at_media_rule (CRStyleSheet *a_sheet,
CRStatement *a_rulesets,
GList *a_media)
{
- CRStatement *result = NULL ;
+ CRStatement *result = NULL, *cur = NULL ;
if (a_rulesets)
g_return_val_if_fail (a_rulesets->type == RULESET_STMT,
@@ -862,14 +874,28 @@ cr_statement_new_at_media_rule (CRStyleSheet *a_sheet,
}
memset (result->kind.media_rule, 0, sizeof (CRAtMediaRule)) ;
result->kind.media_rule->rulesets = a_rulesets ;
- result->kind.media_rule->media_list = a_media ;
+ for (cur = a_rulesets ; cur ; cur = cur->next)
+ {
+ if (cur->type != RULESET_STMT || !cur->kind.ruleset)
+ {
+ cr_utils_trace_info ("Bad parameter a_rulesets. "
+ "It should be a list of "
+ "correct ruleset statement only !");
+ goto error ;
+ }
+ cur->kind.ruleset->parent_media_rule = result ;
+ }
+ result->kind.media_rule->media_list = a_media ;
if (a_sheet)
{
cr_statement_set_parent_sheet (result, a_sheet) ;
}
return result ;
+
+ error:
+ return NULL ;
}