Re: gtktreeview: Data for all columns is retrieved although only a small subset of 1% is visible - Why?
- From: Kristian Rietveld <kris loopnest org>
- To: Friedrich Beckmann <friedrich beckmann gmx de>
- Cc: gtk-devel-list gnome org
- Subject: Re: gtktreeview: Data for all columns is retrieved although only a small subset of 1% is visible - Why?
- Date: Wed, 16 Dec 2015 07:34:03 +0100
On 15 Dec 2015, at 23:04, Friedrich Beckmann <friedrich beckmann gmx de> wrote:
/* we *need* to set cell data on all cells before the call
* to _has_can_focus_cell, else _has_can_focus_cell() does not
* return a correct value.
*/
here: https://git.gnome.org/browse/gtk+/tree/gtk/gtktreeview.c#n5103
I am not sure, but I maybe this is the reason that in our case
the data for 2000 columns is retrieved, although only 16 are visible.
Do you mean visible as in “gtk_tree_view_column_get_visible(column) == TRUE” or “the column is visible on the
screen” ? This is an important difference.
Does anybody
remember the reason for this full retrieval? Is this a fundamental problem which
can not be avoided?
(If I remember correctly) it needs to verify whether any column that is visible (as in get_visible() == TRUE)
has a “can-focus” cell. If no column has such a cell, the keyboard interaction model changes slightly: a
cursor rectangle will be drawn that encompasses all columns. This check is performed in
gtk_tree_view_has_can_focus_cell() which is called at line 5119.
Because the “can-focus” cell property can be changed dynamically through set_cell_data, it is close to
impossible to cache this properly. This is typically not a problem, since we deal with < 20 columns.
GtkTreeView was simply not designed for dealing with hundreds of columns.
Note that gtk_tree_view_has_can_focus_cell() skips columns with get_visible() == FALSE, so I *think* (but am
really not sure) that get_visible() == FALSE columns can be skipped in the set_cell_data_func loop. However
if in your case all columns are get_visible() == TRUE, this won’t help you. In that case, you probably want
to have some function to set a has_can_focus_cell() “hint” which overrides and removes the need for the
dynamic check.
regards,
-kris.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]