diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2010-07-14 22:38:47 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2010-07-14 22:41:00 +0800 |
commit | a0fa7e70bba7a8b085a236fd12c77d1fedf02aaa (patch) | |
tree | 65c2ba4d63f8f30ebc5720e818df5d9c8700dc7f | |
parent | 1dc0de3a0306c2fcf05b8070fe5efcf1e16c3b5f (diff) | |
download | gsoc2013-evolution-a0fa7e70bba7a8b085a236fd12c77d1fedf02aaa.tar.gz gsoc2013-evolution-a0fa7e70bba7a8b085a236fd12c77d1fedf02aaa.tar.zst gsoc2013-evolution-a0fa7e70bba7a8b085a236fd12c77d1fedf02aaa.zip |
Bug 624237 - Fails to start when smartcard is inserted
-rw-r--r-- | smime/gui/certificate-manager.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/smime/gui/certificate-manager.c b/smime/gui/certificate-manager.c index 505ffaf30f..d76b74320f 100644 --- a/smime/gui/certificate-manager.c +++ b/smime/gui/certificate-manager.c @@ -973,9 +973,11 @@ load_certs (CertificateManagerData *cfm, CERT_DestroyCertList (certList); } -static void +static gboolean populate_ui (CertificateManagerData *cfm) { + /* This is an idle callback. */ + unload_certs (cfm, E_CERT_USER); load_certs (cfm, E_CERT_USER, add_user_cert); @@ -988,6 +990,8 @@ populate_ui (CertificateManagerData *cfm) /* expand all three trees */ gtk_tree_view_expand_all (GTK_TREE_VIEW (cfm->yourcerts_treeview)); gtk_tree_view_expand_all (GTK_TREE_VIEW (cfm->contactcerts_treeview)); + + return FALSE; } void @@ -1031,7 +1035,11 @@ certificate_manager_config_init (EShell *shell) initialize_contactcerts_ui(cfm_data); initialize_authoritycerts_ui(cfm_data); - populate_ui (cfm_data); + /* Run this in an idle callback so Evolution has a chance to + * fully initialize itself and start its main loop before we + * load certificates, since doing so may trigger a password + * dialog, and dialogs require a main loop. */ + g_idle_add ((GSourceFunc) populate_ui, cfm_data); widget = e_builder_get_widget (cfm_data->builder, "cert-manager-notebook"); g_object_ref (widget); |