1
<!-- ##### SECTION Title ##### -->
4
<!-- ##### SECTION Short_Description ##### -->
5
A widget for displaying both trees and lists
7
<!-- ##### SECTION Long_Description ##### -->
9
Widget that displays any object that implements the <link
10
linkend="GtkTreeModel">GtkTreeModel</link> interface.
14
Please refer to the <link linkend="TreeWidget">tree widget conceptual
15
overview</link> for an overview of all the objects and data types related
16
to the tree widget and how they work together.
20
Several different coordinate systems are exposed in the GtkTreeView API.
23
<inlinegraphic fileref="tree-view-coordinates.png" format="PNG"></inlinegraphic>
26
<member>Widget coordinates -- coordinates relative to the widget
27
(usually <literal>widget->window</literal>.</member>
28
<member>Bin window coordinates -- coordinates relative to the window
29
that GtkTreeView renders to.</member>
30
<member>Tree coordinates -- coordinates relative to the entire scrollable
31
area of GtkTreeView. These coordinates start at (0, 0) for row 0 of the
37
Several functions are available for converting between the different
38
coordinate systems. The most common translations are between widget and bin
39
window coordinates and between bin window and tree coordinates. For the
40
former you can use gtk_tree_view_convert_widget_to_bin_window_coords()
41
(and vice versa), for the latter gtk_tree_view_convert_bin_window_to_tree_coords()
45
<refsect2 id="GtkTreeView-BUILDER-UI">
46
<title>GtkTreeView as GtkBuildable</title>
48
The GtkTreeView implementation of the GtkBuildable interface accepts
49
GtkTreeViewColumn objects as <child> elements and exposes the
50
internal GtkTreeSelection in UI definitions.
53
<title>A UI definition fragment with GtkTreeView</title>
54
<programlisting><![CDATA[
55
<object class="GtkTreeView" id="treeview">
56
<property name="model">liststore1</property>
58
<object class="GtkTreeViewColumn" id="test-column">
59
<property name="title">Test</property>
61
<object class="GtkCellRendererText" id="test-renderer"/>
63
<attribute name="text">1</attribute>
68
<child internal-child="selection">
69
<object class="GtkTreeSelection" id="selection">
70
<signal name="changed" handler="on_treeview_selection_changed"/>
78
<!-- ##### SECTION See_Also ##### -->
80
#GtkTreeViewColumn, #GtkTreeSelection, #GtkTreeDnd, #GtkTreeMode, #GtkTreeSortable, #GtkTreeModelSort, #GtkListStore, #GtkTreeStore, #GtkCellRenderer, #GtkCellEditable, #GtkCellRendererPixbuf, #GtkCellRendererText, #GtkCellRendererToggle
83
<!-- ##### SECTION Stability_Level ##### -->
86
<!-- ##### SECTION Image ##### -->
89
<!-- ##### STRUCT GtkTreeView ##### -->
95
<!-- ##### SIGNAL GtkTreeView::columns-changed ##### -->
100
@tree_view: the object which received the signal.
102
<!-- ##### SIGNAL GtkTreeView::cursor-changed ##### -->
107
@tree_view: the object which received the signal.
109
<!-- ##### SIGNAL GtkTreeView::expand-collapse-cursor-row ##### -->
114
@tree_view: the object which received the signal.
120
<!-- ##### SIGNAL GtkTreeView::move-cursor ##### -->
125
@tree_view: the object which received the signal.
130
<!-- ##### SIGNAL GtkTreeView::row-activated ##### -->
135
@tree_view: the object which received the signal.
139
<!-- ##### SIGNAL GtkTreeView::row-collapsed ##### -->
144
@tree_view: the object which received the signal.
148
<!-- ##### SIGNAL GtkTreeView::row-expanded ##### -->
153
@tree_view: the object which received the signal.
157
<!-- ##### SIGNAL GtkTreeView::select-all ##### -->
162
@tree_view: the object which received the signal.
165
<!-- ##### SIGNAL GtkTreeView::select-cursor-parent ##### -->
170
@tree_view: the object which received the signal.
173
<!-- ##### SIGNAL GtkTreeView::select-cursor-row ##### -->
178
@tree_view: the object which received the signal.
182
<!-- ##### SIGNAL GtkTreeView::set-scroll-adjustments ##### -->
187
@tree_view: the object which received the signal.
191
<!-- ##### SIGNAL GtkTreeView::start-interactive-search ##### -->
196
@tree_view: the object which received the signal.
199
<!-- ##### SIGNAL GtkTreeView::test-collapse-row ##### -->
204
@tree_view: the object which received the signal.
209
<!-- ##### SIGNAL GtkTreeView::test-expand-row ##### -->
214
@tree_view: the object which received the signal.
219
<!-- ##### SIGNAL GtkTreeView::toggle-cursor-row ##### -->
224
@tree_view: the object which received the signal.
227
<!-- ##### SIGNAL GtkTreeView::unselect-all ##### -->
232
@tree_view: the object which received the signal.
235
<!-- ##### ARG GtkTreeView:enable-grid-lines ##### -->
240
<!-- ##### ARG GtkTreeView:enable-search ##### -->
245
<!-- ##### ARG GtkTreeView:enable-tree-lines ##### -->
250
<!-- ##### ARG GtkTreeView:expander-column ##### -->
255
<!-- ##### ARG GtkTreeView:fixed-height-mode ##### -->
260
<!-- ##### ARG GtkTreeView:hadjustment ##### -->
265
<!-- ##### ARG GtkTreeView:headers-clickable ##### -->
270
<!-- ##### ARG GtkTreeView:headers-visible ##### -->
275
<!-- ##### ARG GtkTreeView:hover-expand ##### -->
280
<!-- ##### ARG GtkTreeView:hover-selection ##### -->
285
<!-- ##### ARG GtkTreeView:level-indentation ##### -->
290
<!-- ##### ARG GtkTreeView:model ##### -->
295
<!-- ##### ARG GtkTreeView:reorderable ##### -->
300
<!-- ##### ARG GtkTreeView:rubber-banding ##### -->
305
<!-- ##### ARG GtkTreeView:rules-hint ##### -->
310
<!-- ##### ARG GtkTreeView:search-column ##### -->
315
<!-- ##### ARG GtkTreeView:show-expanders ##### -->
320
<!-- ##### ARG GtkTreeView:tooltip-column ##### -->
325
<!-- ##### ARG GtkTreeView:vadjustment ##### -->
330
<!-- ##### ARG GtkTreeView:allow-rules ##### -->
335
<!-- ##### ARG GtkTreeView:even-row-color ##### -->
340
<!-- ##### ARG GtkTreeView:expander-size ##### -->
345
<!-- ##### ARG GtkTreeView:grid-line-pattern ##### -->
350
<!-- ##### ARG GtkTreeView:grid-line-width ##### -->
355
<!-- ##### ARG GtkTreeView:horizontal-separator ##### -->
360
<!-- ##### ARG GtkTreeView:indent-expanders ##### -->
365
<!-- ##### ARG GtkTreeView:odd-row-color ##### -->
370
<!-- ##### ARG GtkTreeView:row-ending-details ##### -->
375
<!-- ##### ARG GtkTreeView:tree-line-pattern ##### -->
380
<!-- ##### ARG GtkTreeView:tree-line-width ##### -->
385
<!-- ##### ARG GtkTreeView:vertical-separator ##### -->
390
<!-- ##### ENUM GtkTreeViewDropPosition ##### -->
392
An enum for determining where a dropped row goes.
395
@GTK_TREE_VIEW_DROP_BEFORE: dropped row is inserted before
396
@GTK_TREE_VIEW_DROP_AFTER: dropped row is inserted after
397
@GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: dropped row becomes a child or is inserted before
398
@GTK_TREE_VIEW_DROP_INTO_OR_AFTER: dropped row becomes a child or is inserted after
400
<!-- ##### STRUCT GtkTreeViewPrivate ##### -->
402
A private struct for internal use only. The definition of this
403
structure is not publically available.
407
<!-- ##### USER_FUNCTION GtkTreeViewColumnDropFunc ##### -->
409
Function type for determining whether @column can be dropped in a
410
particular spot (as determined by @prev_column and @next_column). In
411
left to right locales, @prev_column is on the left of the potential drop
412
spot, and @next_column is on the right. In right to left mode, this is
413
reversed. This function should return %TRUE if the spot is a valid drop
414
spot. Please note that returning %TRUE does not actually indicate that
415
the column drop was made, but is meant only to indicate a possible drop
419
@tree_view: A #GtkTreeView
420
@column: The #GtkTreeViewColumn being dragged
421
@prev_column: A #GtkTreeViewColumn on one side of @column
422
@next_column: A #GtkTreeViewColumn on the other side of @column
424
@Returns: %TRUE, if #column can be dropped in this spot
427
<!-- ##### USER_FUNCTION GtkTreeViewMappingFunc ##### -->
429
Function used for #gtk_tree_view_map_expanded_rows.
432
@tree_view: A #GtkTreeView
433
@path: The path that's expanded
434
@user_data: user data
437
<!-- ##### USER_FUNCTION GtkTreeViewSearchEqualFunc ##### -->
439
A function used for checking whether a row in @model matches
440
a search key string entered by the user. Note the return value
441
is reversed from what you would normally expect, though it
442
has some similarity to strcmp() returning 0 for equal strings.
445
@model: the #GtkTreeModel being searched
446
@column: the search column set by gtk_tree_view_set_search_column()
447
@key: the key string to compare with
448
@iter: a #GtkTreeIter pointing the row of @model that should be compared
450
@search_data: user data from gtk_tree_view_set_search_equal_func()
451
@Returns: %FALSE if the row matches, %TRUE otherwise.
454
<!-- ##### FUNCTION gtk_tree_view_new ##### -->
463
<!-- ##### FUNCTION gtk_tree_view_get_level_indentation ##### -->
472
<!-- ##### FUNCTION gtk_tree_view_get_show_expanders ##### -->
481
<!-- ##### FUNCTION gtk_tree_view_set_level_indentation ##### -->
490
<!-- ##### FUNCTION gtk_tree_view_set_show_expanders ##### -->
499
<!-- ##### FUNCTION gtk_tree_view_new_with_model ##### -->
508
<!-- ##### FUNCTION gtk_tree_view_get_model ##### -->
517
<!-- ##### FUNCTION gtk_tree_view_set_model ##### -->
526
<!-- ##### FUNCTION gtk_tree_view_get_selection ##### -->
535
<!-- ##### FUNCTION gtk_tree_view_get_hadjustment ##### -->
544
<!-- ##### FUNCTION gtk_tree_view_set_hadjustment ##### -->
553
<!-- ##### FUNCTION gtk_tree_view_get_vadjustment ##### -->
562
<!-- ##### FUNCTION gtk_tree_view_set_vadjustment ##### -->
571
<!-- ##### FUNCTION gtk_tree_view_get_headers_visible ##### -->
580
<!-- ##### FUNCTION gtk_tree_view_set_headers_visible ##### -->
589
<!-- ##### FUNCTION gtk_tree_view_columns_autosize ##### -->
597
<!-- ##### FUNCTION gtk_tree_view_get_headers_clickable ##### -->
606
<!-- ##### FUNCTION gtk_tree_view_set_headers_clickable ##### -->
615
<!-- ##### FUNCTION gtk_tree_view_set_rules_hint ##### -->
624
<!-- ##### FUNCTION gtk_tree_view_get_rules_hint ##### -->
633
<!-- ##### FUNCTION gtk_tree_view_append_column ##### -->
643
<!-- ##### FUNCTION gtk_tree_view_remove_column ##### -->
653
<!-- ##### FUNCTION gtk_tree_view_insert_column ##### -->
664
<!-- ##### FUNCTION gtk_tree_view_insert_column_with_attributes ##### -->
677
<!-- ##### FUNCTION gtk_tree_view_insert_column_with_data_func ##### -->
692
<!-- ##### FUNCTION gtk_tree_view_get_column ##### -->
702
<!-- ##### FUNCTION gtk_tree_view_get_columns ##### -->
711
<!-- ##### FUNCTION gtk_tree_view_move_column_after ##### -->
721
<!-- ##### FUNCTION gtk_tree_view_set_expander_column ##### -->
730
<!-- ##### FUNCTION gtk_tree_view_get_expander_column ##### -->
739
<!-- ##### FUNCTION gtk_tree_view_set_column_drag_function ##### -->
750
<!-- ##### FUNCTION gtk_tree_view_scroll_to_point ##### -->
760
<!-- ##### FUNCTION gtk_tree_view_scroll_to_cell ##### -->
773
<!-- ##### FUNCTION gtk_tree_view_set_cursor ##### -->
784
<!-- ##### FUNCTION gtk_tree_view_set_cursor_on_cell ##### -->
796
<!-- ##### FUNCTION gtk_tree_view_get_cursor ##### -->
806
<!-- ##### FUNCTION gtk_tree_view_row_activated ##### -->
816
<!-- ##### FUNCTION gtk_tree_view_expand_all ##### -->
824
<!-- ##### FUNCTION gtk_tree_view_collapse_all ##### -->
832
<!-- ##### FUNCTION gtk_tree_view_expand_to_path ##### -->
841
<!-- ##### FUNCTION gtk_tree_view_expand_row ##### -->
852
<!-- ##### FUNCTION gtk_tree_view_collapse_row ##### -->
862
<!-- ##### FUNCTION gtk_tree_view_map_expanded_rows ##### -->
872
<!-- ##### FUNCTION gtk_tree_view_row_expanded ##### -->
882
<!-- ##### FUNCTION gtk_tree_view_set_reorderable ##### -->
891
<!-- ##### FUNCTION gtk_tree_view_get_reorderable ##### -->
900
<!-- ##### FUNCTION gtk_tree_view_get_path_at_pos ##### -->
915
<!-- ##### FUNCTION gtk_tree_view_get_cell_area ##### -->
926
<!-- ##### FUNCTION gtk_tree_view_get_background_area ##### -->
937
<!-- ##### FUNCTION gtk_tree_view_get_visible_rect ##### -->
946
<!-- ##### FUNCTION gtk_tree_view_get_visible_range ##### -->
957
<!-- ##### FUNCTION gtk_tree_view_get_bin_window ##### -->
966
<!-- ##### FUNCTION gtk_tree_view_widget_to_tree_coords ##### -->
978
<!-- ##### FUNCTION gtk_tree_view_tree_to_widget_coords ##### -->
990
<!-- ##### FUNCTION gtk_tree_view_convert_bin_window_to_tree_coords ##### -->
1002
<!-- ##### FUNCTION gtk_tree_view_convert_bin_window_to_widget_coords ##### -->
1014
<!-- ##### FUNCTION gtk_tree_view_convert_tree_to_bin_window_coords ##### -->
1026
<!-- ##### FUNCTION gtk_tree_view_convert_tree_to_widget_coords ##### -->
1038
<!-- ##### FUNCTION gtk_tree_view_convert_widget_to_bin_window_coords ##### -->
1050
<!-- ##### FUNCTION gtk_tree_view_convert_widget_to_tree_coords ##### -->
1062
<!-- ##### FUNCTION gtk_tree_view_enable_model_drag_dest ##### -->
1073
<!-- ##### FUNCTION gtk_tree_view_enable_model_drag_source ##### -->
1085
<!-- ##### FUNCTION gtk_tree_view_unset_rows_drag_source ##### -->
1093
<!-- ##### FUNCTION gtk_tree_view_unset_rows_drag_dest ##### -->
1101
<!-- ##### FUNCTION gtk_tree_view_set_drag_dest_row ##### -->
1111
<!-- ##### FUNCTION gtk_tree_view_get_drag_dest_row ##### -->
1121
<!-- ##### FUNCTION gtk_tree_view_get_dest_row_at_pos ##### -->
1134
<!-- ##### FUNCTION gtk_tree_view_create_row_drag_icon ##### -->
1144
<!-- ##### FUNCTION gtk_tree_view_set_enable_search ##### -->
1153
<!-- ##### FUNCTION gtk_tree_view_get_enable_search ##### -->
1162
<!-- ##### FUNCTION gtk_tree_view_get_search_column ##### -->
1171
<!-- ##### FUNCTION gtk_tree_view_set_search_column ##### -->
1180
<!-- ##### FUNCTION gtk_tree_view_get_search_equal_func ##### -->
1189
<!-- ##### FUNCTION gtk_tree_view_set_search_equal_func ##### -->
1200
<!-- ##### FUNCTION gtk_tree_view_get_search_entry ##### -->
1209
<!-- ##### FUNCTION gtk_tree_view_set_search_entry ##### -->
1218
<!-- ##### USER_FUNCTION GtkTreeViewSearchPositionFunc ##### -->
1228
<!-- ##### FUNCTION gtk_tree_view_get_search_position_func ##### -->
1237
<!-- ##### FUNCTION gtk_tree_view_set_search_position_func ##### -->
1248
<!-- ##### FUNCTION gtk_tree_view_get_fixed_height_mode ##### -->
1257
<!-- ##### FUNCTION gtk_tree_view_set_fixed_height_mode ##### -->
1266
<!-- ##### FUNCTION gtk_tree_view_get_hover_selection ##### -->
1275
<!-- ##### FUNCTION gtk_tree_view_set_hover_selection ##### -->
1284
<!-- ##### FUNCTION gtk_tree_view_get_hover_expand ##### -->
1293
<!-- ##### FUNCTION gtk_tree_view_set_hover_expand ##### -->
1302
<!-- ##### USER_FUNCTION GtkTreeDestroyCountFunc ##### -->
1313
<!-- ##### FUNCTION gtk_tree_view_set_destroy_count_func ##### -->
1324
<!-- ##### USER_FUNCTION GtkTreeViewRowSeparatorFunc ##### -->
1326
Function type for determining whether the row pointed to by @iter should
1327
be rendered as a separator. A common way to implement this is to have a
1328
boolean column in the model, whose values the #GtkTreeViewRowSeparatorFunc
1332
@model: the #GtkTreeModel
1333
@iter: a #GtkTreeIter pointing at a row in @model
1335
@Returns: %TRUE if the row is a separator
1338
<!-- ##### FUNCTION gtk_tree_view_get_row_separator_func ##### -->
1347
<!-- ##### FUNCTION gtk_tree_view_set_row_separator_func ##### -->
1358
<!-- ##### FUNCTION gtk_tree_view_get_rubber_banding ##### -->
1367
<!-- ##### FUNCTION gtk_tree_view_set_rubber_banding ##### -->
1376
<!-- ##### FUNCTION gtk_tree_view_is_rubber_banding_active ##### -->
1385
<!-- ##### FUNCTION gtk_tree_view_get_enable_tree_lines ##### -->
1394
<!-- ##### FUNCTION gtk_tree_view_set_enable_tree_lines ##### -->
1403
<!-- ##### ENUM GtkTreeViewGridLines ##### -->
1405
Used to indicate which grid lines to draw in a tree view.
1408
@GTK_TREE_VIEW_GRID_LINES_NONE: No grid lines.
1409
@GTK_TREE_VIEW_GRID_LINES_HORIZONTAL: Horizontal grid lines.
1410
@GTK_TREE_VIEW_GRID_LINES_VERTICAL: Vertical grid lines.
1411
@GTK_TREE_VIEW_GRID_LINES_BOTH: Horizontal and vertical grid lines.
1413
<!-- ##### FUNCTION gtk_tree_view_get_grid_lines ##### -->
1422
<!-- ##### FUNCTION gtk_tree_view_set_grid_lines ##### -->
1431
<!-- ##### FUNCTION gtk_tree_view_set_tooltip_row ##### -->
1441
<!-- ##### FUNCTION gtk_tree_view_set_tooltip_cell ##### -->
1453
<!-- ##### FUNCTION gtk_tree_view_get_tooltip_context ##### -->
1468
<!-- ##### FUNCTION gtk_tree_view_get_tooltip_column ##### -->
1477
<!-- ##### FUNCTION gtk_tree_view_set_tooltip_column ##### -->