From ce193f65868f23a354925b92626325a72c047e06 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Tue, 21 May 2002 06:30:38 +0000 Subject: Do async_open_folder in an idle callback. 2002-05-21 Christopher James Lahey * e-corba-storage.c (async_open_folder_idle): Do async_open_folder in an idle callback. * e-shell-shared-folder-picker-dialog.c (user_clicked), glade/e-shell-shared-folder-picker-dialog.glade: Added a select names button here. svn path=/trunk/; revision=16964 --- shell/e-corba-storage.c | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) (limited to 'shell/e-corba-storage.c') diff --git a/shell/e-corba-storage.c b/shell/e-corba-storage.c index 8caaac7776..0dd61461df 100644 --- a/shell/e-corba-storage.c +++ b/shell/e-corba-storage.c @@ -262,6 +262,8 @@ destroy (GtkObject *object) g_free (priv); + corba_storage->priv = NULL; + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -455,21 +457,44 @@ async_xfer_folder (EStorage *storage, CORBA_exception_free (&ev); } -static void -async_open_folder (EStorage *storage, - const char *path) +static gboolean +async_open_folder_idle (gpointer data) { + gpointer *pair = data; + + EStorage *storage = pair[0]; + char *path = pair[1]; + ECorbaStorage *corba_storage; - ECorbaStoragePrivate *priv; CORBA_Environment ev; corba_storage = E_CORBA_STORAGE (storage); - priv = corba_storage->priv; - CORBA_exception_init (&ev); - GNOME_Evolution_Storage_asyncOpenFolder (priv->storage_interface, - path, &ev); - CORBA_exception_free (&ev); + if (corba_storage->priv != NULL) { + + CORBA_exception_init (&ev); + GNOME_Evolution_Storage_asyncOpenFolder (corba_storage->priv->storage_interface, + path, &ev); + CORBA_exception_free (&ev); + } + + gtk_object_unref (GTK_OBJECT (storage)); + g_free (path); + g_free (pair); + + return FALSE; +} + +static void +async_open_folder (EStorage *storage, + const char *path) +{ + gpointer *pair = g_new (gpointer, 2); + pair[0] = storage; + gtk_object_ref (GTK_OBJECT (storage)); + pair[1] = g_strdup (path); + + g_idle_add (async_open_folder_idle, pair); } -- cgit v1.2.3