]> Pileus Git - ~andy/gtk/blob - gtk/gtktreeview.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtktreeview.h
1 /* gtktreeview.h
2  * Copyright (C) 2000  Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>
3  *
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.
8  *
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.
13  *
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/>.
16  */
17
18 #ifndef __GTK_TREE_VIEW_H__
19 #define __GTK_TREE_VIEW_H__
20
21 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
22 #error "Only <gtk/gtk.h> can be included directly."
23 #endif
24
25 #include <gtk/gtkcontainer.h>
26 #include <gtk/gtktreemodel.h>
27 #include <gtk/gtktreeviewcolumn.h>
28 #include <gtk/gtkdnd.h>
29 #include <gtk/gtkentry.h>
30
31 G_BEGIN_DECLS
32
33 /**
34  * GtkTreeViewDropPosition:
35  * @GTK_TREE_VIEW_DROP_BEFORE: dropped row is inserted before
36  * @GTK_TREE_VIEW_DROP_AFTER: dropped row is inserted after
37  * @GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: dropped row becomes a child or is inserted before
38  * @GTK_TREE_VIEW_DROP_INTO_OR_AFTER: dropped row becomes a child or is inserted after
39  *
40  * An enum for determining where a dropped row goes.
41  */
42 typedef enum
43 {
44   /* drop before/after this row */
45   GTK_TREE_VIEW_DROP_BEFORE,
46   GTK_TREE_VIEW_DROP_AFTER,
47   /* drop as a child of this row (with fallback to before or after
48    * if into is not possible)
49    */
50   GTK_TREE_VIEW_DROP_INTO_OR_BEFORE,
51   GTK_TREE_VIEW_DROP_INTO_OR_AFTER
52 } GtkTreeViewDropPosition;
53
54 #define GTK_TYPE_TREE_VIEW              (gtk_tree_view_get_type ())
55 #define GTK_TREE_VIEW(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_VIEW, GtkTreeView))
56 #define GTK_TREE_VIEW_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW, GtkTreeViewClass))
57 #define GTK_IS_TREE_VIEW(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_VIEW))
58 #define GTK_IS_TREE_VIEW_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TREE_VIEW))
59 #define GTK_TREE_VIEW_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TREE_VIEW, GtkTreeViewClass))
60
61 typedef struct _GtkTreeView           GtkTreeView;
62 typedef struct _GtkTreeViewClass      GtkTreeViewClass;
63 typedef struct _GtkTreeViewPrivate    GtkTreeViewPrivate;
64 typedef struct _GtkTreeSelection      GtkTreeSelection;
65 typedef struct _GtkTreeSelectionClass GtkTreeSelectionClass;
66
67 struct _GtkTreeView
68 {
69   GtkContainer parent;
70
71   /*< private >*/
72   GtkTreeViewPrivate *priv;
73 };
74
75 struct _GtkTreeViewClass
76 {
77   GtkContainerClass parent_class;
78
79   void     (* row_activated)              (GtkTreeView       *tree_view,
80                                            GtkTreePath       *path,
81                                            GtkTreeViewColumn *column);
82   gboolean (* test_expand_row)            (GtkTreeView       *tree_view,
83                                            GtkTreeIter       *iter,
84                                            GtkTreePath       *path);
85   gboolean (* test_collapse_row)          (GtkTreeView       *tree_view,
86                                            GtkTreeIter       *iter,
87                                            GtkTreePath       *path);
88   void     (* row_expanded)               (GtkTreeView       *tree_view,
89                                            GtkTreeIter       *iter,
90                                            GtkTreePath       *path);
91   void     (* row_collapsed)              (GtkTreeView       *tree_view,
92                                            GtkTreeIter       *iter,
93                                            GtkTreePath       *path);
94   void     (* columns_changed)            (GtkTreeView       *tree_view);
95   void     (* cursor_changed)             (GtkTreeView       *tree_view);
96
97   /* Key Binding signals */
98   gboolean (* move_cursor)                (GtkTreeView       *tree_view,
99                                            GtkMovementStep    step,
100                                            gint               count);
101   gboolean (* select_all)                 (GtkTreeView       *tree_view);
102   gboolean (* unselect_all)               (GtkTreeView       *tree_view);
103   gboolean (* select_cursor_row)          (GtkTreeView       *tree_view,
104                                            gboolean           start_editing);
105   gboolean (* toggle_cursor_row)          (GtkTreeView       *tree_view);
106   gboolean (* expand_collapse_cursor_row) (GtkTreeView       *tree_view,
107                                            gboolean           logical,
108                                            gboolean           expand,
109                                            gboolean           open_all);
110   gboolean (* select_cursor_parent)       (GtkTreeView       *tree_view);
111   gboolean (* start_interactive_search)   (GtkTreeView       *tree_view);
112
113   /* Padding for future expansion */
114   void (*_gtk_reserved1) (void);
115   void (*_gtk_reserved2) (void);
116   void (*_gtk_reserved3) (void);
117   void (*_gtk_reserved4) (void);
118   void (*_gtk_reserved5) (void);
119   void (*_gtk_reserved6) (void);
120   void (*_gtk_reserved7) (void);
121   void (*_gtk_reserved8) (void);
122 };
123
124 /**
125  * GtkTreeViewColumnDropFunc:
126  * @tree_view: A #GtkTreeView
127  * @column: The #GtkTreeViewColumn being dragged
128  * @prev_column: A #GtkTreeViewColumn on one side of @column
129  * @next_column: A #GtkTreeViewColumn on the other side of @column
130  * @data: (closure): user data
131  *
132  * Function type for determining whether @column can be dropped in a
133  * particular spot (as determined by @prev_column and @next_column).  In
134  * left to right locales, @prev_column is on the left of the potential drop
135  * spot, and @next_column is on the right.  In right to left mode, this is
136  * reversed.  This function should return %TRUE if the spot is a valid drop
137  * spot.  Please note that returning %TRUE does not actually indicate that
138  * the column drop was made, but is meant only to indicate a possible drop
139  * spot to the user.
140  *
141  * Returns: %TRUE, if @column can be dropped in this spot
142  */
143 typedef gboolean (* GtkTreeViewColumnDropFunc) (GtkTreeView             *tree_view,
144                                                 GtkTreeViewColumn       *column,
145                                                 GtkTreeViewColumn       *prev_column,
146                                                 GtkTreeViewColumn       *next_column,
147                                                 gpointer                 data);
148
149 /**
150  * GtkTreeViewMappingFunc:
151  * @tree_view: A #GtkTreeView
152  * @path: The path that's expanded
153  * @user_data: user data
154  *
155  * Function used for gtk_tree_view_map_expanded_rows().
156  */
157 typedef void     (* GtkTreeViewMappingFunc)    (GtkTreeView             *tree_view,
158                                                 GtkTreePath             *path,
159                                                 gpointer                 user_data);
160
161 /**
162  * GtkTreeViewSearchEqualFunc:
163  * @model: the #GtkTreeModel being searched
164  * @column: the search column set by gtk_tree_view_set_search_column()
165  * @key: the key string to compare with
166  * @iter: a #GtkTreeIter pointing the row of @model that should be compared
167  *  with @key.
168  * @search_data: (closure): user data from gtk_tree_view_set_search_equal_func()
169  *
170  * A function used for checking whether a row in @model matches
171  * a search key string entered by the user. Note the return value
172  * is reversed from what you would normally expect, though it
173  * has some similarity to strcmp() returning 0 for equal strings.
174  *
175  * Returns: %FALSE if the row matches, %TRUE otherwise.
176  */
177 typedef gboolean (*GtkTreeViewSearchEqualFunc) (GtkTreeModel            *model,
178                                                 gint                     column,
179                                                 const gchar             *key,
180                                                 GtkTreeIter             *iter,
181                                                 gpointer                 search_data);
182
183 /**
184  * GtkTreeViewRowSeparatorFunc:
185  * @model: the #GtkTreeModel
186  * @iter: a #GtkTreeIter pointing at a row in @model
187  * @data: (closure): user data
188  *
189  * Function type for determining whether the row pointed to by @iter should
190  * be rendered as a separator. A common way to implement this is to have a
191  * boolean column in the model, whose values the #GtkTreeViewRowSeparatorFunc
192  * returns.
193  *
194  * Returns: %TRUE if the row is a separator
195  */
196 typedef gboolean (*GtkTreeViewRowSeparatorFunc) (GtkTreeModel      *model,
197                                                  GtkTreeIter       *iter,
198                                                  gpointer           data);
199 typedef void     (*GtkTreeViewSearchPositionFunc) (GtkTreeView  *tree_view,
200                                                    GtkWidget    *search_dialog,
201                                                    gpointer      user_data);
202
203
204 /* Creators */
205 GType                  gtk_tree_view_get_type                      (void) G_GNUC_CONST;
206 GtkWidget             *gtk_tree_view_new                           (void);
207 GtkWidget             *gtk_tree_view_new_with_model                (GtkTreeModel              *model);
208
209 /* Accessors */
210 GtkTreeModel          *gtk_tree_view_get_model                     (GtkTreeView               *tree_view);
211 void                   gtk_tree_view_set_model                     (GtkTreeView               *tree_view,
212                                                                     GtkTreeModel              *model);
213 GtkTreeSelection      *gtk_tree_view_get_selection                 (GtkTreeView               *tree_view);
214
215 GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_hadjustment)
216 GtkAdjustment         *gtk_tree_view_get_hadjustment               (GtkTreeView               *tree_view);
217 GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_set_hadjustment)
218 void                   gtk_tree_view_set_hadjustment               (GtkTreeView               *tree_view,
219                                                                     GtkAdjustment             *adjustment);
220 GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_get_vadjustment)
221 GtkAdjustment         *gtk_tree_view_get_vadjustment               (GtkTreeView               *tree_view);
222 GDK_DEPRECATED_IN_3_0_FOR(gtk_scrollable_set_vadjustment)
223 void                   gtk_tree_view_set_vadjustment               (GtkTreeView               *tree_view,
224                                                                     GtkAdjustment             *adjustment);
225
226
227 gboolean               gtk_tree_view_get_headers_visible           (GtkTreeView               *tree_view);
228 void                   gtk_tree_view_set_headers_visible           (GtkTreeView               *tree_view,
229                                                                     gboolean                   headers_visible);
230 void                   gtk_tree_view_columns_autosize              (GtkTreeView               *tree_view);
231 gboolean               gtk_tree_view_get_headers_clickable         (GtkTreeView *tree_view);
232 void                   gtk_tree_view_set_headers_clickable         (GtkTreeView               *tree_view,
233                                                                     gboolean                   setting);
234 void                   gtk_tree_view_set_rules_hint                (GtkTreeView               *tree_view,
235                                                                     gboolean                   setting);
236 gboolean               gtk_tree_view_get_rules_hint                (GtkTreeView               *tree_view);
237 GDK_AVAILABLE_IN_3_8
238 gboolean               gtk_tree_view_get_activate_on_single_click  (GtkTreeView               *tree_view);
239 GDK_AVAILABLE_IN_3_8
240 void                   gtk_tree_view_set_activate_on_single_click  (GtkTreeView               *tree_view,
241                                                                     gboolean                   single);
242
243 /* Column funtions */
244 gint                   gtk_tree_view_append_column                 (GtkTreeView               *tree_view,
245                                                                     GtkTreeViewColumn         *column);
246 gint                   gtk_tree_view_remove_column                 (GtkTreeView               *tree_view,
247                                                                     GtkTreeViewColumn         *column);
248 gint                   gtk_tree_view_insert_column                 (GtkTreeView               *tree_view,
249                                                                     GtkTreeViewColumn         *column,
250                                                                     gint                       position);
251 gint                   gtk_tree_view_insert_column_with_attributes (GtkTreeView               *tree_view,
252                                                                     gint                       position,
253                                                                     const gchar               *title,
254                                                                     GtkCellRenderer           *cell,
255                                                                     ...) G_GNUC_NULL_TERMINATED;
256 gint                   gtk_tree_view_insert_column_with_data_func  (GtkTreeView               *tree_view,
257                                                                     gint                       position,
258                                                                     const gchar               *title,
259                                                                     GtkCellRenderer           *cell,
260                                                                     GtkTreeCellDataFunc        func,
261                                                                     gpointer                   data,
262                                                                     GDestroyNotify             dnotify);
263
264 GDK_AVAILABLE_IN_3_4
265 guint                  gtk_tree_view_get_n_columns                 (GtkTreeView               *tree_view);
266 GtkTreeViewColumn     *gtk_tree_view_get_column                    (GtkTreeView               *tree_view,
267                                                                     gint                       n);
268 GList                 *gtk_tree_view_get_columns                   (GtkTreeView               *tree_view);
269 void                   gtk_tree_view_move_column_after             (GtkTreeView               *tree_view,
270                                                                     GtkTreeViewColumn         *column,
271                                                                     GtkTreeViewColumn         *base_column);
272 void                   gtk_tree_view_set_expander_column           (GtkTreeView               *tree_view,
273                                                                     GtkTreeViewColumn         *column);
274 GtkTreeViewColumn     *gtk_tree_view_get_expander_column           (GtkTreeView               *tree_view);
275 void                   gtk_tree_view_set_column_drag_function      (GtkTreeView               *tree_view,
276                                                                     GtkTreeViewColumnDropFunc  func,
277                                                                     gpointer                   user_data,
278                                                                     GDestroyNotify             destroy);
279
280 /* Actions */
281 void                   gtk_tree_view_scroll_to_point               (GtkTreeView               *tree_view,
282                                                                     gint                       tree_x,
283                                                                     gint                       tree_y);
284 void                   gtk_tree_view_scroll_to_cell                (GtkTreeView               *tree_view,
285                                                                     GtkTreePath               *path,
286                                                                     GtkTreeViewColumn         *column,
287                                                                     gboolean                   use_align,
288                                                                     gfloat                     row_align,
289                                                                     gfloat                     col_align);
290 void                   gtk_tree_view_row_activated                 (GtkTreeView               *tree_view,
291                                                                     GtkTreePath               *path,
292                                                                     GtkTreeViewColumn         *column);
293 void                   gtk_tree_view_expand_all                    (GtkTreeView               *tree_view);
294 void                   gtk_tree_view_collapse_all                  (GtkTreeView               *tree_view);
295 void                   gtk_tree_view_expand_to_path                (GtkTreeView               *tree_view,
296                                                                     GtkTreePath               *path);
297 gboolean               gtk_tree_view_expand_row                    (GtkTreeView               *tree_view,
298                                                                     GtkTreePath               *path,
299                                                                     gboolean                   open_all);
300 gboolean               gtk_tree_view_collapse_row                  (GtkTreeView               *tree_view,
301                                                                     GtkTreePath               *path);
302 void                   gtk_tree_view_map_expanded_rows             (GtkTreeView               *tree_view,
303                                                                     GtkTreeViewMappingFunc     func,
304                                                                     gpointer                   data);
305 gboolean               gtk_tree_view_row_expanded                  (GtkTreeView               *tree_view,
306                                                                     GtkTreePath               *path);
307 void                   gtk_tree_view_set_reorderable               (GtkTreeView               *tree_view,
308                                                                     gboolean                   reorderable);
309 gboolean               gtk_tree_view_get_reorderable               (GtkTreeView               *tree_view);
310 void                   gtk_tree_view_set_cursor                    (GtkTreeView               *tree_view,
311                                                                     GtkTreePath               *path,
312                                                                     GtkTreeViewColumn         *focus_column,
313                                                                     gboolean                   start_editing);
314 void                   gtk_tree_view_set_cursor_on_cell            (GtkTreeView               *tree_view,
315                                                                     GtkTreePath               *path,
316                                                                     GtkTreeViewColumn         *focus_column,
317                                                                     GtkCellRenderer           *focus_cell,
318                                                                     gboolean                   start_editing);
319 void                   gtk_tree_view_get_cursor                    (GtkTreeView               *tree_view,
320                                                                     GtkTreePath              **path,
321                                                                     GtkTreeViewColumn        **focus_column);
322
323
324 /* Layout information */
325 GdkWindow             *gtk_tree_view_get_bin_window                (GtkTreeView               *tree_view);
326 gboolean               gtk_tree_view_get_path_at_pos               (GtkTreeView               *tree_view,
327                                                                     gint                       x,
328                                                                     gint                       y,
329                                                                     GtkTreePath              **path,
330                                                                     GtkTreeViewColumn        **column,
331                                                                     gint                      *cell_x,
332                                                                     gint                      *cell_y);
333 void                   gtk_tree_view_get_cell_area                 (GtkTreeView               *tree_view,
334                                                                     GtkTreePath               *path,
335                                                                     GtkTreeViewColumn         *column,
336                                                                     GdkRectangle              *rect);
337 void                   gtk_tree_view_get_background_area           (GtkTreeView               *tree_view,
338                                                                     GtkTreePath               *path,
339                                                                     GtkTreeViewColumn         *column,
340                                                                     GdkRectangle              *rect);
341 void                   gtk_tree_view_get_visible_rect              (GtkTreeView               *tree_view,
342                                                                     GdkRectangle              *visible_rect);
343 gboolean               gtk_tree_view_get_visible_range             (GtkTreeView               *tree_view,
344                                                                     GtkTreePath              **start_path,
345                                                                     GtkTreePath              **end_path);
346 gboolean               gtk_tree_view_is_blank_at_pos               (GtkTreeView               *tree_view,
347                                                                     gint                       x,
348                                                                     gint                       y,
349                                                                     GtkTreePath              **path,
350                                                                     GtkTreeViewColumn        **column,
351                                                                     gint                      *cell_x,
352                                                                     gint                      *cell_y);
353
354 /* Drag-and-Drop support */
355 void                   gtk_tree_view_enable_model_drag_source      (GtkTreeView               *tree_view,
356                                                                     GdkModifierType            start_button_mask,
357                                                                     const GtkTargetEntry      *targets,
358                                                                     gint                       n_targets,
359                                                                     GdkDragAction              actions);
360 void                   gtk_tree_view_enable_model_drag_dest        (GtkTreeView               *tree_view,
361                                                                     const GtkTargetEntry      *targets,
362                                                                     gint                       n_targets,
363                                                                     GdkDragAction              actions);
364 void                   gtk_tree_view_unset_rows_drag_source        (GtkTreeView               *tree_view);
365 void                   gtk_tree_view_unset_rows_drag_dest          (GtkTreeView               *tree_view);
366
367
368 /* These are useful to implement your own custom stuff. */
369 void                   gtk_tree_view_set_drag_dest_row             (GtkTreeView               *tree_view,
370                                                                     GtkTreePath               *path,
371                                                                     GtkTreeViewDropPosition    pos);
372 void                   gtk_tree_view_get_drag_dest_row             (GtkTreeView               *tree_view,
373                                                                     GtkTreePath              **path,
374                                                                     GtkTreeViewDropPosition   *pos);
375 gboolean               gtk_tree_view_get_dest_row_at_pos           (GtkTreeView               *tree_view,
376                                                                     gint                       drag_x,
377                                                                     gint                       drag_y,
378                                                                     GtkTreePath              **path,
379                                                                     GtkTreeViewDropPosition   *pos);
380 cairo_surface_t       *gtk_tree_view_create_row_drag_icon          (GtkTreeView               *tree_view,
381                                                                     GtkTreePath               *path);
382
383 /* Interactive search */
384 void                       gtk_tree_view_set_enable_search     (GtkTreeView                *tree_view,
385                                                                 gboolean                    enable_search);
386 gboolean                   gtk_tree_view_get_enable_search     (GtkTreeView                *tree_view);
387 gint                       gtk_tree_view_get_search_column     (GtkTreeView                *tree_view);
388 void                       gtk_tree_view_set_search_column     (GtkTreeView                *tree_view,
389                                                                 gint                        column);
390 GtkTreeViewSearchEqualFunc gtk_tree_view_get_search_equal_func (GtkTreeView                *tree_view);
391 void                       gtk_tree_view_set_search_equal_func (GtkTreeView                *tree_view,
392                                                                 GtkTreeViewSearchEqualFunc  search_equal_func,
393                                                                 gpointer                    search_user_data,
394                                                                 GDestroyNotify              search_destroy);
395
396 GtkEntry                     *gtk_tree_view_get_search_entry         (GtkTreeView                   *tree_view);
397 void                          gtk_tree_view_set_search_entry         (GtkTreeView                   *tree_view,
398                                                                       GtkEntry                      *entry);
399 GtkTreeViewSearchPositionFunc gtk_tree_view_get_search_position_func (GtkTreeView                   *tree_view);
400 void                          gtk_tree_view_set_search_position_func (GtkTreeView                   *tree_view,
401                                                                       GtkTreeViewSearchPositionFunc  func,
402                                                                       gpointer                       data,
403                                                                       GDestroyNotify                 destroy);
404
405 /* Convert between the different coordinate systems */
406 void gtk_tree_view_convert_widget_to_tree_coords       (GtkTreeView *tree_view,
407                                                         gint         wx,
408                                                         gint         wy,
409                                                         gint        *tx,
410                                                         gint        *ty);
411 void gtk_tree_view_convert_tree_to_widget_coords       (GtkTreeView *tree_view,
412                                                         gint         tx,
413                                                         gint         ty,
414                                                         gint        *wx,
415                                                         gint        *wy);
416 void gtk_tree_view_convert_widget_to_bin_window_coords (GtkTreeView *tree_view,
417                                                         gint         wx,
418                                                         gint         wy,
419                                                         gint        *bx,
420                                                         gint        *by);
421 void gtk_tree_view_convert_bin_window_to_widget_coords (GtkTreeView *tree_view,
422                                                         gint         bx,
423                                                         gint         by,
424                                                         gint        *wx,
425                                                         gint        *wy);
426 void gtk_tree_view_convert_tree_to_bin_window_coords   (GtkTreeView *tree_view,
427                                                         gint         tx,
428                                                         gint         ty,
429                                                         gint        *bx,
430                                                         gint        *by);
431 void gtk_tree_view_convert_bin_window_to_tree_coords   (GtkTreeView *tree_view,
432                                                         gint         bx,
433                                                         gint         by,
434                                                         gint        *tx,
435                                                         gint        *ty);
436
437 /* This function should really never be used.  It is just for use by ATK.
438  */
439 typedef void (* GtkTreeDestroyCountFunc)  (GtkTreeView             *tree_view,
440                                            GtkTreePath             *path,
441                                            gint                     children,
442                                            gpointer                 user_data);
443 GDK_DEPRECATED_IN_3_4
444 void gtk_tree_view_set_destroy_count_func (GtkTreeView             *tree_view,
445                                            GtkTreeDestroyCountFunc  func,
446                                            gpointer                 data,
447                                            GDestroyNotify           destroy);
448
449 void     gtk_tree_view_set_fixed_height_mode (GtkTreeView          *tree_view,
450                                               gboolean              enable);
451 gboolean gtk_tree_view_get_fixed_height_mode (GtkTreeView          *tree_view);
452 void     gtk_tree_view_set_hover_selection   (GtkTreeView          *tree_view,
453                                               gboolean              hover);
454 gboolean gtk_tree_view_get_hover_selection   (GtkTreeView          *tree_view);
455 void     gtk_tree_view_set_hover_expand      (GtkTreeView          *tree_view,
456                                               gboolean              expand);
457 gboolean gtk_tree_view_get_hover_expand      (GtkTreeView          *tree_view);
458 void     gtk_tree_view_set_rubber_banding    (GtkTreeView          *tree_view,
459                                               gboolean              enable);
460 gboolean gtk_tree_view_get_rubber_banding    (GtkTreeView          *tree_view);
461
462 gboolean gtk_tree_view_is_rubber_banding_active (GtkTreeView       *tree_view);
463
464 GtkTreeViewRowSeparatorFunc gtk_tree_view_get_row_separator_func (GtkTreeView               *tree_view);
465 void                        gtk_tree_view_set_row_separator_func (GtkTreeView                *tree_view,
466                                                                   GtkTreeViewRowSeparatorFunc func,
467                                                                   gpointer                    data,
468                                                                   GDestroyNotify              destroy);
469
470 GtkTreeViewGridLines        gtk_tree_view_get_grid_lines         (GtkTreeView                *tree_view);
471 void                        gtk_tree_view_set_grid_lines         (GtkTreeView                *tree_view,
472                                                                   GtkTreeViewGridLines        grid_lines);
473 gboolean                    gtk_tree_view_get_enable_tree_lines  (GtkTreeView                *tree_view);
474 void                        gtk_tree_view_set_enable_tree_lines  (GtkTreeView                *tree_view,
475                                                                   gboolean                    enabled);
476 void                        gtk_tree_view_set_show_expanders     (GtkTreeView                *tree_view,
477                                                                   gboolean                    enabled);
478 gboolean                    gtk_tree_view_get_show_expanders     (GtkTreeView                *tree_view);
479 void                        gtk_tree_view_set_level_indentation  (GtkTreeView                *tree_view,
480                                                                   gint                        indentation);
481 gint                        gtk_tree_view_get_level_indentation  (GtkTreeView                *tree_view);
482
483 /* Convenience functions for setting tooltips */
484 void          gtk_tree_view_set_tooltip_row    (GtkTreeView       *tree_view,
485                                                 GtkTooltip        *tooltip,
486                                                 GtkTreePath       *path);
487 void          gtk_tree_view_set_tooltip_cell   (GtkTreeView       *tree_view,
488                                                 GtkTooltip        *tooltip,
489                                                 GtkTreePath       *path,
490                                                 GtkTreeViewColumn *column,
491                                                 GtkCellRenderer   *cell);
492 gboolean      gtk_tree_view_get_tooltip_context(GtkTreeView       *tree_view,
493                                                 gint              *x,
494                                                 gint              *y,
495                                                 gboolean           keyboard_tip,
496                                                 GtkTreeModel     **model,
497                                                 GtkTreePath      **path,
498                                                 GtkTreeIter       *iter);
499 void          gtk_tree_view_set_tooltip_column (GtkTreeView       *tree_view,
500                                                 gint               column);
501 gint          gtk_tree_view_get_tooltip_column (GtkTreeView       *tree_view);
502
503 G_END_DECLS
504
505
506 #endif /* __GTK_TREE_VIEW_H__ */