[file-roller/gnome-3-0: 3/3] drag and drop: use the clicked row as drag icon
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller/gnome-3-0: 3/3] drag and drop: use the clicked row as drag icon
- Date: Tue, 12 Jul 2011 20:30:40 +0000 (UTC)
commit fbb39fcb4be47fec09d911292777835707977159
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Jul 12 22:28:53 2011 +0200
drag and drop: use the clicked row as drag icon
src/eggtreemultidnd.c | 29 ++++++++++++++++++++++++++---
1 files changed, 26 insertions(+), 3 deletions(-)
---
diff --git a/src/eggtreemultidnd.c b/src/eggtreemultidnd.c
index 5bf4698..f642fc4 100644
--- a/src/eggtreemultidnd.c
+++ b/src/eggtreemultidnd.c
@@ -317,16 +317,39 @@ egg_tree_multi_drag_motion_event (GtkWidget *widget,
model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
if (egg_tree_multi_drag_source_row_draggable (EGG_TREE_MULTI_DRAG_SOURCE (model), path_list))
{
- GtkTargetList *target_list = gtk_target_list_new (target_table,
- G_N_ELEMENTS (target_table));
+ GtkTargetList *target_list;
+ GtkTreePath *tree_path;
+ int cell_x;
+ int cell_y;
+ double cursor_pos;
+ target_list = gtk_target_list_new (target_table, G_N_ELEMENTS (target_table));
context = gtk_drag_begin (widget,
target_list,
GDK_ACTION_COPY,
priv_data->pressed_button,
(GdkEvent*)event);
set_context_data (context, path_list);
- gtk_drag_set_icon_default (context);
+
+ if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (widget),
+ priv_data->x,
+ priv_data->y,
+ &tree_path,
+ NULL,
+ &cell_x,
+ &cell_y))
+ {
+ cairo_surface_t *drag_icon;
+
+ drag_icon = gtk_tree_view_create_row_drag_icon (GTK_TREE_VIEW (widget), tree_path);
+ cairo_surface_set_device_offset (drag_icon, -cell_x, -cell_y);
+ gtk_drag_set_icon_surface (context, drag_icon);
+
+ cairo_surface_destroy (drag_icon);
+ gtk_tree_path_free (tree_path);
+ }
+ else
+ gtk_drag_set_icon_default (context);
gtk_target_list_unref (target_list);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]