#97034# Improved accessibility

This commit is contained in:
Malte Timmermann
2002-02-08 07:59:48 +00:00
parent 24d9327d60
commit cedf042a9d

View File

@@ -2,9 +2,9 @@
* *
* $RCSfile: vclxwindow.cxx,v $ * $RCSfile: vclxwindow.cxx,v $
* *
* $Revision: 1.17 $ * $Revision: 1.18 $
* *
* last change: $Author: mt $ $Date: 2002-01-29 12:54:27 $ * last change: $Author: mt $ $Date: 2002-02-08 08:59:48 $
* *
* The Contents of this file are made available subject to the terms of * The Contents of this file are made available subject to the terms of
* either of the following licenses * either of the following licenses
@@ -102,6 +102,8 @@
#include <vcl/window.hxx> #include <vcl/window.hxx>
#include <tools/color.hxx> #include <tools/color.hxx>
#include <unotools/accessiblestatesethelper.hxx>
struct AccessibilityInfos struct AccessibilityInfos
{ {
String aAccName; String aAccName;
@@ -110,28 +112,6 @@ struct AccessibilityInfos
// Mit Out-Parameter besser als Rueckgabewert, wegen Ref-Objekt... // Mit Out-Parameter besser als Rueckgabewert, wegen Ref-Objekt...
Window* ImplGetAccessibleParentWindow( Window* pWindow )
{
Window* pParent = pWindow->GetParent();
if ( pParent && ( pParent->GetType() == WINDOW_BORDERWINDOW ) )
{
DBG_ASSERT( pParent->GetChildCount() == 1, "BorderWindow with more than 1 child?" );
pParent = pParent->GetParent();
}
return pParent;
}
Window* ImplGetAccessibleChildWindow( Window* pWindow, USHORT n )
{
Window* pChild = pWindow->GetChild( n );
if ( pChild && ( pChild->GetType() == WINDOW_BORDERWINDOW ) )
{
DBG_ASSERT( pChild->GetChildCount() == 1, "BorderWindow with more than 1 child?" );
pChild = pChild->GetChild( 0 );
}
return pChild;
}
void ImplInitWindowEvent( ::com::sun::star::awt::WindowEvent& rEvent, Window* pWindow ) void ImplInitWindowEvent( ::com::sun::star::awt::WindowEvent& rEvent, Window* pWindow )
{ {
Point aPos = pWindow->GetPosPixel(); Point aPos = pWindow->GetPosPixel();
@@ -493,6 +473,12 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
} }
} }
/*
void VCLXWindow::FillAccessibleStateSet( AccessibleStateSetHelper& rStateSet )
{
}
*/
Size VCLXWindow::ImplCalcWindowSize( const Size& rOutSz ) const Size VCLXWindow::ImplCalcWindowSize( const Size& rOutSz ) const
{ {
Size aSz = rOutSz; Size aSz = rOutSz;
@@ -1429,7 +1415,7 @@ sal_Int32 VCLXWindow::getAccessibleChildCount() throw (::com::sun::star::uno::Ru
::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > xAcc; ::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > xAcc;
if ( GetWindow() ) if ( GetWindow() )
{ {
Window* pChild = ImplGetAccessibleChildWindow( GetWindow(), (USHORT)i ); Window* pChild = GetWindow()->GetAccessibleChildWindow( (USHORT)i );
if ( pChild ) if ( pChild )
xAcc = pChild->GetAccessible(); xAcc = pChild->GetAccessible();
} }
@@ -1444,7 +1430,7 @@ sal_Int32 VCLXWindow::getAccessibleChildCount() throw (::com::sun::star::uno::Ru
::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > xAcc; ::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > xAcc;
if ( GetWindow() ) if ( GetWindow() )
{ {
Window* pParent = ImplGetAccessibleParentWindow( GetWindow() ); Window* pParent = GetWindow()->GetAccessibleParentWindow();
if ( pParent ) if ( pParent )
xAcc = GetWindow()->GetParent()->GetAccessible(); xAcc = GetWindow()->GetParent()->GetAccessible();
} }
@@ -1459,7 +1445,7 @@ sal_Int32 VCLXWindow::getAccessibleIndexInParent( ) throw (::com::sun::star::un
sal_Int32 nIndex = 0; sal_Int32 nIndex = 0;
if ( GetWindow() ) if ( GetWindow() )
{ {
Window* pParent = ImplGetAccessibleParentWindow( GetWindow() ); Window* pParent = GetWindow()->GetAccessibleParentWindow();
if ( pParent ) if ( pParent )
{ {
for ( USHORT n = pParent->GetChildCount(); n; ) for ( USHORT n = pParent->GetChildCount(); n; )
@@ -1625,6 +1611,11 @@ sal_Int16 VCLXWindow::getAccessibleRole( ) throw (::com::sun::star::uno::Runtim
::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessibleStateSet > VCLXWindow::getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException) ::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessibleStateSet > VCLXWindow::getAccessibleStateSet( ) throw (::com::sun::star::uno::RuntimeException)
{ {
::vos::OGuard aGuard( GetMutex() ); ::vos::OGuard aGuard( GetMutex() );
// AccessibleStateSetHelper* pStateSetHelper = new AccessibleStateSetHelper;
// ::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessibleStateSet > xSet = pStateSetHelper;
// ...
// FillStateSet( *pStateSetHelper );
return NULL; return NULL;
} }
@@ -1656,10 +1647,22 @@ sal_Bool VCLXWindow::contains( const ::com::sun::star::awt::Point& aPoint ) thro
return sal_False; return sal_False;
} }
::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > VCLXWindow::getAccessibleAt( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException) ::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > VCLXWindow::getAccessibleAt( const ::com::sun::star::awt::Point& rPoint ) throw (::com::sun::star::uno::RuntimeException)
{ {
::vos::OGuard aGuard( GetMutex() ); ::vos::OGuard aGuard( GetMutex() );
return NULL;
::com::sun::star::uno::Reference< ::drafts::com::sun::star::accessibility::XAccessible > xAcc;
if ( GetWindow() )
{
Window* pWindow = GetWindow()->FindWindow( VCLPoint( rPoint ) );
if ( !pWindow )
pWindow = GetWindow();
xAcc = pWindow->GetAccessible();
}
return xAcc;
} }
::com::sun::star::awt::Rectangle VCLXWindow::getBounds() throw (::com::sun::star::uno::RuntimeException) ::com::sun::star::awt::Rectangle VCLXWindow::getBounds() throw (::com::sun::star::uno::RuntimeException)