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
This commit is contained in:
committed by
Havoc Pennington
parent
3da8e3c7dd
commit
e248e4e79e
@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user