diff options
Diffstat (limited to 'filter/filter-option.c')
-rw-r--r-- | filter/filter-option.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/filter/filter-option.c b/filter/filter-option.c index 249e79c98b..7d1530620d 100644 --- a/filter/filter-option.c +++ b/filter/filter-option.c @@ -163,7 +163,7 @@ filter_option_set_current (FilterOption *option, const char *name) } /* used by implementers to add additional options */ -void +struct _filter_option * filter_option_add(FilterOption *fo, const char *value, const char *title, const char *code) { struct _filter_option *op; @@ -179,6 +179,8 @@ filter_option_add(FilterOption *fo, const char *value, const char *title, const fo->options = g_list_append(fo->options, op); if (fo->current == NULL) fo->current = op; + + return op; } static int @@ -349,7 +351,7 @@ clone (FilterElement *fe) { FilterOption *fo = (FilterOption *)fe, *new; GList *l; - struct _filter_option *op; + struct _filter_option *op, *newop; d(printf ("cloning option\n")); @@ -357,7 +359,9 @@ clone (FilterElement *fe) l = fo->options; while (l) { op = l->data; - filter_option_add (new, op->value, op->title, op->code); + newop = filter_option_add (new, op->value, op->title, op->code); + if (fo->current == op) + new->current = newop; l = l->next; } |