aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--my-evolution/ChangeLog15
-rw-r--r--my-evolution/e-summary-mail.c4
-rw-r--r--my-evolution/e-summary-offline-handler.c15
-rw-r--r--my-evolution/e-summary-rdf.c13
-rw-r--r--my-evolution/e-summary-weather.c12
-rw-r--r--my-evolution/e-summary.c6
6 files changed, 58 insertions, 7 deletions
diff --git a/my-evolution/ChangeLog b/my-evolution/ChangeLog
index 9204d054cd..98334158a9 100644
--- a/my-evolution/ChangeLog
+++ b/my-evolution/ChangeLog
@@ -1,3 +1,18 @@
+2001-10-26 Iain Holmes <iain@ximian.com>
+
+ * e-summary-rdf.c (open_callback): NULL the handle after a failed
+ open so the offline handler won't think they're still open.
+ (e_summary_rdf_set_online): Cancel all the open connections when the
+ summary goes offline.
+
+ * e-summary-weather.c (open_callback): NULL the handle after a failed
+ open so the offline handler won't think they're still open.
+ (e_summary_weather_set_online): Cancel all the open connections when the
+ summary goes offline.
+
+ * e-summary.c (e_summary_set_online): Call the callback if it's not
+ NULL.
+
2001-10-25 Jon Trowbridge <trow@ximian.com>
* e-summary-tasks.c (sort_uids): It is possible for
diff --git a/my-evolution/e-summary-mail.c b/my-evolution/e-summary-mail.c
index 149678b51d..27668ac198 100644
--- a/my-evolution/e-summary-mail.c
+++ b/my-evolution/e-summary-mail.c
@@ -564,6 +564,10 @@ e_summary_mail_free (ESummary *summary)
mail = summary->mail;
bonobo_object_release_unref (mail->folder_info, NULL);
+ mail->folder_info = CORBA_OBJECT_NIL;
+
+ gtk_signal_disconnect_by_func (GTK_OBJECT (mail->listener),
+ GTK_SIGNAL_FUNC (mail_change_notify), summary);
bonobo_object_unref (BONOBO_OBJECT (mail->listener));
g_hash_table_foreach (mail->folders, free_folder, NULL);
diff --git a/my-evolution/e-summary-offline-handler.c b/my-evolution/e-summary-offline-handler.c
index b0b1bc5efc..f338aad93c 100644
--- a/my-evolution/e-summary-offline-handler.c
+++ b/my-evolution/e-summary-offline-handler.c
@@ -51,9 +51,10 @@ e_summary_offline_handler_create_connection_list (ESummary *summary)
list = GNOME_Evolution_ConnectionList__alloc ();
list->_length = 0;
- list->_maximum = e_summary_count_connections (summary);
+ list->_maximum = e_summary_count_connections (summary) + 1;
list->_buffer = CORBA_sequence_GNOME_Evolution_Connection_allocbuf (list->_maximum);
+ g_print ("_length: %d\n_maximum: %d\n", list->_length, list->_maximum);
connections = e_summary_add_connections (summary);
for (p = connections; p; p = p->next) {
ESummaryConnectionData *data;
@@ -116,13 +117,13 @@ went_offline (ESummary *summary,
CORBA_exception_init (&ev);
g_warning ("Went offline");
- GNOME_Evolution_OfflineProgressListener_updateProgress (priv->listener_interface, connection_list, &ev);
- if (BONOBO_EX (&ev)) {
- g_warning ("Error updating offline progress: %s",
- CORBA_exception_id (&ev));
- }
+ GNOME_Evolution_OfflineProgressListener_updateProgress (priv->listener_interface, connection_list, &ev);
+ if (BONOBO_EX (&ev)) {
+ g_warning ("Error updating offline progress: %s",
+ CORBA_exception_id (&ev));
+ }
- CORBA_exception_free (&ev);
+ CORBA_exception_free (&ev);
}
static void
diff --git a/my-evolution/e-summary-rdf.c b/my-evolution/e-summary-rdf.c
index 97e95a873a..498717e3c1 100644
--- a/my-evolution/e-summary-rdf.c
+++ b/my-evolution/e-summary-rdf.c
@@ -411,6 +411,7 @@ open_callback (GnomeVFSAsyncHandle *handle,
if (result != GNOME_VFS_OK) {
char *str;
+ r->handle = NULL;
g_free (r->html);
str = g_strdup_printf ("<b>%s:</b><br>%s", _("Error downloading RDF"),
r->uri);
@@ -456,6 +457,7 @@ e_summary_rdf_update (ESummary *summary)
rdf->string = NULL;
}
+ g_warning ("Opening %s", rdf->uri);
gnome_vfs_async_open (&rdf->handle, rdf->uri,
GNOME_VFS_OPEN_READ,
(GnomeVFSAsyncOpenCallback) open_callback, rdf);
@@ -581,6 +583,7 @@ e_summary_rdf_set_online (ESummary *summary,
void *data)
{
ESummaryRDF *rdf;
+ GList *p;
rdf = summary->rdf;
if (rdf->online == online) {
@@ -593,6 +596,16 @@ e_summary_rdf_set_online (ESummary *summary,
(GtkFunction) e_summary_rdf_update,
summary);
} else {
+ for (p = rdf->rdfs; p; p = p->next) {
+ RDF *r;
+
+ r = p->data;
+ if (r->handle) {
+ gnome_vfs_async_cancel (r->handle);
+ r->handle = NULL;
+ }
+ }
+
gtk_timeout_remove (rdf->timeout);
rdf->timeout = 0;
}
diff --git a/my-evolution/e-summary-weather.c b/my-evolution/e-summary-weather.c
index 0b86471077..4b8105b31d 100644
--- a/my-evolution/e-summary-weather.c
+++ b/my-evolution/e-summary-weather.c
@@ -353,6 +353,7 @@ open_callback (GnomeVFSAsyncHandle *handle,
w->html = g_strdup ("<dd> </dd>");
}
+ w->handle = NULL;
e_summary_draw (w->summary);
return;
}
@@ -590,6 +591,7 @@ e_summary_weather_set_online (ESummary *summary,
void *data)
{
ESummaryWeather *weather;
+ GList *p;
weather = summary->weather;
if (weather->online == online) {
@@ -602,6 +604,16 @@ e_summary_weather_set_online (ESummary *summary,
(GtkFunction) e_summary_weather_update,
summary);
} else {
+ for (p = weather->weathers; p; p = p->next) {
+ Weather *w;
+
+ w = p->data;
+ if (w->handle) {
+ gnome_vfs_async_cancel (w->handle);
+ w->handle = NULL;
+ }
+ }
+
gtk_timeout_remove (weather->timeout);
weather->timeout = 0;
}
diff --git a/my-evolution/e-summary.c b/my-evolution/e-summary.c
index 952976cd45..d11c85a25d 100644
--- a/my-evolution/e-summary.c
+++ b/my-evolution/e-summary.c
@@ -777,6 +777,7 @@ e_summary_count_connections (ESummary *summary)
count += c->count (summary, c->closure);
}
+ g_print ("Count: %d", count);
return count;
}
@@ -824,6 +825,11 @@ e_summary_set_online (ESummary *summary,
c->callback_closure = closure;
c->set_online (summary, progress, online, c->closure);
+ g_print ("Setting %s\n", online ? "online" : "offline");
+
+ if (callback != NULL) {
+ callback (summary, closure);
+ }
}
}