summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <chris@gnome-de.org>2005-09-19 11:57:42 +0000
committerChristian Neumair <cneumair@src.gnome.org>2005-09-19 11:57:42 +0000
commit371c3a3812d1657f08e0324558d660365d842368 (patch)
tree2831673ae1e8830cfe87786336a3d906aafae399
parentafd498df20037bd218945860909e433b21b05cea (diff)
downloadnautilus-371c3a3812d1657f08e0324558d660365d842368.tar.gz
Setup drag in the "drag-begin" handler.
2005-09-19 Christian Neumair <chris@gnome-de.org> * src/file-manager/fm-list-view.c: (drag_begin_callback), (motion_notify_callback): Setup drag in the "drag-begin" handler.
-rw-r--r--ChangeLog6
-rw-r--r--src/file-manager/fm-list-view.c51
2 files changed, 36 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 61ccd9c89..f1e059224 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-19 Christian Neumair <chris@gnome-de.org>
+
+ * src/file-manager/fm-list-view.c: (drag_begin_callback),
+ (motion_notify_callback):
+ Setup drag in the "drag-begin" handler.
+
2005-09-19 Alexander Larsson <alexl@redhat.com>
* libnautilus-private/nautilus-icon-container.[ch]:
diff --git a/src/file-manager/fm-list-view.c b/src/file-manager/fm-list-view.c
index 82eab8a03..8d8f9669c 100644
--- a/src/file-manager/fm-list-view.c
+++ b/src/file-manager/fm-list-view.c
@@ -406,6 +406,34 @@ get_drag_pixbuf (FMListView *view)
return ret;
}
+static void
+drag_begin_callback (GtkWidget *widget,
+ GdkDragContext *context,
+ FMListView *view)
+{
+ GList *ref_list;
+ GdkPixbuf *pixbuf;
+
+ pixbuf = get_drag_pixbuf (view);
+ if (pixbuf) {
+ gtk_drag_set_icon_pixbuf (context,
+ pixbuf,
+ 0, 0);
+ g_object_unref (pixbuf);
+ } else {
+ gtk_drag_set_icon_default (context);
+ }
+
+ stop_drag_check (view);
+ view->details->drag_started = TRUE;
+
+ ref_list = get_filtered_selection_refs (GTK_TREE_VIEW (widget));
+ g_object_set_data_full (G_OBJECT (context),
+ "drag-info",
+ ref_list,
+ (GDestroyNotify)ref_list_free);
+}
+
static gboolean
motion_notify_callback (GtkWidget *widget,
GdkEventMotion *event,
@@ -414,8 +442,6 @@ motion_notify_callback (GtkWidget *widget,
FMListView *view;
GdkDragContext *context;
GdkCursor *cursor;
- GList *ref_list;
- GdkPixbuf *pixbuf;
GtkTreePath *last_hover_path;
GtkTreeIter iter;
@@ -476,25 +502,6 @@ motion_notify_callback (GtkWidget *widget,
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_ASK,
view->details->drag_button,
(GdkEvent*)event);
-
- stop_drag_check (view);
- view->details->drag_started = TRUE;
-
- ref_list = get_filtered_selection_refs (GTK_TREE_VIEW (widget));
- g_object_set_data_full (G_OBJECT (context),
- "drag-info",
- ref_list,
- (GDestroyNotify)ref_list_free);
-
- pixbuf = get_drag_pixbuf (view);
- if (pixbuf) {
- gtk_drag_set_icon_pixbuf (context,
- pixbuf,
- 0, 0);
- g_object_unref (pixbuf);
- } else {
- gtk_drag_set_icon_default (context);
- }
}
return TRUE;
}
@@ -1346,6 +1353,8 @@ create_and_set_up_tree_view (FMListView *view)
"changed",
G_CALLBACK (list_selection_changed_callback), view, 0);
+ g_signal_connect_object (view->details->tree_view, "drag_begin",
+ G_CALLBACK (drag_begin_callback), view, 0);
g_signal_connect_object (view->details->tree_view, "drag_data_get",
G_CALLBACK (drag_data_get_callback), view, 0);
g_signal_connect_object (view->details->tree_view, "motion_notify_event",