diff options
author | NotZed <NotZed@HelixCode.com> | 2000-02-25 11:04:30 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-02-25 11:04:30 +0800 |
commit | 675d1c25dbedaccbb135dc8ccd784e6706aa4aaa (patch) | |
tree | 6b3aa7679bb798df06a97a8067202b6b10438328 /filter/filter-editor.c | |
parent | d83721f8b79ba10df2d067d7d0384c1a0790574e (diff) | |
download | gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.tar gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.tar.gz gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.tar.bz2 gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.tar.lz gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.tar.xz gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.tar.zst gsoc2013-evolution-675d1c25dbedaccbb135dc8ccd784e6706aa4aaa.zip |
Functions for memory management.
2000-02-24 NotZed <NotZed@HelixCode.com>
* filter-xml.c (filter_description_free):
(filter_load_ruleset_free):
(filter_load_optionset_free): Functions for memory management.
* filter-arg.c (filter_arg_copy): Copy the values of one arg into
another.
* filter-druid.c:
(option_name_changed): Update the option's description as the user
enters it in.
svn path=/trunk/; revision=1929
Diffstat (limited to 'filter/filter-editor.c')
-rw-r--r-- | filter/filter-editor.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/filter/filter-editor.c b/filter/filter-editor.c index d37769359f..1d68276b73 100644 --- a/filter/filter-editor.c +++ b/filter/filter-editor.c @@ -35,6 +35,7 @@ struct _FilterEditorPrivate { GtkWidget *edit, *add, *remove, *up, *down; /* for sub-druid */ + struct filter_option *druid_option; GtkWidget *druid_dialogue; FilterDruid *druid_druid; }; @@ -125,7 +126,20 @@ druid_dialogue_clicked(GnomeDialog *d, int button, FilterEditor *e) printf("Finish!\n"); if (p->druid_druid->option_current) { /* FIXME: this should be copied? */ - e->useroptions = g_list_append(e->useroptions, p->druid_druid->option_current); + if (p->druid_option) { + GList *node; + + node = g_list_find(e->useroptions, p->druid_option); + if (node) { + /* FIXME: memleak, should copy */ + node->data = p->druid_druid->option_current; + } else { + g_warning("Cannot find node I edited, appending instead"); + e->useroptions = g_list_append(e->useroptions, p->druid_druid->option_current); + } + } else { + e->useroptions = g_list_append(e->useroptions, p->druid_druid->option_current); + } filter_druid_set_rules(p->druid, e->useroptions, e->rules, NULL); } case 3: @@ -182,6 +196,8 @@ add_or_edit(FilterEditor *e, struct filter_option *option) druid_dialogue_clicked(dialogue, 1, e); } + p->druid_option = option; + gtk_signal_connect(druid, "option_selected", druid_dialogue_option_selected, e); gtk_widget_show(druid); |