[g-a-devel] OO.o / new a11y bridge ...



Hi Oliver / All,

	Just to let you know - I'm hacking on a new, direct-to-atk a11y bridge
which (may) improve performance, but of course also lets OO.o function
accessibly without Java and a full Java a11y implementation.

	To get the code grab it from:

		http://go-oo.org/ooo-build/patches/a11y/

	or do:

	cvs -d ':pserver:anonymous anoncvs gnome org:/cvs/gnome' login
	cvs -d ':pserver:anonymous anoncvs gnome org:/cvs/gnome' co \ 
		ooo-build/patches/a11y

	Still in a very hacked, but semi-functional state; the gaps between the
mapping are quite interesting too; Oliver - is it possible to extend the
OO.o a11y in certain places ? eg. non-localised vs. localised names for
accessible actions ?

	Anyhow - I'd really value your feedback, I've also fallen over a rather
silly problem in the OAccessibleWrapper, a crash (with a custom zoom
combo box we added to the toolbar):

The crash is caused by instantiation of:
comphelper/source/misc/accessiblewrapper.cxx (OAccessibleWrapper) with a
NULL _rxInnerAccessible ...

	I append the trace; for reasons unknown the combo box contains a list
accessible that thinks it has multiple children, and then returns NULL
when you fetch them in
'OAccessibleContextWrapperHelper::getAccessibleChild' the xInnerChild is
NULL; this patch at least stops the crash (in
OAccessibleWrapper::getAccessibleContext()) when we de-reference the
NULL m_xInnerAccessible - yes it's quite contorted; patch is:

Index: comphelper/source/misc/accessiblewrapper.cxx
===================================================================
RCS file: /cvs/util/comphelper/source/misc/accessiblewrapper.cxx,v
retrieving revision 1.8
diff -u -r1.8 accessiblewrapper.cxx
--- comphelper/source/misc/accessiblewrapper.cxx	4 Feb 2004 11:26:40 -0000	1.8
+++ comphelper/source/misc/accessiblewrapper.cxx	19 Apr 2005 14:49:13 -0000
@@ -177,6 +181,12 @@
 	{
 		Reference< XAccessible > xValue;
 
+		if( !_rxKey.is() )
+		{
+			fprintf( stderr, "It was this path that was crashing stuff\n" );
+			return xValue;
+		}
+
 		// do we have this child in the cahce?
 		AccessibleMap::const_iterator aPos = m_aChildrenMap.find( _rxKey );
 		if ( m_aChildrenMap.end() != aPos )


	or somesuch.

	Obviously to run OO.o with this enabled; you need to do: export
GTK_MODULES=gail:atk-bridge, but that's about it (beyond enabling
desktop a11y).

	I'd be interested in a performance comparison if you can do on,

	HTH,

		Michael.

#0  OAccessibleWrapper (this=0x56365e70, _rxORB= 0x5635bb50,
_rxInnerAccessible= 0xbfffe4e0, _rxParentAccessible= 0xbfffe480)

at /opt/OpenOffice/src680-m90/comphelper/source/misc/accessiblewrapper.cxx:353
#1  0x40d1cd54 in
comphelper::OWrappedAccessibleChildrenManager::getAccessibleWrapperFor
(this=0x5635bb38, _rxKey= 0xbfffe4e0, 
    _bCreate=1 '\001')
at /opt/OpenOffice/src680-m90/comphelper/source/misc/accessiblewrapper.cxx:193
#2  0x40d1ef16 in
comphelper::OAccessibleContextWrapperHelper::getAccessibleChild
(this=0x5635b7e4, i=0)

at /opt/OpenOffice/src680-m90/comphelper/source/misc/accessiblewrapper.cxx:491
#3  0x40d1fd49 in
comphelper::OAccessibleContextWrapper::getAccessibleChild
(this=0x5635b7b0, i=0)

at /opt/OpenOffice/src680-m90/comphelper/source/misc/accessiblewrapper.cxx:599
#4  0x41f2bf84 in wrapper_ref_child (pObject=0x81617c0, i=0)
at /opt/OpenOffice/src680-m90/vcl/unx/gtk/a11y/atkwrapper.cxx:271
#5  0x422f4d91 in atk_object_ref_accessible_child ()
from /opt/gnome/lib/libatk-1.0.so.0
#6  0x428778ff in impl_accessibility_accessible_get_child_at_index ()
from /opt/gnome/lib/libspi.so.0
#7  0x42874321 in
_ORBIT_skel_small_Accessibility_Accessible_getChildAtIndex ()
from /opt/gnome/lib/libspi.so.0
#8  0x429297e7 in ORBit_POAObject_invoke ()
from /opt/gnome/lib/libORBit-2.so.0

-- 
 michael meeks novell com  <><, Pseudo Engineer, itinerant idiot




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