talons

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

commit 367d6a780ea707df1ab4ce9da7201598bc1718ad
parent dde1c4531b1dd320bc893c5af2d9f7cc20308879
Author: Charles Lehner <cel@celehner.com>
Date:   Thu, 16 Jul 2015 21:34:02 -0400

managesieve: discard manager window's callbacks when it closes

Diffstat:
Msrc/plugins/managesieve/sieve_manager.c | 16++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/plugins/managesieve/sieve_manager.c b/src/plugins/managesieve/sieve_manager.c @@ -60,7 +60,9 @@ typedef struct { } CommandDataName; static void account_changed(GtkWidget *widget, SieveManagerPage *page); -void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page); +static void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page); +static gboolean sieve_manager_deleted(GtkWidget *widget, GdkEvent *event, + SieveManagerPage *page); static void filter_set_active(SieveManagerPage *page, gchar *filter_name); gboolean filter_find_by_name (GtkTreeModel *model, GtkTreeIter *iter, gchar *filter_name); @@ -634,6 +636,8 @@ static SieveManagerPage *sieve_manager_page_new() G_CALLBACK (manager_key_pressed), page); g_signal_connect (G_OBJECT(window), "size_allocate", G_CALLBACK (size_allocate_cb), NULL); + g_signal_connect (G_OBJECT(window), "delete_event", + G_CALLBACK (sieve_manager_deleted), page); if (!geometry.min_height) { geometry.min_width = 350; @@ -766,7 +770,14 @@ static SieveManagerPage *sieve_manager_page_new() return page; } -void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page) +static gboolean sieve_manager_deleted(GtkWidget *widget, GdkEvent *event, + SieveManagerPage *page) +{ + sieve_manager_done(page); + return FALSE; +} + +static void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page) { sieve_manager_done(page); } @@ -774,6 +785,7 @@ void sieve_manager_close(GtkWidget *widget, SieveManagerPage *page) void sieve_manager_done(SieveManagerPage *page) { manager_pages = g_slist_remove(manager_pages, page); + sieve_sessions_discard_callbacks(page); gtk_widget_destroy(page->window); g_free(page); }