[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Widget rendering in GNUstep
From: |
Sheldon Gill |
Subject: |
Re: Widget rendering in GNUstep |
Date: |
Fri, 16 Sep 2005 11:40:36 +0800 |
User-agent: |
Mozilla Thunderbird 1.0.6 (Windows/20050716) |
Cocoa code that uses the NSAccessibility protocol can't currently be
ported - it hasn't been added to GNUstep-base yet, and touches enough
classes in interesting ways that may lead to some issues like additional
instance variables being required. I'd like to see this added, despite
any short-term pain. I'm also interested in finding out if there are any
free software assistive tools on Cocoa.
The first issue I came against comes from the cross-platform nature of GNUstep.
There are a number of different Accessibility/Assitance APIs on different
platforms. To make it worse on *nix there are rather different approaches on
the *same* platform. There is some work going for compatibility but...
Adding support for *one* of these is a lot of work. Making that support
available using other underlying APIs seems quite a design task.
I'm all for adding it.
{Don't forget I used to work with Special Needs...}
It's fairly straight-forward how this would play out on GNUstep on MacOS
X - but I'm more interested in how we'd interact with other existing host
platform capabilities. As a non-Win32 guy, I have no idea if there's any
simple or useful mapping into the Windows-native functionality. Any
ideas?
There is no simple mapping. There is a useful one but its a lot of work and
touches on a number of other issues in implementing it...
Basically, adding support requires:
1) Implementing IAccessible:: properties and methods for each custom UI
element. For GNUstep this is all the controls.
2) Adding calls to NotifyWinEvent() into the event handling system so clients
can be appropriately notified.
3) Handle Win32 native WM_GETOBJECT messages to provide access to the objects.
A lot of work but it doesn't seem too bad?
Getting to step (1) reasonably requires good COM support. That is: IUnknown,
IDispatch, VARIANT structure passing and string support. Attendant memory
handling and threading issues.
Mostly this won't be terribly useful for accessibility support elsewhere. So I
think we'd end up with Bundles and back-ends, assuming we can manage a good
front-end design. Otherwise it'll be all platform/API specific.
Regards,
Sheldon