aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs
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 /calendar/gui/dialogs
parent4aff7a476d813922b5ded6a72a10b38f3ddfe006 (diff)
downloadgsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar
gsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar.gz
gsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar.bz2
gsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar.lz
gsoc2013-evolution-4778e69589b8d5fca5b59cdb664b8e6e39a4697f.tar.xz
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 'calendar/gui/dialogs')
-rw-r--r--calendar/gui/dialogs/alarm-dialog.c5
-rw-r--r--calendar/gui/dialogs/e-delegate-dialog.c2
-rw-r--r--calendar/gui/dialogs/memo-page.c6
3 files changed, 13 insertions, 0 deletions
diff --git a/calendar/gui/dialogs/alarm-dialog.c b/calendar/gui/dialogs/alarm-dialog.c
index 564c4dd1f4..ec57b11657 100644
--- a/calendar/gui/dialogs/alarm-dialog.c
+++ b/calendar/gui/dialogs/alarm-dialog.c
@@ -903,6 +903,7 @@ setup_select_names (Dialog *dialog)
ENameSelectorDialog *name_selector_dialog;
dialog->name_selector = e_name_selector_new ();
+ e_name_selector_load_books (dialog->name_selector);
name_selector_model = e_name_selector_peek_model (dialog->name_selector);
e_name_selector_model_add_section (name_selector_model, section_name, section_name, NULL);
@@ -1229,6 +1230,10 @@ alarm_dialog_run (GtkWidget *parent, ECalClient *cal_client, ECalComponentAlarm
if (response_id == GTK_RESPONSE_OK)
dialog_to_alarm (&dialog);
+ if (dialog.name_selector) {
+ e_name_selector_cancel_loading (dialog.name_selector);
+ g_object_unref (dialog.name_selector);
+ }
gtk_widget_destroy (dialog.toplevel);
g_object_unref (dialog.builder);
diff --git a/calendar/gui/dialogs/e-delegate-dialog.c b/calendar/gui/dialogs/e-delegate-dialog.c
index 2bca1c908b..da6eeea05d 100644
--- a/calendar/gui/dialogs/e-delegate-dialog.c
+++ b/calendar/gui/dialogs/e-delegate-dialog.c
@@ -96,6 +96,7 @@ e_delegate_dialog_finalize (GObject *object)
edd = E_DELEGATE_DIALOG (object);
priv = edd->priv;
+ e_name_selector_cancel_loading (priv->name_selector);
g_object_unref (priv->name_selector);
/* Destroy the actual dialog. */
@@ -137,6 +138,7 @@ e_delegate_dialog_construct (EDelegateDialog *edd, const gchar *name, const gcha
}
priv->name_selector = e_name_selector_new ();
+ e_name_selector_load_books (priv->name_selector);
name_selector_model = e_name_selector_peek_model (priv->name_selector);
e_name_selector_model_add_section (name_selector_model, section_name, section_name, NULL);
diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c
index d720e91b1d..3a53421dd5 100644
--- a/calendar/gui/dialogs/memo-page.c
+++ b/calendar/gui/dialogs/memo-page.c
@@ -202,6 +202,12 @@ memo_page_finalize (GObject *object)
priv = MEMO_PAGE (object)->priv;
+ if (priv->name_selector) {
+ e_name_selector_cancel_loading (priv->name_selector);
+ g_object_unref (priv->name_selector);
+ priv->name_selector = NULL;
+ }
+
if (priv->main != NULL) {
g_object_unref (priv->main);
priv->main = NULL;