aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog15
-rw-r--r--mail/em-utils.c7
-rw-r--r--mail/mail-component.c44
-rw-r--r--mail/message-list.c16
4 files changed, 37 insertions, 45 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index fe29a71caf..24ee52a6b0 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,18 @@
+2003-10-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * mail-component.c (parse_uid_list): Removed, use
+ em_utils_selection_get_uidlist() instead.
+ (drop_uid_list): Use em_utils_selection_get_uidlist() to parse the
+ x-uid-list selection data and use mail_tool_uri_to_folder()
+ directly since we have the uri (originally we expected the first
+ component of the selection data to be the e-storage-set-view
+ folder path rather than the uri).
+ (folder_receive_drop_cb): Call gtk_drag_finish() here.
+
+ * message-list.c: s/x-evolution-message/x-uid-list/
+
+ * em-utils.c: Same.
+
2003-10-22 Ettore Perazzoli <ettore@ximian.com>
* mail-component.c (impl_createControls): Use
diff --git a/mail/em-utils.c b/mail/em-utils.c
index 5b16d0cd7b..8df8499031 100644
--- a/mail/em-utils.c
+++ b/mail/em-utils.c
@@ -1790,7 +1790,7 @@ em_utils_selection_get_mailbox(GtkSelectionData *data, CamelFolder *folder)
* @uri:
* @uids:
*
- * Sets a "x-evolution-message" format selection data.
+ * Sets a "x-uid-list" format selection data.
*
* FIXME: be nice if this could take a folder argument rather than uri
**/
@@ -1801,8 +1801,7 @@ em_utils_selection_set_uidlist(GtkSelectionData *data, const char *uri, GPtrArra
int i;
/* format: "uri\0uid1\0uid2\0uid3\0...\0uidn\0" */
- /* NB: original form missed trailing \0 */
-
+
g_byte_array_append(array, uri, strlen(uri)+1);
for (i=0; i<uids->len; i++)
@@ -1818,7 +1817,7 @@ em_utils_selection_set_uidlist(GtkSelectionData *data, const char *uri, GPtrArra
* @urip: Pointer to uri string, to be free'd by caller
* @uidsp: Pointer to an array of uid's.
*
- * Convert an x-evolution-message type to a uri and a uid list.
+ * Convert an x-uid-list type to a uri and a uid list.
*
* Return value: The number of uid's found. If 0, then @urip and
* @uidsp will be empty.
diff --git a/mail/mail-component.c b/mail/mail-component.c
index 908403f824..b278ecd46e 100644
--- a/mail/mail-component.c
+++ b/mail/mail-component.c
@@ -578,55 +578,27 @@ folder_dragged_cb (EStorageSetView *view, const char *path, GdkDragContext *cont
}
}
-static gboolean
-parse_uid_list (const char *in, int inlen, char **path, GPtrArray **uids)
-{
- const char *inptr, *inend;
-
- inend = in + inlen;
-
- *path = g_strdup (in);
-
- *uids = g_ptr_array_new ();
-
- inptr = in + inlen + 1;
- while (inptr < inend) {
- g_ptr_array_add (*uids, g_strdup (inptr));
- inptr += strlen (inptr) + 1;
- }
-
- if ((*uids)->len == 0) {
- g_ptr_array_free (*uids, TRUE);
- g_free (*path);
-
- return FALSE;
- }
-
- return TRUE;
-}
-
static void
drop_uid_list (EStorageSetView *view, const char *path, gboolean move, GtkSelectionData *selection, gpointer user_data)
{
CamelFolder *src, *dest;
CamelException ex;
GPtrArray *uids;
- char *src_path;
+ char *src_uri;
- if (!parse_uid_list (selection->data, selection->length, &src_path, &uids))
- return;
+ em_utils_selection_get_uidlist (selection, &src_uri, &uids);
camel_exception_init (&ex);
- if (!(src = foo_get_folder (view, src_path, &ex))) {
+ if (!(src = mail_tool_uri_to_folder (src_uri, 0, &ex))) {
/* FIXME: report error to user? */
camel_exception_clear (&ex);
em_utils_uids_free (uids);
- g_free (src_path);
+ g_free (src_uri);
return;
}
- g_free (src_path);
+ g_free (src_uri);
if (!(dest = foo_get_folder (view, path, &ex))) {
/* FIXME: report error to user? */
@@ -846,22 +818,28 @@ folder_receive_drop_cb (EStorageSetView *view, const char *path, GdkDragContext
case DND_DROP_TYPE_UID_LIST:
/* import a list of uids from another evo folder */
drop_uid_list (view, path, move, selection, user_data);
+ printf ("* dropped a x-uid-list\n");
break;
case DND_DROP_TYPE_FOLDER:
/* rename a folder */
drop_folder (view, path, move, selection, user_data);
+ printf ("* dropped a x-folder\n");
break;
case DND_DROP_TYPE_MESSAGE_RFC822:
/* import a message/rfc822 stream */
drop_message_rfc822 (view, path, selection, user_data);
+ printf ("* dropped a message/rfc822\n");
break;
case DND_DROP_TYPE_TEXT_URI_LIST:
/* import an mbox, maildir, or mh folder? */
drop_text_uri_list (view, path, selection, user_data);
+ printf ("* dropped a text/uri-list\n");
break;
default:
g_assert_not_reached ();
}
+
+ gtk_drag_finish (context, TRUE, TRUE, time);
}
diff --git a/mail/message-list.c b/mail/message-list.c
index 8398518810..e58ae5acfc 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -717,7 +717,7 @@ void
message_list_paste(MessageList *ml)
{
gtk_selection_convert(ml->priv->invisible, GDK_SELECTION_CLIPBOARD,
- gdk_atom_intern("x-evolution-message", FALSE),
+ gdk_atom_intern ("x-uid-list", FALSE),
GDK_CURRENT_TIME);
}
@@ -1425,12 +1425,12 @@ ml_selection_get(GtkWidget *widget, GtkSelectionData *data, guint info, guint ti
return;
if (info & 2) {
- /* text_plain */
+ /* text/plain */
printf("setting text/plain selection for uids\n");
em_utils_selection_set_mailbox(data, ml->folder, uids);
} else {
- /* x-evolution-message */
- printf("setting x-evolution-message selection for uids\n");
+ /* x-uid-list */
+ printf("setting x-uid-list selection for uids\n");
em_utils_selection_set_uidlist(data, ml->folder_uri, uids);
}
}
@@ -1479,7 +1479,7 @@ ml_selection_received_uidlist(MessageList *ml, GtkSelectionData *data)
static void
ml_selection_received(GtkWidget *widget, GtkSelectionData *data, guint time, MessageList *ml)
{
- if (data->target != gdk_atom_intern("x-evolution-message", FALSE)) {
+ if (data->target != gdk_atom_intern ("x-uid-list", FALSE)) {
printf("Unknown selection received by message-list\n");
return;
@@ -1489,7 +1489,7 @@ ml_selection_received(GtkWidget *widget, GtkSelectionData *data, guint time, Mes
}
static GtkTargetEntry ml_drag_types[] = {
- { "x-evolution-message", 0, 0 },
+ { "x-uid-list", 0, 0 },
{ "message/rfc822", 0, 1 },
/* not included in dest types */
{ "text/uri-list", 0, 2 },
@@ -1506,7 +1506,7 @@ 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_EVOLUTION_MESSAGE*/:
+ 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*/:
@@ -1578,7 +1578,7 @@ message_list_init (GtkObject *object)
g_object_ref(p->invisible);
gtk_object_sink((GtkObject *)p->invisible);
- matom = gdk_atom_intern("x-evolution-message", FALSE);
+ matom = gdk_atom_intern ("x-uid-list", FALSE);
gtk_selection_add_target(p->invisible, GDK_SELECTION_CLIPBOARD, matom, 0);
gtk_selection_add_target(p->invisible, GDK_SELECTION_PRIMARY, matom, 1);
gtk_selection_add_target(p->invisible, GDK_SELECTION_CLIPBOARD, GDK_SELECTION_TYPE_STRING, 2);