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