aboutsummaryrefslogtreecommitdiffstats
path: root/filter/e-filter-rule.c
diff options
context:
space:
mode:
Diffstat (limited to 'filter/e-filter-rule.c')
-rw-r--r--filter/e-filter-rule.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/filter/e-filter-rule.c b/filter/e-filter-rule.c
index f60230dc31..fb496a5b87 100644
--- a/filter/e-filter-rule.c
+++ b/filter/e-filter-rule.c
@@ -239,11 +239,14 @@ more_parts (GtkWidget *button,
if (data->rule->parts) {
EFilterPart *part;
GList *l;
+ EError *error = NULL;
l = g_list_last (data->rule->parts);
part = l->data;
- if (!e_filter_part_validate (part, GTK_WINDOW (gtk_widget_get_toplevel (button))))
+ if (!e_filter_part_validate (part, &error)) {
+ e_error_run_dialog (GTK_WINDOW (gtk_widget_get_toplevel (button)), error);
return;
+ }
}
/* create a new rule entry, use the first type of rule */
@@ -353,13 +356,15 @@ filter_rule_finalize (GObject *object)
static gint
filter_rule_validate (EFilterRule *rule,
- GtkWindow *error_parent)
+ EError **error)
{
gint valid = TRUE;
GList *parts;
+ g_warn_if_fail (error == NULL || *error == NULL);
if (!rule->name || !*rule->name) {
- e_error_run (error_parent, "filter:no-name", NULL);
+ if (error)
+ *error = e_error_new ("filter:no-name", NULL);
return FALSE;
}
@@ -368,7 +373,7 @@ filter_rule_validate (EFilterRule *rule,
parts = rule->parts;
valid = parts != NULL;
while (parts && valid) {
- valid = e_filter_part_validate ((EFilterPart *) parts->data, error_parent);
+ valid = e_filter_part_validate ((EFilterPart *) parts->data, error);
parts = parts->next;
}
@@ -907,7 +912,7 @@ e_filter_rule_set_source (EFilterRule *rule,
gint
e_filter_rule_validate (EFilterRule *rule,
- GtkWindow *error_parent)
+ EError **error)
{
EFilterRuleClass *class;
@@ -916,7 +921,7 @@ e_filter_rule_validate (EFilterRule *rule,
class = E_FILTER_RULE_GET_CLASS (rule);
g_return_val_if_fail (class->validate != NULL, FALSE);
- return class->validate (rule, error_parent);
+ return class->validate (rule, error);
}
gint