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.

svn path=/trunk/; revision=23451
This commit is contained in:
Jeffrey Stedfast
2003-11-19 21:22:12 +00:00
committed by Jeffrey Stedfast
parent 23a30c833d
commit dc497cb36b
5 changed files with 36 additions and 21 deletions

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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));

View File

@ -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;
}