[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-devel
Subject:    Re: GTK+ canvas?
From:       Bill Haneman <Bill.Haneman () Sun ! COM>
Date:       2006-08-31 10:02:40
Message-ID: 44F6B3C0.5010407 () sun ! com
[Download RAW message or body]

One of the big challenges for a gtk+ canvas has to do with 
accessibility.  If we build a gtkcanvas that is nice to use (and 
therefore gets widely adopted), it also has to expose all the 
appropriate ATK information.  Otherwise, we'll be eroding gtk+ 
accessibility, and creating obstacles to deployment of gtk+ and gnome 
apps.  (There are already statutory accessibility requirements for 
deployment in some environments, notably US education and government, 
and those requirements are expected to become more widespread in the 
future.  They also tend to be of the "all or nothing" variety, so even 
one or two inaccessible applications in a desktop environment can become 
an issue).

>>Thoughts since last "canvas notes"
>>===
>>
>>- I think an important thing to keep in mind is that a canvas is just an 
>>alternate widget system.
>>    
>>
>
>  Yeah, kind of agree.
>
To the extent that this is true, the accessibility requirements are 
fairly clear - widget-like things inside the canvas must follow the ATK 
accessibility principles, exposing fairly rich queryable interfaces.  
Textual content must expose AtkText/AtkEditableText, and onscreen 
objects must expose AtkComponent (bounds, z-order, position, focus).  
Also the objects must somehow have a keyboard navigation model so that 
the canvas can be used without the mouse.

If we anticipate using a canvas for something other than plain vector or 
graphics primitive drawing, then a good deal of thought needs to go in 
to how the canvas' object model hooks in to ATK.  Even in a simple 
graphics primitive canvas, we need an object model so that the parts of 
the resulting drawing can be organized in a hierarchical model and 
queried for bounds and attributes such as color, 
names/labels/descriptions, etc.    The need to make a canvas-based 
application accessible also means that some facility for making the 
content accessible to blind users needs to be available in the main 
canvas API (in the manner of web page "alt text", at minimum) so that 
the application developer can provide the appropriate info when building 
the app.

The danger in canvases is that an attractively "simple" API, with only 
low-level primitives, will in the long run work against application 
consistency and accessibility.  Any canvas needs an object model and I 
think ours needs one that incorporates accessibility from the outset.

For historical reasons the ATK support for GTK+ widgets has been 
provided by the (external) gail library.  This causes some headaches 
because it means everything required by ATK must be available via public 
widget API.  In the case of gtkcanvas I think the ATK support would be 
more effectively written into the gtk+ codebase itself, so that 
private/internal structs and APIs are available, and so that changes to 
implementation details are more easily kept in sync with the ATK 
implementation.

best regards,

Bill




_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic