talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 53c39d90ebd1dbe46677c6edd14809b157a87f9a
parent 7af42c87bcc37e66ca181a969b3ba113d1267059
Author: Charles Lehner <cel@celehner.com>
Date:   Fri, 17 Jul 2015 01:04:38 -0400

managesieve: add newly created scripts to manager window list

Diffstat:
Msrc/plugins/managesieve/sieve_editor.c | 8++++++++
Msrc/plugins/managesieve/sieve_editor.h | 1+
Msrc/plugins/managesieve/sieve_manager.c | 12++++++++++++
Msrc/plugins/managesieve/sieve_manager.h | 2++
4 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/src/plugins/managesieve/sieve_editor.c b/src/plugins/managesieve/sieve_editor.c @@ -41,6 +41,7 @@ #include "mainwindow.h" #include "message_search.h" #include "managesieve.h" +#include "sieve_manager.h" #include "sieve_editor.h" GSList *editors = NULL; @@ -348,6 +349,13 @@ static void got_data_saved(SieveSession *session, gboolean abort, if (result->code == SIEVE_CODE_NONE) { result->description = _("Script saved successfully."); } + + if (page->is_new) { + /* notify manager windows of newly created script */ + page->is_new = FALSE; + sieve_manager_script_created(session, + page->script_name); + } } sieve_editor_update_status(page, result); } diff --git a/src/plugins/managesieve/sieve_editor.h b/src/plugins/managesieve/sieve_editor.h @@ -38,6 +38,7 @@ struct SieveEditorPage gboolean first_line; gboolean modified; gboolean closing; + gboolean is_new; /* callback for failure to load the script */ sieve_session_cb_fn on_load_error; diff --git a/src/plugins/managesieve/sieve_manager.c b/src/plugins/managesieve/sieve_manager.c @@ -163,6 +163,7 @@ static void filter_add(GtkWidget *widget, SieveManagerPage *page) (sieve_session_cb_fn)filter_got_load_error, page); } else { editor = sieve_editor_new(session, filter_name); + editor->is_new = TRUE; sieve_editor_show(editor); } } @@ -808,3 +809,14 @@ void sieve_manager_show() manager_pages = g_slist_prepend(manager_pages, page); gtk_widget_show_all(page->window); } + +void sieve_manager_script_created(SieveSession *session, const gchar *name) +{ + SieveManagerPage *page; + SieveScript script = {.name = (gchar *)name}; + GSList *cur; + + manager_sessions_foreach(cur, session, page) { + filters_list_insert_filter(page, &script); + } +} diff --git a/src/plugins/managesieve/sieve_manager.h b/src/plugins/managesieve/sieve_manager.h @@ -38,5 +38,7 @@ struct SieveManagerPage void sieve_manager_show(void); void sieve_manager_done(SieveManagerPage *page); +void sieve_manager_script_created(SieveSession *session, + const gchar *filter_name); #endif /* SIEVE_MANAGER_H */