On 08/19/2014 03:24 PM, Alexander Larsson wrote:
> On mån, 2014-08-18 at 18:09 +0200, Sébastien Wilmet wrote:
>> On Mon, 2014-08-18 at 10:01 -0400, Jasper St. Pierre wrote:
>>> Because every time we try to clean up GtkTreeView, we break some random
>>> application. It's a widget that has twenty three gazillion use cases, and
>>> so we have to keep it a mess, because removing the mess means removing one
>>> use case, and we can't do that.
>> So the problem is because GtkTreeView was developed as policy-free as
>> possible. Now the new widgets are written with more policy, which makes
>> the API easier to use, with a simpler implementation.
> As I see it there are two fundamental problems with GtkTreeView. 
>
> First of all it has a model-view split, but there is no way to save any
> state in the view. For example, if the model has a "char *icon_name"
> column, then every time we draw a row we read the icon name from the
> column, set it as a property of the (one and only) pixbuf cell renderer,
> and then ask the cell renderer to draw itself. Now, since the cell
> renderer has no state it has to start from scratch each time, including
> reading the icon from *disk*. A few releases ago we added a cache for
> the icon theme, so we're not quite as bad as this any more, but it still
> happens if you have more different icons than the size of the cache.
>
> This doesn't only affect pixbufs. For instance if you have a tree with a
> lot of (mostly static) text you want to be able to cache pangolayouts
> for things like rendering of visible rows.

This also affects the accessibility support, as at any point, the
accessibility technologies would want to get info (text, status, etc)
from a given cell. This leads to custom cell objects (in theory
fly-weight objects) that maintain accessibility-related caches. And the
accessibility implementation of GtkTreeView is also really complex and
regression-prone.

BR

-- 
----
Alejandro Piñeiro

_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to