pspp-sheet-view: Reduce time and memory cost to O(1) in number of rows.
The standard GtkTreeView uses time and memory linear in the number of
rows in the tree. When the model is set, it iterates over every row
and creates a corresponding GtkRbNode. After that, GtkTreeView uses
the GtkRbNodes for many operations on the tree.
This commit adapts GtkTreeView to avoid the need to iterate over the
entire model up front, as well as the need to maintain data for every
row. It makes the following major changes:
- The tree model must now be just a list (GTK_TREE_MODEL_LIST_ONLY);
that is, rows may not have children.
- The height of a row in the view must be fixed (as with
gtk_tree_view_set_fixed_height_mode()). Column widths must also
be fixed.
The following minor changes follow mainly as consequences of the above:
- Expander arrows, tree lines, and level indentation are no longer
supported, because these only make sense with rows that have
children.
- Separator rows are no longer supported. (They are ugly in
fixed-height mode because they occupy an entire row.)