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:
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 */