diff options
author | Havoc Pennington <hp@redhat.com> | 2001-01-19 22:39:19 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2001-01-19 22:39:19 +0000 |
commit | e248e4e79eb81478d62a42df12e9c11a837dd068 (patch) | |
tree | 1c1001af13a5e32ee9dd9637c8d70ea080af3eab /gtk/gtktreeview.h | |
parent | 3da8e3c7dd846e48d745c9a1b4cafd399fd49517 (diff) | |
download | gtk+-e248e4e79eb81478d62a42df12e9c11a837dd068.tar.gz |
sync to tree changes
2001-01-19 Havoc Pennington <hp@redhat.com>
* demos/gtk-demo/main.c (button_press_event_cb): sync to tree changes
* gtk/gtkrbtree.c (_gtk_rbtree_node_find_offset): fix this
function
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_widget):
implement
* gtk/gtktreeview.c (gtk_tree_view_move_to): rename
scroll_to_cell, matches TextView scroll functions better
(gtk_tree_view_tree_to_widget_coords): new function
(gtk_tree_view_widget_to_tree_coords): new function
(gtk_tree_view_get_visible_rect): new function
(gtk_tree_view_get_path_at_pos): accept negative coordinates
(gtk_tree_view_draw_node_focus_rect): new function moved from
draw_focus, also, use width of bin_window as width of the focus
rect
(gtk_tree_view_expand_row): fix bug where it didn't recognize
already-expanded rows
(gtk_tree_view_get_cell_rect): new function
(gtk_tree_view_get_path_at_pos): return the click position
relative to the passed-in cell
(gtk_tree_view_set_expander_column): new function
* configure.in: remove gtk-config-2.0 chmod
* gtk/gtktextview.c (gtk_text_view_drag_motion): small cleanups,
and properly handle drags with targets we don't understand
(gtk_text_view_drag_end): don't stop scrolling, the source isn't
scrolling anyway
(gtk_text_view_drag_drop): stop scrolling here though, and set the
mark invisible
* gtk/gtkdnd.c (gtk_drag_dest_find_target): export as a public
function
(gtk_drag_dest_get_target_list): new function
(gtk_drag_dest_set_target_list): new function
* gtk/gtktreeview.c: Add a bunch of drag-and-drop implementation
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): add fields
related to drag-and-drop
Diffstat (limited to 'gtk/gtktreeview.h')
-rw-r--r-- | gtk/gtktreeview.h | 104 |
1 files changed, 102 insertions, 2 deletions
diff --git a/gtk/gtktreeview.h b/gtk/gtktreeview.h index 58709893ff..d15109eff2 100644 --- a/gtk/gtktreeview.h +++ b/gtk/gtktreeview.h @@ -22,11 +22,24 @@ #include <gtk/gtkcontainer.h> #include <gtk/gtktreemodel.h> #include <gtk/gtktreeviewcolumn.h> +#include <gtk/gtkdnd.h> #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +typedef enum +{ + /* drop before/after this row */ + GTK_TREE_VIEW_DROP_BEFORE, + GTK_TREE_VIEW_DROP_AFTER, + /* drop as a child of this row (with fallback to before or after + * if into is not possible) + */ + GTK_TREE_VIEW_DROP_INTO_OR_BEFORE, + GTK_TREE_VIEW_DROP_INTO_OR_AFTER +} GtkTreeViewDropPosition; + #define GTK_TYPE_TREE_VIEW (gtk_tree_view_get_type ()) #define GTK_TREE_VIEW(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_VIEW, GtkTreeView)) #define GTK_TREE_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW, GtkTreeViewClass)) @@ -89,8 +102,17 @@ gint gtk_tree_view_insert_column (GtkTreeView *tr GtkTreeViewColumn *gtk_tree_view_get_column (GtkTreeView *tree_view, gint n); +void gtk_tree_view_set_expander_column (GtkTreeView *tree_view, + gint col); + +gint gtk_tree_view_get_expander_column (GtkTreeView *tree_view); + /* Actions */ -void gtk_tree_view_move_to (GtkTreeView *tree_view, +void gtk_tree_view_scroll_to_point (GtkTreeView *tree_view, + gint tree_x, + gint tree_y); + +void gtk_tree_view_scroll_to_cell (GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gfloat row_align, @@ -100,7 +122,14 @@ gboolean gtk_tree_view_get_path_at_pos (GtkTreeView *tr gint x, gint y, GtkTreePath **path, - GtkTreeViewColumn **column); + GtkTreeViewColumn **column, + gint *cell_x, + gint *cell_y); +void gtk_tree_view_get_cell_rect (GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewColumn *column, + GdkRectangle *rect); + void gtk_tree_view_expand_all (GtkTreeView *tree_view); void gtk_tree_view_collapse_all (GtkTreeView *tree_view); gboolean gtk_tree_view_expand_row (GtkTreeView *tree_view, @@ -109,6 +138,77 @@ gboolean gtk_tree_view_expand_row (GtkTreeView *tr gboolean gtk_tree_view_collapse_row (GtkTreeView *tree_view, GtkTreePath *path); +void gtk_tree_view_get_visible_rect (GtkTreeView *tree_view, + GdkRectangle *visible_rect); +void gtk_tree_view_widget_to_tree_coords (GtkTreeView *tree_view, + gint wx, + gint wy, + gint *tx, + gint *ty); +void gtk_tree_view_tree_to_widget_coords (GtkTreeView *tree_view, + gint tx, + gint ty, + gint *wx, + gint *wy); + + + +/* Drag-and-Drop support */ + +typedef gboolean (* GtkTreeViewDraggableFunc) (GtkTreeView *tree_view, + GdkDragContext *context, + GtkTreePath *path, + gpointer user_data); + +/* this func can change "pos" if it likes, in addition to returning + * true/false for whether a drop is possible + */ +typedef gboolean (* GtkTreeViewDroppableFunc) (GtkTreeView *tree_view, + GdkDragContext *context, + GtkTreePath *path, + GtkTreeViewDropPosition *pos, + gpointer user_data); + +void gtk_tree_view_set_rows_drag_source (GtkTreeView *tree_view, + GdkModifierType start_button_mask, + const GtkTargetEntry *targets, + gint n_targets, + GdkDragAction actions, + GtkTreeViewDraggableFunc row_draggable_func, + gpointer user_data); +void gtk_tree_view_set_rows_drag_dest (GtkTreeView *tree_view, + const GtkTargetEntry *targets, + gint n_targets, + GdkDragAction actions, + GtkTreeViewDroppableFunc location_droppable_func, + gpointer user_data); + +void gtk_tree_view_unset_rows_drag_source (GtkTreeView *tree_view); +void gtk_tree_view_unset_rows_drag_dest (GtkTreeView *tree_view); + +/* These are useful to implement your own custom stuff. */ +void gtk_tree_view_set_drag_dest_row (GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewDropPosition pos); +gboolean gtk_tree_view_get_dest_row_at_pos (GtkTreeView *tree_view, + gint drag_x, + gint drag_y, + GtkTreePath **path, + GtkTreeViewDropPosition *pos); +GdkPixmap* gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, + GtkTreePath *path); + +/* The selection data would normally have target type GTK_TREE_VIEW_ROW in this + * case. If the target is wrong these functions return FALSE. + */ +gboolean gtk_selection_data_set_tree_row (GtkSelectionData *selection_data, + GtkTreeView *tree_view, + GtkTreePath *path); +gboolean gtk_selection_data_get_tree_row (GtkSelectionData *selection_data, + GtkTreeView **tree_view, + GtkTreePath **path); + + #ifdef __cplusplus } |