aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog3
-rw-r--r--mail/message-list.c33
2 files changed, 14 insertions, 22 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 82673ac3e7..bba6b71818 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,8 @@
2000-11-29 Jeffrey Stedfast <fejj@helixcode.com>
+ * message-list.c (message_list_drag_data_get): Implement.
+ (message_list_init): Connect the d&d signal.
+
* mail-ops.c (do_save_messages): Use camel a bit more to help us
out. Don't create the file ourselves, treat it as a CamelFolder so
we don't have to worry about formatting.
diff --git a/mail/message-list.c b/mail/message-list.c
index 2245288ddc..3202860703 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -26,6 +26,7 @@
#include "message-list.h"
#include "mail-threads.h"
#include "mail-tools.h"
+#include "mail-ops.h"
#include "Mail.h"
#include <gal/util/e-util.h>
@@ -376,7 +377,6 @@ message_list_select (MessageList *message_list, int base_row,
gtk_signal_emit(GTK_OBJECT (message_list), message_list_signals [MESSAGE_SELECTED], NULL);
}
-#if 0
static void
message_list_drag_data_get (ETable *table,
int row,
@@ -388,40 +388,31 @@ message_list_drag_data_get (ETable *table,
gpointer user_data)
{
MessageList *mlist = (MessageList *) user_data;
- CamelMessageInfo *info = get_message_info (mlist, row);
- CamelException *ex;
- CamelFolder *folder;
+ const CamelMessageInfo *minfo = get_message_info (mlist, row);
+ GPtrArray *uids = NULL;
char *dirname = "/tmp/ev-XXXXXXXXXX";
char *filename;
- char *url;
switch (info) {
case DND_TARGET_LIST_TYPE_URI:
/* drag & drop into nautilus */
mktemp (dirname);
- filename = g_strdup_printf ("%s.eml", info->subject);
- url = g_strdup_printf ("file:%s", dirname);
+ filename = g_strdup_printf ("%s/%s.eml", dirname, minfo->subject);
- ex = camel_exception_new ();
- folder = mail_tool_get_folder_from_urlname (url, filename, CAMEL_STORE_FOLDER_CREATE, ex);
- if (camel_exception_is_set (ex)) {
- camel_exception_free (ex);
- g_free (url);
- return;
- }
+ uids = g_ptr_array_new ();
+ g_ptr_array_add (uids, g_strdup (mlist->cursor_uid));
+
+ mail_do_save_messages (mlist->folder, uids, filename);
gtk_selection_data_set (selection_data, selection_data->target, 8,
- (guchar *) url, strlen (url));
+ (guchar *) filename, strlen (filename));
- camel_object_unref (CAMEL_OBJECT (folder));
g_free (filename);
- g_free (url);
break;
default:
break;
}
}
-#endif
/*
* SimpleTableModel::col_count
@@ -1046,15 +1037,13 @@ message_list_init (GtkObject *object)
gtk_signal_connect (GTK_OBJECT (message_list->etable), "click",
GTK_SIGNAL_FUNC (on_click), message_list);
-
-#if 0
+
/* drag & drop */
- e_table_drag_source_set (message_list->etable, GDK_BUTTON1_MASK,
+ e_table_drag_source_set (E_TABLE (message_list->etable), GDK_BUTTON1_MASK,
drag_types, num_drag_types, GDK_ACTION_MOVE);
gtk_signal_connect (GTK_OBJECT (message_list->etable), "drag_data_get",
GTK_SIGNAL_FUNC (message_list_drag_data_get), message_list);
-#endif
gtk_widget_show (message_list->etable);