diff options
-rw-r--r-- | mail/ChangeLog | 15 | ||||
-rw-r--r-- | mail/em-folder-browser.c | 9 | ||||
-rw-r--r-- | mail/em-folder-view.c | 2 | ||||
-rw-r--r-- | mail/em-popup.c | 13 | ||||
-rw-r--r-- | mail/em-popup.h | 1 |
5 files changed, 36 insertions, 4 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 6f3ec334ab..d568017fb6 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,5 +1,20 @@ 2004-02-17 Not Zed <NotZed@Ximian.com> + ** See bug #54200. + + * em-popup.c (em_popup_target_new_select): add + EM_POPUP_SELECT_FOLDER - to find out if we have a folder at + all. Handle getting a NULL folder passed in. + + * em-folder-view.c (em_folder_view_get_popup_target): Added + EM_FOLDER_VIEW_SELECT_FOLDER - to detect when we dont have a + folder set on the emfolderview. + + * em-folder-browser.c (emfb_mark_all_read): if we don't have a + folder, dont try and run. + (emfb_enable_map[]): Disable a bunch of stuff we have no + folder set. + * importers/pine-importer.c (import_contact): fix for the weird-arsed e-contact list api. and fix a small memleak. diff --git a/mail/em-folder-browser.c b/mail/em-folder-browser.c index 745c44fa17..09d2a9b45e 100644 --- a/mail/em-folder-browser.c +++ b/mail/em-folder-browser.c @@ -562,7 +562,10 @@ emfb_mark_all_read(BonoboUIComponent *uid, void *data, const char *path) EMFolderView *emfv = data; GPtrArray *uids; int i; - + + if (emfv->folder == NULL) + return; + uids = camel_folder_get_uids(emfv->folder); camel_folder_freeze(emfv->folder); for (i=0;i<uids->len;i++) @@ -709,7 +712,11 @@ static EPixmap emfb_pixmaps[] = { }; static const EMFolderViewEnable emfb_enable_map[] = { + { "EditInvertSelection", EM_POPUP_SELECT_FOLDER }, + { "EditSelectAll", EM_POPUP_SELECT_FOLDER }, { "EditSelectThread", EM_FOLDER_VIEW_SELECT_THREADED }, + { "MailPost", EM_POPUP_SELECT_FOLDER }, + { "MessageMarkAllAsRead", EM_POPUP_SELECT_FOLDER }, { "ViewHideSelected", EM_POPUP_SELECT_MANY }, { "ViewShowAll", EM_FOLDER_VIEW_SELECT_HIDDEN }, { NULL }, diff --git a/mail/em-folder-view.c b/mail/em-folder-view.c index 8c8deec7f1..0bad8e0221 100644 --- a/mail/em-folder-view.c +++ b/mail/em-folder-view.c @@ -1413,7 +1413,7 @@ static EPixmap emfv_message_pixmaps[] = { static const EMFolderViewEnable emfv_enable_map[] = { { "EditCut", EM_POPUP_SELECT_MANY }, { "EditCopy", EM_POPUP_SELECT_MANY }, - { "EditPaste", 0 }, + { "EditPaste", EM_POPUP_SELECT_FOLDER }, /* FIXME: should these be single-selection? */ { "MailNext", EM_POPUP_SELECT_MANY }, diff --git a/mail/em-popup.c b/mail/em-popup.c index 58fbd9d2d8..4a8d86aeec 100644 --- a/mail/em-popup.c +++ b/mail/em-popup.c @@ -461,9 +461,17 @@ em_popup_target_new_select(struct _CamelFolder *folder, const char *folder_uri, t->type = EM_POPUP_TARGET_SELECT; t->data.select.uids = uids; t->data.select.folder = folder; - camel_object_ref(folder); t->data.select.folder_uri = g_strdup(folder_uri); + if (folder == NULL) { + t->mask = mask; + + return t; + } + + camel_object_ref(folder); + mask &= ~EM_POPUP_SELECT_FOLDER; + if (em_utils_folder_is_sent(folder, folder_uri)) mask &= ~EM_POPUP_SELECT_RESEND; @@ -635,7 +643,8 @@ em_popup_target_free(EMPopupTarget *t) { switch (t->type) { case EM_POPUP_TARGET_SELECT: - camel_object_unref(t->data.select.folder); + if (t->data.select.folder) + camel_object_unref(t->data.select.folder); g_free(t->data.select.folder_uri); if (t->data.select.uids) em_utils_uids_free(t->data.select.uids); diff --git a/mail/em-popup.h b/mail/em-popup.h index f71d312b90..88a4ff83ab 100644 --- a/mail/em-popup.h +++ b/mail/em-popup.h @@ -90,6 +90,7 @@ enum { EM_POPUP_SELECT_ADD_SENDER = 1<<14, EM_POPUP_SELECT_MARK_JUNK = 1<<15, EM_POPUP_SELECT_MARK_NOJUNK = 1<<16, + EM_POPUP_SELECT_FOLDER = 1<<17, /* do we have any folder at all? */ EM_POPUP_SELECT_LAST = 1<<18 /* reserve 2 slots */ }; |