From: Charles Lehner Date: Fri, 17 Jul 2015 04:01:15 +0000 (-0400) Subject: managesieve: if new script name is in use, open existing script X-Git-Tag: 3.12.0~15 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=7af42c87bcc37e66ca181a969b3ba113d1267059 managesieve: if new script name is in use, open existing script This is better than opening a blank script which will overwrite the existing one when it is saved --- diff --git a/src/plugins/managesieve/sieve_manager.c b/src/plugins/managesieve/sieve_manager.c index b6d92c114..65e6dbfe8 100644 --- a/src/plugins/managesieve/sieve_manager.c +++ b/src/plugins/managesieve/sieve_manager.c @@ -59,6 +59,7 @@ typedef struct { gchar *filter_name; } CommandDataName; +static void filter_got_load_error(SieveSession *session, gpointer data); static void account_changed(GtkWidget *widget, SieveManagerPage *page); static void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page); static gboolean sieve_manager_deleted(GtkWidget *widget, GdkEvent *event, @@ -145,6 +146,7 @@ static gchar *filters_list_get_selected_filter(GtkWidget *list_view) static void filter_add(GtkWidget *widget, SieveManagerPage *page) { SieveSession *session = page->active_session; + SieveEditorPage *editor; if (!session) return; gchar *filter_name = input_dialog(_("Add Sieve script"), @@ -152,7 +154,17 @@ static void filter_add(GtkWidget *widget, SieveManagerPage *page) if (!filter_name || !filter_name[0]) return; - sieve_editor_show(sieve_editor_new(session, filter_name)); + editor = sieve_editor_get(session, filter_name); + if (editor) { + /* TODO: show error that filter already exists */ + sieve_editor_present(editor); + g_free(filter_name); + sieve_editor_load(editor, + (sieve_session_cb_fn)filter_got_load_error, page); + } else { + editor = sieve_editor_new(session, filter_name); + sieve_editor_show(editor); + } } static void filter_got_load_error(SieveSession *session, gpointer data)