# HG changeset patch # User William Ehlhardt # Date 1185525280 0 # Node ID 95a8469cd1e36b753e17a15c07a25fe9e2196d02 # Parent 78f185af795230b3e2d60aa8d77af4afc9278381 - tls_peers certmgr now responds to certificate-stored, certificate-deleted signals diff -r 78f185af7952 -r 95a8469cd1e3 pidgin/gtkcertmgr.c --- a/pidgin/gtkcertmgr.c Fri Jul 27 08:24:25 2007 +0000 +++ b/pidgin/gtkcertmgr.c Fri Jul 27 08:34:40 2007 +0000 @@ -50,6 +50,7 @@ GtkWidget *exportbutton; GtkWidget *infobutton; GtkWidget *deletebutton; + PurpleCertificatePool *tls_peers; } tls_peers_mgmt_data; tls_peers_mgmt_data *tpm_dat = NULL; @@ -68,6 +69,7 @@ purple_debug_info("certmgr", "tls peers self-destructs\n"); + purple_signals_disconnect_by_handle(tpm_dat); g_free(tpm_dat); tpm_dat = NULL; } @@ -103,6 +105,14 @@ purple_certificate_pool_destroy_idlist(idlist); } +static void +tls_peers_mgmt_mod_cb(PurpleCertificatePool *pool, const gchar *id, gpointer data) +{ + g_assert (pool == tpm_dat->tls_peers); + + tls_peers_mgmt_repopulate_list(); +} + static GtkWidget * tls_peers_mgmt_build(void) { @@ -204,6 +214,18 @@ gtk_widget_set_sensitive(infobutton, FALSE); gtk_widget_set_sensitive(deletebutton, FALSE); + /* Bind us to the tls_peers pool */ + tpm_dat->tls_peers = purple_certificate_find_pool("x509", "tls_peers"); + + /**** libpurple signals ****/ + /* Respond to certificate add/remove by just reloading everything */ + purple_signal_connect(tpm_dat->tls_peers, "certificate-stored", + tpm_dat, PURPLE_CALLBACK(tls_peers_mgmt_mod_cb), + NULL); + purple_signal_connect(tpm_dat->tls_peers, "certificate-deleted", + tpm_dat, PURPLE_CALLBACK(tls_peers_mgmt_mod_cb), + NULL); + return mgmt_widget; }