aboutsummaryrefslogtreecommitdiffstats
path: root/composer
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2011-06-24 00:30:36 +0800
committerMilan Crha <mcrha@redhat.com>2011-06-24 00:30:36 +0800
commit4778e69589b8d5fca5b59cdb664b8e6e39a4697f (patch)
tree638161bcfa62d0a39a3f33b4979acb7a38159b5f /composer
parent4aff7a476d813922b5ded6a72a10b38f3ddfe006 (diff)
downloadgsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar.gz
gsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar.zst
gsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.zip
Postpone ENameSelector loading as much as possible
Also fixes few memory leaks around ENameSelector and cancels loading of its address books when not needed any more.
Diffstat (limited to 'composer')
-rw-r--r--composer/e-composer-header-table.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c
index 78404a62e7..c87abcf307 100644
--- a/composer/e-composer-header-table.c
+++ b/composer/e-composer-header-table.c
@@ -825,6 +825,7 @@ composer_header_table_dispose (GObject *object)
}
if (priv->name_selector != NULL) {
+ e_name_selector_cancel_loading (priv->name_selector);
g_object_unref (priv->name_selector);
priv->name_selector = NULL;
}
@@ -991,6 +992,17 @@ e_composer_header_table_class_init (EComposerHeaderTableClass *class)
}
static void
+composer_header_table_realize_cb (EComposerHeaderTable *table)
+{
+ g_return_if_fail (table != NULL);
+ g_return_if_fail (table->priv != NULL);
+
+ g_signal_handlers_disconnect_by_func (table, composer_header_table_realize_cb, NULL);
+
+ e_name_selector_load_books (table->priv->name_selector);
+}
+
+static void
e_composer_header_table_init (EComposerHeaderTable *table)
{
EComposerHeader *header;
@@ -1064,6 +1076,9 @@ e_composer_header_table_init (EComposerHeaderTable *table)
header->input_widget, "visible",
G_BINDING_SYNC_CREATE);
}
+
+ /* postpone name_selector loading, do that only when really needed */
+ g_signal_connect (table, "realize", G_CALLBACK (composer_header_table_realize_cb), NULL);
}
GtkWidget *