2 * Copyright (C) 2001 Red Hat, Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
18 #ifndef __GTK_TREE_DND_H__
19 #define __GTK_TREE_DND_H__
21 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
22 #error "Only <gtk/gtk.h> can be included directly."
25 #include <gtk/gtktreemodel.h>
26 #include <gtk/gtkdnd.h>
30 #define GTK_TYPE_TREE_DRAG_SOURCE (gtk_tree_drag_source_get_type ())
31 #define GTK_TREE_DRAG_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_DRAG_SOURCE, GtkTreeDragSource))
32 #define GTK_IS_TREE_DRAG_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_DRAG_SOURCE))
33 #define GTK_TREE_DRAG_SOURCE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_TREE_DRAG_SOURCE, GtkTreeDragSourceIface))
35 typedef struct _GtkTreeDragSource GtkTreeDragSource; /* Dummy typedef */
36 typedef struct _GtkTreeDragSourceIface GtkTreeDragSourceIface;
38 struct _GtkTreeDragSourceIface
40 GTypeInterface g_iface;
42 /* VTable - not signals */
44 gboolean (* row_draggable) (GtkTreeDragSource *drag_source,
47 gboolean (* drag_data_get) (GtkTreeDragSource *drag_source,
49 GtkSelectionData *selection_data);
51 gboolean (* drag_data_delete) (GtkTreeDragSource *drag_source,
55 GType gtk_tree_drag_source_get_type (void) G_GNUC_CONST;
57 /* Returns whether the given row can be dragged */
58 gboolean gtk_tree_drag_source_row_draggable (GtkTreeDragSource *drag_source,
61 /* Deletes the given row, or returns FALSE if it can't */
62 gboolean gtk_tree_drag_source_drag_data_delete (GtkTreeDragSource *drag_source,
65 /* Fills in selection_data with type selection_data->target based on
66 * the row denoted by path, returns TRUE if it does anything
68 gboolean gtk_tree_drag_source_drag_data_get (GtkTreeDragSource *drag_source,
70 GtkSelectionData *selection_data);
72 #define GTK_TYPE_TREE_DRAG_DEST (gtk_tree_drag_dest_get_type ())
73 #define GTK_TREE_DRAG_DEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_DRAG_DEST, GtkTreeDragDest))
74 #define GTK_IS_TREE_DRAG_DEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_DRAG_DEST))
75 #define GTK_TREE_DRAG_DEST_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_TREE_DRAG_DEST, GtkTreeDragDestIface))
77 typedef struct _GtkTreeDragDest GtkTreeDragDest; /* Dummy typedef */
78 typedef struct _GtkTreeDragDestIface GtkTreeDragDestIface;
80 struct _GtkTreeDragDestIface
82 GTypeInterface g_iface;
84 /* VTable - not signals */
86 gboolean (* drag_data_received) (GtkTreeDragDest *drag_dest,
88 GtkSelectionData *selection_data);
90 gboolean (* row_drop_possible) (GtkTreeDragDest *drag_dest,
91 GtkTreePath *dest_path,
92 GtkSelectionData *selection_data);
95 GType gtk_tree_drag_dest_get_type (void) G_GNUC_CONST;
97 /* Inserts a row before dest which contains data in selection_data,
98 * or returns FALSE if it can't
100 gboolean gtk_tree_drag_dest_drag_data_received (GtkTreeDragDest *drag_dest,
102 GtkSelectionData *selection_data);
105 /* Returns TRUE if we can drop before path; path may not exist. */
106 gboolean gtk_tree_drag_dest_row_drop_possible (GtkTreeDragDest *drag_dest,
107 GtkTreePath *dest_path,
108 GtkSelectionData *selection_data);
111 /* The selection data would normally have target type GTK_TREE_MODEL_ROW in this
112 * case. If the target is wrong these functions return FALSE.
114 gboolean gtk_tree_set_row_drag_data (GtkSelectionData *selection_data,
115 GtkTreeModel *tree_model,
117 gboolean gtk_tree_get_row_drag_data (GtkSelectionData *selection_data,
118 GtkTreeModel **tree_model,
123 #endif /* __GTK_TREE_DND_H__ */