[evolution-patches] patch to make 'cancel' work for imap on send/receive dialogue window
- From: Not Zed <notzed ximian com>
- To: evolution-patches ximian com
- Subject: [evolution-patches] patch to make 'cancel' work for imap on send/receive dialogue window
- Date: 29 Jul 2003 16:50:59 -0400
Worked out why the cancel button wasn't working - various tasks
performed under the banner of 'checking for new mail' were run with
their own cancellation port, so the buttons cancel just went no-where.
This patch should address it.
One side-effect is that the popup-window will now contain more info
about the sync process - however, some of the text is longer and so may
resize the window in unattractive ways.
Michael
Index: mail/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/mail/ChangeLog,v
retrieving revision 1.2761.2.7
diff -u -3 -r1.2761.2.7 ChangeLog
--- mail/ChangeLog 28 Jul 2003 21:01:33 -0000 1.2761.2.7
+++ mail/ChangeLog 29 Jul 2003 20:47:09 -0000
@@ -1,3 +1,16 @@
+2003-07-29 Not Zed <NotZed Ximian com>
+
+ * mail-folder-cache.c (mail_note_store): add a CamelOperation for
+ overriding status handler.
+
+ * mail-send-recv.c (receive_update_got_store): Pass our own cancel
+ handle to get_folderinfo and mail_note_store.
+ (mail_send_receive, mail_receive_uri): Same for get_store.
+
+ * mail-ops.c (mail_get_store, mail_get_folderinfo): Add a
+ CamelOperation argument, for overriding the status handler. Fixed
+ most calles to pass NULL to use the default.
+
2003-07-25 Jeffrey Stedfast <fejj ximian com>
* message-browser.c (on_key_press): New callback function to
Index: mail/component-factory.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/component-factory.c,v
retrieving revision 1.328.4.1
diff -u -3 -r1.328.4.1 component-factory.c
--- mail/component-factory.c 15 Jul 2003 19:47:57 -0000 1.328.4.1
+++ mail/component-factory.c 29 Jul 2003 20:47:09 -0000
@@ -1345,7 +1345,7 @@
const char *path,
CamelStore *store)
{
- mail_note_store (CAMEL_STORE (store), storage, CORBA_OBJECT_NIL,
+ mail_note_store (CAMEL_STORE (store), NULL, storage, CORBA_OBJECT_NIL,
storage_connected, listener);
}
@@ -1369,7 +1369,7 @@
evolution_storage_has_subfolders (storage, "/", _("Connecting..."));
mail_hash_storage (store, storage);
/*if (auto_connect)*/
- mail_note_store ((CamelStore *) store, storage, CORBA_OBJECT_NIL, NULL, NULL);
+ mail_note_store ((CamelStore *) store, NULL, storage, CORBA_OBJECT_NIL, NULL, NULL);
/* falllll */
case EVOLUTION_STORAGE_ERROR_ALREADYREGISTERED:
case EVOLUTION_STORAGE_ERROR_EXISTS:
Index: mail/mail-account-gui.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-account-gui.c,v
retrieving revision 1.133
diff -u -3 -r1.133 mail-account-gui.c
--- mail/mail-account-gui.c 11 Jun 2003 16:19:34 -0000 1.133
+++ mail/mail-account-gui.c 29 Jul 2003 20:47:09 -0000
@@ -2001,7 +2001,7 @@
component, then get the CamelStore and add it to
the shell storages */
if (is_storage && account->enabled)
- mail_get_store (account->source->url, add_new_store, account);
+ mail_get_store (account->source->url, NULL, add_new_store, account);
if (gtk_toggle_button_get_active (gui->default_account))
mail_config_set_default_account (account);
Index: mail/mail-folder-cache.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-folder-cache.c,v
retrieving revision 1.69
diff -u -3 -r1.69 mail-folder-cache.c
--- mail/mail-folder-cache.c 2 Jun 2003 17:50:25 -0000 1.69
+++ mail/mail-folder-cache.c 29 Jul 2003 20:47:09 -0000
@@ -809,7 +809,7 @@
if (g_hash_table_lookup(stores, store) != NULL) {
/* re-use the cancel id. we're already in the store update list too */
- ud->id = mail_get_folderinfo(store, update_folders, ud);
+ ud->id = mail_get_folderinfo(store, NULL, update_folders, ud);
} else {
/* the store vanished, that means we were probably cancelled, or at any rate,
need to clean ourselves up */
@@ -820,7 +820,7 @@
}
void
-mail_note_store(CamelStore *store, EvolutionStorage *storage, GNOME_Evolution_Storage corba_storage,
+mail_note_store(CamelStore *store, CamelOperation *op, EvolutionStorage *storage, GNOME_Evolution_Storage corba_storage,
void (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
{
struct _store_info *si;
@@ -887,7 +887,7 @@
ud = g_malloc (sizeof (*ud));
ud->done = done;
ud->data = data;
- ud->id = mail_get_folderinfo (store, update_folders, ud);
+ ud->id = mail_get_folderinfo (store, op, update_folders, ud);
e_dlist_addtail (&si->folderinfo_updates, (EDListNode *) ud);
}
Index: mail/mail-folder-cache.h
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-folder-cache.h,v
retrieving revision 1.11
diff -u -3 -r1.11 mail-folder-cache.h
--- mail/mail-folder-cache.h 27 Oct 2001 00:47:21 -0000 1.11
+++ mail/mail-folder-cache.h 29 Jul 2003 20:47:09 -0000
@@ -31,7 +31,7 @@
The folders are scanned from the store, and/or added at
runtime via the folder_created event */
void
-mail_note_store(CamelStore *store, EvolutionStorage *storage, GNOME_Evolution_Storage corba_storage,
+mail_note_store(CamelStore *store, CamelOperation *op, EvolutionStorage *storage, GNOME_Evolution_Storage corba_storage,
void (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data);
/* de-note a store */
Index: mail/mail-local.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-local.c,v
retrieving revision 1.132
diff -u -3 -r1.132 mail-local.c
--- mail/mail-local.c 2 Jun 2003 17:27:27 -0000 1.132
+++ mail/mail-local.c 29 Jul 2003 20:47:09 -0000
@@ -1218,7 +1218,7 @@
}
/* setup to record this store's changes */
- mail_note_store((CamelStore *)global_local_store, NULL, local_corba_storage, NULL, NULL);
+ mail_note_store((CamelStore *)global_local_store, NULL, NULL, local_corba_storage, NULL, NULL);
local_storage_listener = evolution_storage_listener_new ();
corba_local_storage_listener = evolution_storage_listener_corba_objref (
Index: mail/mail-offline-handler.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-offline-handler.c,v
retrieving revision 1.12
diff -u -3 -r1.12 mail-offline-handler.c
--- mail/mail-offline-handler.c 16 May 2003 18:52:14 -0000 1.12
+++ mail/mail-offline-handler.c 29 Jul 2003 20:47:09 -0000
@@ -270,7 +270,7 @@
if (service_is_relevant (CAMEL_SERVICE (store), FALSE)) {
mail_store_set_offline (store, FALSE, NULL, NULL);
- mail_note_store (store, NULL, CORBA_OBJECT_NIL,
+ mail_note_store (store, NULL, NULL, CORBA_OBJECT_NIL,
NULL, NULL);
}
}
Index: mail/mail-ops.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-ops.c,v
retrieving revision 1.392
diff -u -3 -r1.392 mail-ops.c
--- mail/mail-ops.c 2 Jun 2003 17:50:25 -0000 1.392
+++ mail/mail-ops.c 29 Jul 2003 20:47:09 -0000
@@ -1167,12 +1167,17 @@
};
int
-mail_get_folderinfo (CamelStore *store, void (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
+mail_get_folderinfo (CamelStore *store, CamelOperation *op, void (*done)(CamelStore *store, CamelFolderInfo *info, void *data), void *data)
{
struct _get_folderinfo_msg *m;
int id;
m = mail_msg_new(&get_folderinfo_op, NULL, sizeof(*m));
+ if (op) {
+ camel_operation_unref(m->msg.cancel);
+ m->msg.cancel = op;
+ camel_operation_ref(op);
+ }
m->store = store;
camel_object_ref(store);
m->done = done;
@@ -1379,12 +1384,17 @@
};
int
-mail_get_store (const char *uri, void (*done) (char *uri, CamelStore *store, void *data), void *data)
+mail_get_store (const char *uri, CamelOperation *op, void (*done) (char *uri, CamelStore *store, void *data), void *data)
{
struct _get_store_msg *m;
int id;
m = mail_msg_new (&get_store_op, NULL, sizeof (*m));
+ if (op) {
+ camel_operation_unref(m->msg.cancel);
+ m->msg.cancel = op;
+ camel_operation_ref(op);
+ }
m->uri = g_strdup (uri);
m->data = data;
m->done = done;
Index: mail/mail-ops.h
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-ops.h,v
retrieving revision 1.60
diff -u -3 -r1.60 mail-ops.h
--- mail/mail-ops.h 2 Jun 2003 17:50:26 -0000 1.60
+++ mail/mail-ops.h 29 Jul 2003 20:47:09 -0000
@@ -68,7 +68,7 @@
EThread *thread);
/* and for a store */
-int mail_get_store (const char *uri,
+int mail_get_store (const char *uri, CamelOperation *op,
void (*done) (char *uri, CamelStore *store, void *data), void *data);
/* build an attachment */
@@ -94,7 +94,7 @@
void *data);
/* get folder info asynchronously */
-int mail_get_folderinfo (CamelStore *store,
+int mail_get_folderinfo (CamelStore *store, CamelOperation *op,
void (*done)(CamelStore *store, CamelFolderInfo *info, void *data),
void *data);
Index: mail/mail-send-recv.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/mail-send-recv.c,v
retrieving revision 1.73
diff -u -3 -r1.73 mail-send-recv.c
--- mail/mail-send-recv.c 11 Jun 2003 23:02:09 -0000 1.73
+++ mail/mail-send-recv.c 29 Jul 2003 20:47:09 -0000
@@ -669,7 +669,7 @@
EvolutionStorage *storage = mail_lookup_storage (store);
if (storage) {
- mail_note_store(store, storage, CORBA_OBJECT_NIL, receive_update_done, info);
+ mail_note_store(store, info->cancel, storage, CORBA_OBJECT_NIL, receive_update_done, info);
/*bonobo_object_unref (BONOBO_OBJECT (storage));*/
} else {
/* If we get here, store must be an external
@@ -677,7 +677,7 @@
* Do a get_folder_info just to force it to
* update itself.
*/
- mail_get_folderinfo(store, receive_update_got_folderinfo, info);
+ mail_get_folderinfo(store, info->cancel, receive_update_got_folderinfo, info);
}
} else {
receive_done ("", info);
@@ -733,8 +733,7 @@
receive_done, info);
break;
case SEND_UPDATE:
- /* FIXME: error reporting? */
- mail_get_store(info->uri, receive_update_got_store, info);
+ mail_get_store(info->uri, info->cancel, receive_update_got_store, info);
break;
default:
g_assert_not_reached ();
@@ -900,8 +899,7 @@
receive_done, info);
break;
case SEND_UPDATE:
- /* FIXME: error reporting? */
- mail_get_store (info->uri, receive_update_got_store, info);
+ mail_get_store (info->uri, info->cancel, receive_update_got_store, info);
break;
default:
g_assert_not_reached ();
Index: mail/subscribe-dialog.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/subscribe-dialog.c,v
retrieving revision 1.89
diff -u -3 -r1.89 subscribe-dialog.c
--- mail/subscribe-dialog.c 16 Apr 2003 05:03:22 -0000 1.89
+++ mail/subscribe-dialog.c 29 Jul 2003 20:47:09 -0000
@@ -1139,7 +1139,7 @@
sd->store_func = func;
sd->store_data = user_data;
store_data_ref (sd);
- sd->request_id = mail_get_store (sd->uri, sd_got_store, sd);
+ sd->request_id = mail_get_store (sd->uri, NULL, sd_got_store, sd);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]