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.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.
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