Commit Diff


commit - d21031672beefdc05b76615346512c06d6cc62be
commit + b2d8e263d1424145d8bdf97ebca2c1d7b5f479ba
blob - ff8056081e163f6a672f4900d0f8b677bb65f741
blob + dd13ca8a62375d6936e8e8426d8aebbf6b4e6736
--- src/folderview.c
+++ src/folderview.c
@@ -184,36 +184,6 @@ static void folderview_startup_folder_cb(GtkAction	*ac
 static void folderview_property_cb	(GtkAction 	*action,
 					 gpointer	 data);
 
-static gboolean folderview_drag_motion_cb(GtkWidget      *widget,
-					  GdkDragContext *context,
-					  gint            x,
-					  gint            y,
-					  guint           time,
-					  FolderView     *folderview);
-static void folderview_drag_leave_cb     (GtkWidget        *widget,
-					  GdkDragContext   *context,
-					  guint             time,
-					  FolderView       *folderview);
-static void folderview_drag_received_cb  (GtkWidget        *widget,
-					  GdkDragContext   *drag_context,
-					  gint              x,
-					  gint              y,
-					  GtkSelectionData *data,
-					  guint             info,
-					  guint             time,
-					  FolderView       *folderview);
-static void folderview_start_drag	 (GtkWidget *widget, gint button, GdkEvent *event,
-			                  FolderView       *folderview);
-static void folderview_drag_data_get     (GtkWidget        *widget,
-					  GdkDragContext   *drag_context,
-					  GtkSelectionData *selection_data,
-					  guint             info,
-					  guint             time,
-					  FolderView       *folderview);
-static void folderview_drag_end_cb	 (GtkWidget	   *widget,
-					  GdkDragContext   *drag_context,
-					  FolderView	   *folderview);
-
 static void folderview_create_folder_node       (FolderView       *folderview,
 					  FolderItem       *item);
 static gboolean folderview_update_folder	 (gpointer 	    source,
@@ -251,12 +221,6 @@ static GtkActionEntry folderview_header_popup_entries[
 	{"FolderViewHeaderPopup/SetDisplayedColumns", NULL, N_("Set Displayed columns"), NULL, NULL, G_CALLBACK(folderview_header_set_displayed_columns_cb) }
 };
 
-GtkTargetEntry folderview_drag_types[] =
-{
-	{"claws-mail/internal", GTK_TARGET_SAME_APP, TARGET_DUMMY},
-	{"text/uri-list", 0, TARGET_MAIL_URI_LIST}
-};
-
 void folderview_initialize(void)
 {
 	FolderViewPopup *fpopup;
@@ -483,11 +447,6 @@ static GtkWidget *folderview_ctree_create(FolderView *
 			 folderview);
 	g_signal_connect(G_OBJECT(ctree), "tree_select_row",
 			 G_CALLBACK(folderview_selected), folderview);
-	g_signal_connect(G_OBJECT(ctree), "start_drag",
-			 G_CALLBACK(folderview_start_drag), folderview);
-	g_signal_connect(G_OBJECT(ctree), "drag_data_get",
-			 G_CALLBACK(folderview_drag_data_get),
-			 folderview);
 
 	g_signal_connect_after(G_OBJECT(ctree), "tree_expand",
 			       G_CALLBACK(folderview_tree_expanded),
@@ -500,23 +459,6 @@ static GtkWidget *folderview_ctree_create(FolderView *
 			 G_CALLBACK(folderview_col_resized),
 			 folderview);
 
-        /* drop callback */
-	gtk_drag_dest_set(ctree, GTK_DEST_DEFAULT_ALL & ~GTK_DEST_DEFAULT_HIGHLIGHT,
-			  folderview_drag_types, 2,
-			  GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_DEFAULT);
-	g_signal_connect(G_OBJECT(ctree), "drag_motion",
-			 G_CALLBACK(folderview_drag_motion_cb),
-			 folderview);
-	g_signal_connect(G_OBJECT(ctree), "drag_leave",
-			 G_CALLBACK(folderview_drag_leave_cb),
-			 folderview);
-	g_signal_connect(G_OBJECT(ctree), "drag_data_received",
-			 G_CALLBACK(folderview_drag_received_cb),
-			 folderview);
-	g_signal_connect(G_OBJECT(ctree), "drag_end",
-			 G_CALLBACK(folderview_drag_end_cb),
-			 folderview);
-
 	gtk_container_add(GTK_CONTAINER(scrolledwin), ctree);
 
 	return ctree;
@@ -529,23 +471,6 @@ void folderview_set_column_order(FolderView *foldervie
 	FolderItem *sel_item = NULL, *op_item = NULL;
 	GtkWidget *scrolledwin = folderview->scrolledwin;
 
-	if (folderview->drag_timer_id != 0) {
-		g_source_remove(folderview->drag_timer_id);
-		folderview->drag_timer_id = 0;
-	}
-	if (folderview->deferred_refresh_id != 0) {
-		g_source_remove(folderview->deferred_refresh_id);
-		folderview->deferred_refresh_id = 0;
-	}
-	if (folderview->scroll_timeout_id != 0) {
-		g_source_remove(folderview->scroll_timeout_id);
-		folderview->scroll_timeout_id = 0;
-	}
-	if (folderview->postpone_select_id != 0) {
-		g_source_remove(folderview->postpone_select_id);
-		folderview->postpone_select_id = 0;
-	}
-
 	if (folderview->selected)
 		sel_item = folderview_get_selected_item(folderview);
 	if (folderview->opened)
@@ -618,14 +543,7 @@ FolderView *folderview_create(MainWindow *mainwin)
 
 	gtk_widget_show_all(scrolledwin);
 
-	folderview->target_list = gtk_target_list_new(folderview_drag_types, 2);
 	folderview_list = g_list_append(folderview_list, folderview);
-
-	folderview->drag_timer_id       = 0;
-	folderview->deferred_refresh_id = 0;
-	folderview->scroll_timeout_id   = 0;
-	folderview->postpone_select_id  = 0;
-
 	return folderview;
 }
 
@@ -1443,7 +1361,6 @@ static void folderview_update_node(FolderView *folderv
 	GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
 	GtkStyle *style = NULL, *prev_style;
 	FolderItem *item;
-	GdkRGBA black = { 0, 0, 0, 1 };
 	GdkPixbuf *xpm, *openxpm;
 	static GdkPixbuf *searchicon;
 	gboolean mark = FALSE;
@@ -2489,26 +2406,6 @@ static void folderview_property_cb(GtkAction *action, 
 	prefs_folder_item_open(item);
 }
 
-static void folderview_recollapse_nodes(FolderView *folderview, GtkCMCTreeNode *node)
-{
-	GSList *list = NULL;
-	GSList *done = NULL;
-	GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
-
-	for (list = folderview->nodes_to_recollapse; list != NULL; list = g_slist_next(list)) {
-		if (!gtkut_ctree_node_is_parent(GTK_CMCTREE_NODE(list->data), node)
-		&&  list->data != node) {
-			gtk_cmctree_collapse(ctree, GTK_CMCTREE_NODE(list->data));
-			done = g_slist_append(done, GTK_CMCTREE_NODE(list->data));
-		}
-	}
-	for (list = done; list != NULL; list = g_slist_next(list)) {
-		folderview->nodes_to_recollapse = g_slist_remove(folderview->nodes_to_recollapse,
-								 list->data);
-	}
-	g_slist_free(done);
-}
-
 void folderview_move_folder(FolderView *folderview, FolderItem *from_folder,
 		            FolderItem *to_folder, gboolean copy)
 {
@@ -2616,92 +2513,6 @@ static gint folderview_clist_compare(GtkCMCList *clist
 	return g_utf8_collate(item1->name, item2->name);
 }
 
-static void drag_state_stop(FolderView *folderview)
-{
-	if (folderview->drag_timer_id)
-		g_source_remove(folderview->drag_timer_id);
-	folderview->drag_timer_id = 0;
-	folderview->drag_node = NULL;
-}
-
-static gboolean folderview_defer_expand(FolderView *folderview)
-{
-	if (folderview->drag_node) {
-		folderview_recollapse_nodes(folderview, folderview->drag_node);
-		if (folderview->drag_item->collapsed) {
-			gtk_cmctree_expand(GTK_CMCTREE(folderview->ctree), folderview->drag_node);
-			folderview->nodes_to_recollapse = g_slist_append
-				(folderview->nodes_to_recollapse, folderview->drag_node);
-		}
-	}
-	folderview->drag_item  = NULL;
-	folderview->drag_timer_id = 0;
-	return FALSE;
-}
-
-static void drag_state_start(FolderView *folderview, GtkCMCTreeNode *node, FolderItem *item)
-{
-	/* the idea is that we call drag_state_start() whenever we want expansion to
-	 * start after 'prefs_common.hover_time' msecs. if we want to cancel expansion,
-	 * we need to call drag_state_stop() */
-	drag_state_stop(folderview);
-	/* request expansion */
-	if (0 != (folderview->drag_timer_id = g_timeout_add
-			(prefs_common.hover_timeout,
-			 (GSourceFunc)folderview_defer_expand,
-			 folderview))) {
-		folderview->drag_node = node;
-		folderview->drag_item = item;
-	}
-}
-
-static void folderview_start_drag(GtkWidget *widget, gint button, GdkEvent *event,
-			          FolderView       *folderview)
-{
-	GdkDragContext *context;
-
-	cm_return_if_fail(folderview != NULL);
-	if (folderview->selected == NULL) return;
-	if (folderview->nodes_to_recollapse)
-		g_slist_free(folderview->nodes_to_recollapse);
-	folderview->nodes_to_recollapse = NULL;
-	context = gtk_drag_begin_with_coordinates(widget, folderview->target_list,
-				 GDK_ACTION_MOVE|GDK_ACTION_COPY|GDK_ACTION_DEFAULT, button, event,
-				 -1, -1);
-	gtk_drag_set_icon_default(context);
-}
-
-static void folderview_drag_data_get(GtkWidget        *widget,
-				     GdkDragContext   *drag_context,
-				     GtkSelectionData *selection_data,
-				     guint             info,
-				     guint             time,
-				     FolderView       *folderview)
-{
-	FolderItem *item;
-	GList *sel;
-	if (info == TARGET_DUMMY) {
-		sel = GTK_CMCLIST(folderview->ctree)->selection;
-		if (!sel)
-			return;
-
-		item = gtk_cmctree_node_get_row_data
-			(GTK_CMCTREE(folderview->ctree),
-			 GTK_CMCTREE_NODE(sel->data));
-		if (item) {
-			gchar *source = NULL;
-			gchar *name = folder_item_get_identifier(item);
-			source = g_strdup_printf ("FROM_OTHER_FOLDER%s", name);
-			g_free(name);
-			gtk_selection_data_set(selection_data,
-					       gtk_selection_data_get_target(selection_data), 8,
-					       source, strlen(source));
-		}
-	} else {
-		g_warning("unknown info %d", info);
-	}
-}
-
 static gboolean folderview_update_folder(gpointer source, gpointer userdata)
 {
 	FolderUpdateData *hookdata;
@@ -2765,293 +2576,8 @@ static gboolean folderview_dnd_scroll_cb(gpointer data
 	return TRUE;
 }
 
-static gboolean folderview_drag_motion_cb(GtkWidget      *widget,
-					  GdkDragContext *context,
-					  gint            x,
-					  gint            y,
-					  guint           time,
-					  FolderView     *folderview)
-{
-	gint row, column;
-	FolderItem *item = NULL, *src_item = NULL;
-	GtkCMCTreeNode *node = NULL;
-	gboolean acceptable = FALSE;
-	GtkAdjustment *pos = gtk_scrolled_window_get_vadjustment(
-				GTK_SCROLLED_WINDOW(folderview->scrolledwin));
-	int height = (int)gtk_adjustment_get_page_size(pos);
-	int total_height = (int)gtk_adjustment_get_upper(pos);
-	int vpos = (int)gtk_adjustment_get_value(pos);
-	int offset = prefs_common.show_col_headers ? 24:0;
-	int dist;
+static void free_info(gpointer stuff, gpointer data) { g_free(stuff); }
 
-	if (gtk_cmclist_get_selection_info
-		(GTK_CMCLIST(widget), x - offset, y - offset, &row, &column)) {
-		GtkWidget *srcwidget;
-
-		if (y > height - (48 - offset) && height + vpos < total_height) {
-			dist = -(height - (48 - offset) - y);
-			folderview->scroll_value = 1.41f * (1+(dist / 6));
-		} else if (y < 72 - (24 - offset) && y >= 0) {
-			dist = 72 - (24 - offset) - y;
-			folderview->scroll_value = -1.41f * (1+(dist / 6));
-		} else {
-			folderview->scroll_value = 0;
-		}
-		if (folderview->scroll_value != 0 && folderview->scroll_timeout_id == 0) {
-			folderview->scroll_timeout_id =
-				g_timeout_add(30, folderview_dnd_scroll_cb,
-					      folderview);
-		}
-
-		node = gtk_cmctree_node_nth(GTK_CMCTREE(widget), row);
-		item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(widget), node);
-		src_item = folderview->summaryview->folder_item;
-
-		srcwidget = gtk_drag_get_source_widget(context);
-		if (srcwidget == summary_get_main_widget(folderview->summaryview)) {
-			/* comes from summaryview */
-			/* we are copying messages, so only accept folder items that are not
-			   the source item, are no root items and can copy messages */
-			if (item && item->folder && folder_item_parent(item) != NULL && src_item &&
-			    src_item != item && FOLDER_CLASS(item->folder)->copy_msg != NULL &&
-			    FOLDER_TYPE(item->folder) != F_UNKNOWN)
-				acceptable = TRUE;
-		} else if (srcwidget == folderview->ctree) {
-			/* comes from folderview */
-			/* we are moving folder items, only accept folders that are not
-                           the source items and can copy messages and create folder items */
-			if (item && item->folder && src_item && src_item != item &&
-			    FOLDER_CLASS(item->folder)->copy_msg != NULL &&
-			    FOLDER_CLASS(item->folder)->create_folder != NULL &&
-			    ((FOLDER_TYPE(item->folder) != F_UNKNOWN &&  FOLDER_TYPE(src_item->folder) != F_UNKNOWN)
-			     || item->folder == src_item->folder))
-				acceptable = TRUE;
-		} else {
-			/* comes from another app */
-			/* we are adding messages, so only accept folder items that are
-			   no root items and can copy messages */
-			if (item && item->folder && folder_item_parent(item) != NULL
-			    && FOLDER_CLASS(item->folder)->add_msg != NULL &&
-			    FOLDER_TYPE(item->folder) != F_UNKNOWN)
-				acceptable = TRUE;
-		}
-	}
-
-	if (acceptable || (src_item && src_item == item))
-		drag_state_start(folderview, node, item);
-
-	if (acceptable) {
-		g_signal_handlers_block_by_func
-			(G_OBJECT(widget),
-			 G_CALLBACK(folderview_selected), folderview);
-		gtk_cmctree_select(GTK_CMCTREE(widget), node);
-		g_signal_handlers_unblock_by_func
-			(G_OBJECT(widget),
-			 G_CALLBACK(folderview_selected), folderview);
-		gdk_drag_status(context,
-					(gdk_drag_context_get_actions(context) == GDK_ACTION_COPY ?
-					GDK_ACTION_COPY : GDK_ACTION_MOVE) , time);
-	} else {
-		if (folderview->opened)
-			gtk_cmctree_select(GTK_CMCTREE(widget), folderview->opened);
-		gdk_drag_status(context, 0, time);
-	}
-
-	return acceptable;
-}
-
-static void folderview_drag_leave_cb(GtkWidget      *widget,
-				     GdkDragContext *context,
-				     guint           time,
-				     FolderView     *folderview)
-{
-	drag_state_stop(folderview);
-	folderview->scroll_value = 0;
-	gtk_cmctree_select(GTK_CMCTREE(widget), folderview->opened);
-}
-
-static void free_info (gpointer stuff, gpointer data)
-{
-	g_free(stuff);
-}
-
-void folderview_finish_dnd(const gchar *data, GdkDragContext *drag_context,
-			   guint time, FolderItem *item)
-{
-	GList *list, *tmp;
-	GSList *msglist = NULL;
-	list = uri_list_extract_filenames(data);
-	if (!(item && item->folder && folder_item_parent(item) != NULL
-		    && FOLDER_CLASS(item->folder)->add_msg != NULL))
-	{
-		gtk_drag_finish(drag_context, FALSE, FALSE, time);
-		debug_print("item doesn't fit\n");
-		return;
-	}
-	if (!list) {
-		gtk_drag_finish(drag_context, FALSE, FALSE, time);
-		debug_print("list is empty\n");
-		return;
-	}
-	for (tmp = list; tmp != NULL; tmp = tmp->next) {
-		MsgFileInfo *info = NULL;
-
-		if (file_is_email((gchar *)tmp->data)) {
-			info = g_new0(MsgFileInfo, 1);
-			info->msginfo = NULL;
-			info->file = (gchar *)tmp->data;
-			msglist = g_slist_prepend(msglist, info);
-			debug_print("file is a mail\n");
-		} else {
-			debug_print("file isn't a mail\n");
-		}
-	}
-	if (msglist) {
-		msglist = g_slist_reverse(msglist);
-		folder_item_add_msgs(item, msglist, FALSE);
-		g_slist_foreach(msglist, free_info, NULL);
-		g_slist_free(msglist);
-		gtk_drag_finish(drag_context, TRUE, FALSE, time);
-	} else {
-		gtk_drag_finish(drag_context, FALSE, FALSE, time);
-	}
-	list_free_strings_full(list);
-}
-
-static void folderview_drag_received_cb(GtkWidget        *widget,
-					GdkDragContext   *drag_context,
-					gint              x,
-					gint              y,
-					GtkSelectionData *data,
-					guint             info,
-					guint             time,
-					FolderView       *folderview)
-{
-	gint row, column;
-	FolderItem *item = NULL, *src_item;
-	GtkCMCTreeNode *node;
-	int offset = prefs_common.show_col_headers ? 24:0;
-
-	folderview->scroll_value = 0;
-
-	if (info == TARGET_DUMMY) {
-		drag_state_stop(folderview);
-		const gchar *ddata = (const gchar *)gtk_selection_data_get_data(data);
-		if ((gchar *)strstr(ddata, "FROM_OTHER_FOLDER") != ddata) {
-			/* comes from summaryview */
-			if (gtk_cmclist_get_selection_info
-				(GTK_CMCLIST(widget), x - offset, y - offset, &row, &column) == 0)
-				return;
-
-			node = gtk_cmctree_node_nth(GTK_CMCTREE(widget), row);
-			item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(widget), node);
-			src_item = folderview->summaryview->folder_item;
-
-			if (item && item->no_select) {
-				alertpanel_error(_("The destination folder can only be used to "
-						   "store subfolders."));
-				return;
-			}
-			/* re-check (due to acceptable possibly set for folder moves */
-			if (!(item && item->folder && item->path && !item->no_select &&
-			      src_item && src_item != item && FOLDER_CLASS(item->folder)->copy_msg != NULL)) {
-				return;
-			}
-
-			switch (gdk_drag_context_get_selected_action(drag_context)) {
-			case GDK_ACTION_COPY:
-				summary_copy_selected_to(folderview->summaryview, item);
-				gtk_drag_finish(drag_context, TRUE, FALSE, time);
-				break;
-			case GDK_ACTION_MOVE:
-			case GDK_ACTION_DEFAULT:
-			default:
-				if (FOLDER_CLASS(src_item->folder)->remove_msg == NULL)
-					summary_copy_selected_to(folderview->summaryview, item);
-				else
-					summary_move_selected_to(folderview->summaryview, item);
-				gtk_drag_finish(drag_context, TRUE, TRUE, time);
-			}
-		} else {
-			/* comes from folderview */
-			char *source;
-			gboolean folder_is_normal = TRUE;
-			gboolean copy = (GDK_ACTION_COPY ==
-				gdk_drag_context_get_selected_action(drag_context));
-
-			source = (char *)gtk_selection_data_get_data(data) + 17;
-			if (gtk_cmclist_get_selection_info
-			    (GTK_CMCLIST(widget), x - offset, y - offset, &row, &column) == 0
-			    || *source == 0) {
-				gtk_drag_finish(drag_context, FALSE, FALSE, time);
-				return;
-			}
-			node = gtk_cmctree_node_nth(GTK_CMCTREE(widget), row);
-			item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(widget), node);
-			src_item = folder_find_item_from_identifier(source);
-
-			folder_is_normal =
-				src_item != NULL &&
-				src_item->stype == F_NORMAL &&
-				!folder_has_parent_of_type(src_item, F_OUTBOX) &&
-				!folder_has_parent_of_type(src_item, F_DRAFT) &&
-				!folder_has_parent_of_type(src_item, F_QUEUE) &&
-				!folder_has_parent_of_type(src_item, F_TRASH);
-			if (!item || !src_item || !folder_is_normal) {
-				gtk_drag_finish(drag_context, FALSE, FALSE, time);
-				return;
-			}
-
-			folderview_move_folder(folderview, src_item, item, copy);
-			gtk_drag_finish(drag_context, TRUE, TRUE, time);
-		}
-		folderview->nodes_to_recollapse = NULL;
-	} else if (info == TARGET_MAIL_URI_LIST) {
-		if (gtk_cmclist_get_selection_info
-			(GTK_CMCLIST(widget), x - offset, y - offset, &row, &column) == 0)
-			return;
-
-		node = gtk_cmctree_node_nth(GTK_CMCTREE(widget), row);
-		if (!node) {
-			gtk_drag_finish(drag_context, FALSE, FALSE, time);
-			debug_print("no node\n");
-			return;
-		}
-		item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(widget), node);
-		if (!item) {
-			gtk_drag_finish(drag_context, FALSE, FALSE, time);
-			debug_print("no item\n");
-			return;
-		}
-		folderview_finish_dnd(gtk_selection_data_get_data(data),
-			drag_context, time, item);
-	}
-}
-
-static void folderview_drag_end_cb(GtkWidget	    *widget,
-				   GdkDragContext   *drag_context,
-                                   FolderView	    *folderview)
-{
-	drag_state_stop(folderview);
-	folderview->scroll_value = 0;
-	g_slist_free(folderview->nodes_to_recollapse);
-	folderview->nodes_to_recollapse = NULL;
-}
-
-void folderview_register_popup(FolderViewPopup *fpopup)
-{
-	GList *folderviews;
-
-	for (folderviews = folderview_list; folderviews != NULL; folderviews = g_list_next(folderviews)) {
-		FolderView *folderview = folderviews->data;
-		GtkActionGroup *factory;
-
-		factory = create_action_group(folderview, fpopup);
-		g_hash_table_insert(folderview->popups, fpopup->klass, factory);
-	}
-	g_hash_table_insert(folderview_popups, fpopup->klass, fpopup);
-}
-
 void folderview_unregister_popup(FolderViewPopup *fpopup)
 {
 	GList *folderviews;
blob - f53c22b56556b0d7b3dcbd0b530677d25ece941d
blob + d446bd45917e9d7f1b6dc93e85398a5069fda99d
--- src/folderview.h
+++ src/folderview.h
@@ -69,12 +69,6 @@ struct _FolderView
 	gint folder_update_callback_id;
 	gint folder_item_update_callback_id;
 
-	/* DND states */
-	GSList *nodes_to_recollapse;
-	guint   drag_timer_id;		/* timer id */
-	FolderItem *drag_item;		/* dragged item */
-	GtkCMCTreeNode *drag_node;	/* drag node */
-
 	GtkTargetList *target_list; /* DnD */
 	FolderColumnState col_state[N_FOLDER_COLS];
 	gint col_pos[N_FOLDER_COLS];
@@ -134,15 +128,11 @@ void folderview_move_folder		(FolderView 	*folderview,
 					 FolderItem 	*to_folder,
 					 gboolean	 copy);
 
-void folderview_register_popup		(FolderViewPopup	*fpopup);
 void folderview_unregister_popup	(FolderViewPopup	*fpopup);
 void folderview_update_search_icon	(FolderItem 		*item,
 					 gboolean 		 matches);
 void folderview_set_column_order	(FolderView		*folderview);
-void folderview_finish_dnd		(const gchar 		*data,
-					 GdkDragContext 	*drag_context,
-			   		 guint 			 time,
-					 FolderItem 		*item);
+
 void folderview_close_opened		(FolderView 		*folderview,
 					 gboolean		 dirty);
 void folderview_remove_item(FolderView *folderview,
blob - 5b714e07687d521334c8cafd91a66e4a843db4c8
blob + d851eec71687aa85fcec1fe446520673afd08d80
--- src/imap_gtk.c
+++ src/imap_gtk.c
@@ -99,9 +99,7 @@ static FolderViewPopup imap_popup =
 };
 
 void imap_gtk_init(void)
-{
-	folderview_register_popup(&imap_popup);
-}
+{ }
 
 static void add_menuitems(GtkUIManager *ui_manager, FolderItem *item)
 {
blob - 0eae0a81092673e679e9d0d3b0187bab93a15fa5
blob + b93a8de02b32944258664e6c70c5faf458d1ecc1
--- src/mh_gtk.c
+++ src/mh_gtk.c
@@ -73,9 +73,7 @@ static FolderViewPopup mh_popup =
 };
 
 void mh_gtk_init(void)
-{
-	folderview_register_popup(&mh_popup);
-}
+{ }
 
 static void add_menuitems(GtkUIManager *ui_manager, FolderItem *item)
 {
blob - 9fe6840cbeb78063e7c7c729f3c3e88af7388e58
blob + 202c27f90948d88038df5403a9174178971c3b48
--- src/summaryview.c
+++ src/summaryview.c
@@ -269,34 +269,6 @@ static void summary_score_clicked	(GtkWidget		*button,
 static void summary_locked_clicked	(GtkWidget		*button,
 					 SummaryView		*summaryview);
 
-static void summary_start_drag		(GtkWidget        *widget,
-					 int button,
-					 GdkEvent *event,
-					 SummaryView      *summaryview);
-static void summary_drag_data_get       (GtkWidget        *widget,
-					 GdkDragContext   *drag_context,
-					 GtkSelectionData *selection_data,
-					 guint             info,
-					 guint             time,
-					 SummaryView      *summaryview);
-static void summary_drag_data_received(GtkWidget        *widget,
-					GdkDragContext   *drag_context,
-					gint              x,
-					gint              y,
-					GtkSelectionData *data,
-					guint             info,
-					guint             time,
-					SummaryView       *summaryview);
-static gboolean summary_drag_motion_cb(GtkWidget      *widget,
-					  GdkDragContext *context,
-					  gint            x,
-					  gint            y,
-					  guint           time,
-					  SummaryView	 *summaryview);
-static void summary_drag_end(GtkWidget *widget,
-					  GdkDragContext *drag_context,
-					  SummaryView 	 *summaryview);
-
 /* custom compare functions for sorting */
 static gint summary_cmp_by_mark		(GtkCMCList		*clist,
 					 gconstpointer		 ptr1,
@@ -5253,28 +5225,6 @@ static GtkWidget *summary_ctree_create(SummaryView *su
 			       G_CALLBACK(summary_tree_collapsed),
 			       summaryview);
 
-	g_signal_connect(G_OBJECT(ctree), "start_drag",
-			 G_CALLBACK(summary_start_drag),
-			 summaryview);
-	g_signal_connect(G_OBJECT(ctree), "drag_data_get",
-			 G_CALLBACK(summary_drag_data_get),
-			 summaryview);
-	g_signal_connect(G_OBJECT(ctree), "drag_end",
-			 G_CALLBACK(summary_drag_end),
-			 summaryview);
-
-	gtk_drag_dest_set(ctree, GTK_DEST_DEFAULT_ALL & ~GTK_DEST_DEFAULT_HIGHLIGHT,
-			  summary_drag_types, 3,
-			  GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_DEFAULT);
-
-	g_signal_connect(G_OBJECT(ctree), "drag_data_received",
-			 G_CALLBACK(summary_drag_data_received),
-			 summaryview);
-
-	g_signal_connect(G_OBJECT(ctree), "drag_motion",
-			 G_CALLBACK(summary_drag_motion_cb),
-			 summaryview);
-
 	g_object_set (G_OBJECT(ctree), "has-tooltip", TRUE, NULL);
 	g_signal_connect(G_OBJECT(ctree), "query-tooltip",
 			 G_CALLBACK(tooltip_cb),
@@ -5828,188 +5778,6 @@ static void summary_locked_clicked(GtkWidget *button,
 	summary_sort_by_column_click(summaryview, SORT_BY_LOCKED);
 }
 
-static void summary_start_drag(GtkWidget *widget, gint button, GdkEvent *event,
-			       SummaryView *summaryview)
-{
-	GdkDragContext *context;
-
-	cm_return_if_fail(summaryview != NULL);
-	cm_return_if_fail(summaryview->folder_item != NULL);
-	cm_return_if_fail(summaryview->folder_item->folder != NULL);
-
-	if (summaryview->selected == NULL) return;
-
-	context = gtk_drag_begin_with_coordinates(widget, summaryview->target_list,
-				 GDK_ACTION_MOVE|GDK_ACTION_COPY|GDK_ACTION_DEFAULT, button, event,
-				 -1, -1);
-	gtk_drag_set_icon_default(context);
-}
-
-static void summary_drag_end	   (GtkWidget	    *widget,
-				   GdkDragContext   *drag_context,
-                                   SummaryView 	    *summaryview)
-{}
-
-static void summary_drag_data_get(GtkWidget        *widget,
-				  GdkDragContext   *drag_context,
-				  GtkSelectionData *selection_data,
-				  guint             info,
-				  guint             time,
-				  SummaryView      *summaryview)
-{
-	if (info == TARGET_MAIL_URI_LIST) {
-		GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
-		GList *cur;
-		MsgInfo *msginfo;
-		gchar *mail_list = NULL, *tmp1, *tmp2;
-
-		for (cur = GTK_CMCLIST(ctree)->selection;
-		     cur != NULL && cur->data != NULL; cur = cur->next) {
-			msginfo = gtk_cmctree_node_get_row_data
-				(ctree, GTK_CMCTREE_NODE(cur->data));
-			tmp2 = procmsg_get_message_file(msginfo);
-			if (!tmp2) continue;
-			if (msginfo->subject) {
-				gchar *san_subject = g_strdup(msginfo->subject);
-				gchar *dest = NULL;
-				subst_for_filename(san_subject);
-				dest = g_strdup_printf("%s%s%s.%d.txt",
-						get_tmp_dir(),
-						G_DIR_SEPARATOR_S,
-						san_subject, msginfo->msgnum);
-				g_free(san_subject);
-				san_subject = g_filename_from_utf8(dest, -1, NULL, NULL, NULL);
-				if (!san_subject) {
-					g_warning("failed to convert encoding of file name: %s", dest);
-				} else {
-					g_free(dest);
-					dest = san_subject;
-				}
-				if (copy_file(tmp2, dest, TRUE) < 0) {
-					g_warning("summary_drag_data_get: can't copy %s to %s",
-							tmp2, dest);
-				}
-				g_free(tmp2);
-				tmp2 = dest;
-			}
-			tmp1 = g_filename_to_uri(tmp2, NULL, NULL);
-			g_free(tmp2);
-			tmp2 = g_strconcat(tmp1, "\r\n", NULL);
-			g_free(tmp1);
-			tmp1 = tmp2;
-
-			if (!mail_list) {
-				mail_list = tmp1;
-			} else {
-				tmp2 = g_strconcat(mail_list, tmp1, NULL);
-				g_free(mail_list);
-				g_free(tmp1);
-				mail_list = tmp2;
-			}
-		}
-
-		if (mail_list != NULL) {
-			gtk_selection_data_set(selection_data,
-					       gtk_selection_data_get_target(selection_data), 8,
-					       mail_list, strlen(mail_list));
-			g_free(mail_list);
-		}
-	} else if (info == TARGET_DUMMY) {
-		if (GTK_CMCLIST(summaryview->ctree)->selection)
-			gtk_selection_data_set(selection_data,
-					       gtk_selection_data_get_target(selection_data), 8,
-					       "Dummy-Summaryview",
-					       strlen("Dummy-Summaryview")+1);
-	} else if (info == TARGET_MAIL_CM_PATH_LIST) {
-		/* content: folder_item_identifier\nmsgid1\nmsgid2\nmsgid3 */
-
-		GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
-		GList *cur;
-		MsgInfo *msginfo;
-		gchar *path_list = NULL;
-
-		/* identifier */
-		if(GTK_CMCLIST(ctree)->selection != NULL) {
-			msginfo = gtk_cmctree_node_get_row_data(ctree, GTK_CMCTREE_NODE(GTK_CMCLIST(ctree)->selection->data));
-            if(msginfo && msginfo->folder)
-              path_list = folder_item_get_identifier(msginfo->folder);
-		}
-
-		if (path_list != NULL) {
-			for (cur = GTK_CMCLIST(ctree)->selection;
-			     cur != NULL && cur->data != NULL && path_list != NULL; cur = cur->next) {
-				gchar *tmp;
-
-				msginfo = gtk_cmctree_node_get_row_data(ctree, GTK_CMCTREE_NODE(cur->data));
-				if(!msginfo)
-					continue;
-				tmp = path_list;
-				path_list = g_strconcat(path_list, "\n", (msginfo->msgid ? msginfo->msgid : "unknown"), NULL);
-				g_free(tmp);
-			}
-
-			if (path_list != NULL) {
-				gtk_selection_data_set(selection_data,
-					       gtk_selection_data_get_target(selection_data), 8,
-					       path_list, strlen(path_list));
-				g_free(path_list);
-			}
-		} else {
-			g_warning("summary_drag_data_get: no folder item identifier");
-		}
-    }
-}
-
-static gboolean summary_drag_motion_cb(GtkWidget      *widget,
-					  GdkDragContext *context,
-					  gint            x,
-					  gint            y,
-					  guint           time,
-					  SummaryView	 *summaryview)
-{
-	FolderItem *item = summaryview->folder_item;
-	if (!(item && item->folder && folder_item_parent(item) != NULL
-		    && FOLDER_CLASS(item->folder)->add_msg != NULL)) {
-		gdk_drag_status(context, 0, time);
-		return FALSE;
-	} else if (gtk_drag_get_source_widget(context) ==
-		mainwindow_get_mainwindow()->folderview->ctree) {
-		/* no folders */
-		gdk_drag_status(context, 0, time);
-		return FALSE;
-	} else if (gtk_drag_get_source_widget(context) ==
-		summaryview->ctree) {
-		/* not from same folder */
-		gdk_drag_status(context, 0, time);
-		return FALSE;
-	} else {
-		gdk_drag_status(context, GDK_ACTION_COPY, time);
-		return TRUE;
-	}
-}
-
-static void summary_drag_data_received(GtkWidget        *widget,
-					GdkDragContext   *drag_context,
-					gint              x,
-					gint              y,
-					GtkSelectionData *data,
-					guint             info,
-					guint             time,
-					SummaryView       *summaryview)
-{
-	if (info == TARGET_MAIL_URI_LIST) {
-		FolderItem *item = summaryview->folder_item;
-		if (!item) {
-			gtk_drag_finish(drag_context, FALSE, FALSE, time);
-			return;
-		} else {
-			folderview_finish_dnd(gtk_selection_data_get_data(data),
-				drag_context, time, item);
-		}
-	}
-}
-
-
 /* custom compare functions for sorting */
 
 static gint summary_cmp_by_date(GtkCMCList *clist,
blob - 49281071a207154175bbc7eef9b050b78d68e308
blob + c6ff6b07e30298895e5ff7679c76139d8918da52
--- src/summaryview.h
+++ src/summaryview.h
@@ -69,8 +69,6 @@ typedef enum
 #include "folder.h"
 #include "gtk/gtksctree.h"
 
-extern GtkTargetEntry summary_drag_types[3];
-
 struct _SummaryColumnState
 {
 	SummaryColumnType type;