diff options
Diffstat (limited to 'filter/filter-rule.c')
-rw-r--r-- | filter/filter-rule.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/filter/filter-rule.c b/filter/filter-rule.c index 2dfb0b7fd6..4d5d76505c 100644 --- a/filter/filter-rule.c +++ b/filter/filter-rule.c @@ -121,6 +121,7 @@ static void filter_rule_init (FilterRule *fr) { fr->priv = g_malloc0 (sizeof (*fr->priv)); + fr->enabled = TRUE; } static void @@ -258,7 +259,8 @@ list_eq(GList *al, GList *bl) static int rule_eq (FilterRule *fr, FilterRule *cm) { - return fr->grouping == cm->grouping + return fr->enabled == cm->enabled + && fr->grouping == cm->grouping && fr->threading == fr->threading && ((fr->name && cm->name && strcmp (fr->name, cm->name) == 0) || (fr->name == NULL && cm->name == NULL)) @@ -282,6 +284,9 @@ xml_encode (FilterRule *fr) GList *l; node = xmlNewNode (NULL, (const unsigned char *)"rule"); + + xmlSetProp (node, (const unsigned char *)"enabled", (const unsigned char *)(fr->enabled ? "true" : "false")); + switch (fr->grouping) { case FILTER_GROUP_ALL: xmlSetProp (node, (const unsigned char *)"grouping", (const unsigned char *)"all"); @@ -390,6 +395,14 @@ xml_decode (FilterRule *fr, xmlNodePtr node, RuleContext *f) fr->name = NULL; } + grouping = (char *)xmlGetProp (node, (const unsigned char *)"enabled"); + if (!grouping) + fr->enabled = TRUE; + else { + fr->enabled = strcmp (grouping, "false") != 0; + xmlFree (grouping); + } + grouping = (char *)xmlGetProp (node, (const unsigned char *)"grouping"); if (!strcmp (grouping, "any")) fr->grouping = FILTER_GROUP_ANY; @@ -447,6 +460,8 @@ rule_copy (FilterRule *dest, FilterRule *src) { GList *node; + dest->enabled = src->enabled; + g_free (dest->name); dest->name = g_strdup (src->name); |