From: Dirk-Jan C. Binnema Date: Sat, 17 Mar 2007 12:37:27 +0000 (+0000) Subject: * groundwork for dragging to the desktop X-Git-Tag: git_migration_finished~3971 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=73c8b243b8be9db553c30c20f3eec82fb77e17b7;ds=sidebyside * groundwork for dragging to the desktop pmo-trunk-r911 --- diff --git a/src/widgets/modest-dnd.h b/src/widgets/modest-dnd.h index 2d625d2..6c1723f 100644 --- a/src/widgets/modest-dnd.h +++ b/src/widgets/modest-dnd.h @@ -35,8 +35,9 @@ G_BEGIN_DECLS #define ROW_REF_DATA_NAME "row-ref" enum { - FOLDER_ROW, - HEADER_ROW + MODEST_FOLDER_ROW, + MODEST_HEADER_ROW, + MODEST_MSG }; G_END_DECLS diff --git a/src/widgets/modest-folder-view.c b/src/widgets/modest-folder-view.c index af1d6b1..dd8d356 100644 --- a/src/widgets/modest-folder-view.c +++ b/src/widgets/modest-folder-view.c @@ -1142,8 +1142,8 @@ on_drag_motion (GtkWidget *widget, /* Folder view drag types */ const GtkTargetEntry folder_view_drag_types[] = { - { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, FOLDER_ROW }, - { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_APP, HEADER_ROW } + { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, MODEST_FOLDER_ROW }, + { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_APP, MODEST_HEADER_ROW } }; /* diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 08faaae..6f07668 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -971,12 +971,9 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2, /* Drag and drop stuff */ static void -drag_data_get_cb (GtkWidget *widget, - GdkDragContext *context, +drag_data_get_cb (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, - guint info, - guint time, - gpointer data) + guint info, guint time, gpointer data) { GtkTreeSelection *selection; GtkTreeModel *model; @@ -987,17 +984,32 @@ drag_data_get_cb (GtkWidget *widget, gtk_tree_selection_get_selected (selection, &model, &iter); source_row = gtk_tree_model_get_path (model, &iter); - gtk_tree_set_row_drag_data (selection_data, - model, - source_row); + switch (info) { + case MODEST_HEADER_ROW: + gtk_tree_set_row_drag_data (selection_data, model, source_row); + break; + case MODEST_MSG: { + TnyHeader *hdr; + gtk_tree_model_get (model, &iter, + TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &hdr, + -1); + if (hdr) { + g_object_unref (G_OBJECT(hdr)); + } + break; + } + default: + g_message ("default"); + } gtk_tree_path_free (source_row); } /* Header view drag types */ -const GtkTargetEntry header_view_drag_types[] = -{ - { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_APP, HEADER_ROW } +const GtkTargetEntry header_view_drag_types[] = { + { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_APP, MODEST_HEADER_ROW }, + { "text/uri-list", 0, MODEST_MSG }, + }; static void @@ -1009,8 +1021,6 @@ setup_drag_and_drop (GtkTreeView *self) G_N_ELEMENTS (header_view_drag_types), GDK_ACTION_MOVE | GDK_ACTION_COPY); - gtk_signal_connect(GTK_OBJECT (self), - "drag_data_get", - GTK_SIGNAL_FUNC(drag_data_get_cb), - NULL); + g_signal_connect(G_OBJECT (self), "drag_data_get", + G_CALLBACK(drag_data_get_cb), NULL); }