Enhancing GTK+ TreeView accessibility



I would guess that half of all treeview controls create accessibility
problems.  For example, gconf-editor is not accessible through Orca,
because the values to be displayed are written directly to the cell
renderer in the get_size callback, and never to the tree model, which
is the only thing Orca reads.  Also, there is no possible way to
attach an accessible name or description to a cell_renderer_pixbuf.
This makes programs like Synaptic unusable, since it shows the status
of packages with icons.

The second problem can be dealt with fairly easily.  What I did was
add a "description" property to pixbuf objects.  That way, programmers
can do quick one-liners to add descriptions to pixbuf cells.  With
this change in place, I was able to make a 6-line change to Synaptic
to make it accessible.  With a one-line change, I was able to make
gnome-app-install read the number of stars for an application, rather
than just saying "icon".  I've included a patch to add this property
to pixbuf, and attached it to the bug report at:

https://bugzilla.gnome.org/show_bug.cgi?id=617629

I understand the focus is all-out on Gnome 3.0 right now.  Perhaps
soon after, someone could look into this enhancement?

The approach of making programmers keep all their visually displayed
data in a treeview model sounds good, but it only happens about half
the time.  Programs that had mismatches to the model as recently as 3
months ago included: update-manager, gnome-app-install, gconf-editor,
and many many more.  Rather than trying to determine the correct value
in the model to return to accessible queries, I think we should cache
the data that we actually drew.  If the focus is on a cell that is not
visible for some reason, perhaps we could still ask it to render, thus
updating the treeview data cache stored in the gail module.  Such an
enhancement in theory could significantly enhance accessibility
throughout the space of GTK+ based applications.

Thanks,
Bill


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]