diff options
-rw-r--r-- | mail/ChangeLog | 9 | ||||
-rw-r--r-- | mail/em-folder-tree.c | 19 | ||||
-rw-r--r-- | mail/em-format-html-display.c | 6 | ||||
-rw-r--r-- | mail/em-utils.c | 13 | ||||
-rw-r--r-- | mail/message-list.c | 10 |
5 files changed, 36 insertions, 21 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 6a056c25b0..8c18a6ab6e 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,12 @@ +2003-11-19 Jeffrey Stedfast <fejj@ximian.com> + + * em-utils.c (em_utils_selection_set_urilist): Same. + + * em-format-html-display.c (efhd_drag_data_get): Same as below. + + * em-folder-tree.c (drag_text_uri_list): Terminate each url of a + text/uri-list with a \r\n. + 2003-11-19 Ettore Perazzoli <ettore@ximian.com> * GNOME_Evolution_Mail.server.in.in: Add an diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 79c2ba0bd3..fc3de1f8ea 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -698,7 +698,7 @@ drag_text_uri_list (EMFolderTree *emft, CamelFolder *src, GtkSelectionData *sele const char *tmpdir; CamelStore *store; GPtrArray *uids; - char *url; + GString *url; if (!(tmpdir = e_mkdtemp ("drag-n-drop-XXXXXX"))) { camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, @@ -707,12 +707,13 @@ drag_text_uri_list (EMFolderTree *emft, CamelFolder *src, GtkSelectionData *sele return; } - url = g_strdup_printf ("mbox:%s", tmpdir); - if (!(store = camel_session_get_store (session, url, ex))) { + url = g_string_new ("mbox:"); + g_string_append (url, tmpdir); + if (!(store = camel_session_get_store (session, url->str, ex))) { camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create temporary mbox store: %s"), camel_exception_get_description (ex)); - g_free (url); + g_string_free (url, TRUE); return; } @@ -723,7 +724,7 @@ drag_text_uri_list (EMFolderTree *emft, CamelFolder *src, GtkSelectionData *sele camel_exception_get_description (ex)); camel_object_unref (store); - g_free (url); + g_string_free (url, TRUE); return; } @@ -737,13 +738,15 @@ drag_text_uri_list (EMFolderTree *emft, CamelFolder *src, GtkSelectionData *sele _("Could not copy messages to temporary mbox folder: %s"), camel_exception_get_description (ex)); } else { - memcpy (url, "file", 4); - gtk_selection_data_set (selection, selection->target, 8, url, strlen (url)); + /* replace "mbox:" with "file:" */ + memcpy (url->str, "file", 4); + g_string_append (url, "\r\n"); + gtk_selection_data_set (selection, selection->target, 8, url->str, url->len); } camel_folder_free_uids (src, uids); camel_object_unref (dest); - g_free (url); + g_string_free (url, TRUE); } static gboolean diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c index 779e70a69a..6aa74be4f1 100644 --- a/mail/em-format-html-display.c +++ b/mail/em-format-html-display.c @@ -984,10 +984,10 @@ efhd_drag_data_get(GtkWidget *w, GdkDragContext *drag, GtkSelectionData *data, g stream = camel_stream_mem_new(); /* TODO: shoudl format_format_text run on the content-object? */ /* TODO: should we just do format_content? */ - if (camel_content_type_is (((CamelDataWrapper *)part)->mime_type, "text", "*")) + if (camel_content_type_is (((CamelDataWrapper *)part)->mime_type, "text", "*")) { /* FIXME: this should be an em_utils method, it only needs a default charset param */ em_format_format_text((EMFormat *)pobject->format, stream, (CamelDataWrapper *)part); - else { + } else { CamelDataWrapper *dw = camel_medium_get_content_object((CamelMedium *)part); camel_data_wrapper_decode_to_stream(dw, stream); @@ -1010,7 +1010,7 @@ efhd_drag_data_get(GtkWidget *w, GdkDragContext *drag, GtkSelectionData *data, g if (path == NULL) return; - uri = g_strdup_printf("file://%s", path); + uri = g_strdup_printf("file://%s\r\n", path); g_free(path); gtk_selection_data_set(data, data->target, 8, uri, strlen(uri)); g_object_set_data_full((GObject *)w, "e-drag-uri", uri, g_free); diff --git a/mail/em-utils.c b/mail/em-utils.c index ab5c86c131..0519fe02a5 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -1837,7 +1837,7 @@ em_utils_selection_set_urilist(GtkSelectionData *data, CamelFolder *folder, GPtr { const char *tmpdir; CamelStream *fstream; - char *uri; + char *uri, *p; int fd; tmpdir = e_mkdtemp("drag-n-drop-XXXXXX"); @@ -1847,16 +1847,19 @@ em_utils_selection_set_urilist(GtkSelectionData *data, CamelFolder *folder, GPtr /* FIXME: this used to save a single message with the subject as the filename but it was unsafe, and makes this messier, the pain */ - - uri = alloca(strlen(tmpdir)+16); - sprintf(uri, "file:///%s/mbox", tmpdir); + + p = uri = g_alloca (strlen (tmpdir) + 16); + p += sprintf (uri, "file:///%s/mbox", tmpdir); fd = open(uri + 7, O_WRONLY | O_CREAT | O_EXCL, 0666); if (fd == -1) return; - + fstream = camel_stream_fs_new_with_fd(fd); if (fstream) { + /* terminate with \r\n to be compliant with the spec */ + strcpy (p, "\r\n"); + if (em_utils_write_messages_to_stream(folder, uids, fstream) == 0) gtk_selection_data_set(data, data->target, 8, uri, strlen(uri)); diff --git a/mail/message-list.c b/mail/message-list.c index 430d2f4896..7e62aa58f0 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1508,13 +1508,13 @@ ml_tree_drag_data_get (ETree *tree, int row, ETreePath path, int col, if (uids->len > 0) { switch (info) { - case 0 /*DND_TARGET_TYPE_X_UID_LIST */: + case 0 /* DND_TARGET_TYPE_X_UID_LIST */: em_utils_selection_set_uidlist(data, ml->folder_uri, uids); break; - case 1 /*DND_TARGET_TYPE_MESSAGE_RFC822*/: + case 1 /* DND_TARGET_TYPE_MESSAGE_RFC822 */: em_utils_selection_set_mailbox(data, ml->folder, uids); break; - case 2 /*DND_TARGET_TYPE_TEXT_URI_LIST*/: + case 2 /* DND_TARGET_TYPE_TEXT_URI_LIST */: em_utils_selection_set_urilist(data, ml->folder, uids); break; } @@ -1537,10 +1537,10 @@ ml_tree_drag_data_received (ETree *tree, int row, ETreePath path, int col, guarantee on what the content would be */ switch (info) { - case 1 /*DND_TARGET_TYPE_MESSAGE_RFC822*/: + case 1 /* DND_TARGET_TYPE_MESSAGE_RFC822 */: em_utils_selection_get_mailbox(data, ml->folder); break; - case 0 /*DND_TARGET_TYPE_X_EVOLUTION_MESSAGE*/: + case 0 /* DND_TARGET_TYPE_X_UID_LIST */: ml_selection_received_uidlist(ml, data); break; } |