diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-02-15 16:52:53 +0000 |
---|---|---|
committer | Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> | 2017-02-16 10:54:21 +0000 |
commit | ba8ac3843790226385e55bdf222de0d3aecc281d (patch) | |
tree | b27ac18ee3bbb08aa49a01a2de6a25cf38c73685 /svx | |
parent | 48acd5c5793edfec5d6b168fa39dcebc4500effe (diff) |
Related: tdf#105712 inconsistency with num of a11y children in special char
with no visible scrollbar it claims 1 child, but trying to get child at
index 0 throws
(cherry picked from commit b3098d239f46c8d5965754f275bc62216dcb4f4f)
Change-Id: Icf1a0afc4a6f6090e3f14f30b4380db477955561
Reviewed-on: https://gerrit.libreoffice.org/34313
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/accessibility/charmapacc.cxx | 29 | ||||
-rw-r--r-- | svx/source/inc/charmapacc.hxx | 1 |
2 files changed, 19 insertions, 11 deletions
diff --git a/svx/source/accessibility/charmapacc.cxx b/svx/source/accessibility/charmapacc.cxx index 97f523c5b552..f7c31bfced4d 100644 --- a/svx/source/accessibility/charmapacc.cxx +++ b/svx/source/accessibility/charmapacc.cxx @@ -71,11 +71,16 @@ void SAL_CALL SvxShowCharSetVirtualAcc::fireEvent( m_pTable->fireEvent(_nEventId,_rOldValue,_rNewValue); } -sal_Int32 SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleChildCount( ) throw (RuntimeException, std::exception) +sal_Int32 SvxShowCharSetVirtualAcc::getImplAccessibleChildCount() const +{ + return mpParent->getScrollBar().IsVisible() ? 2 : 1; +} + +sal_Int32 SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleChildCount() throw (RuntimeException, std::exception) { OExternalLockGuard aGuard( this ); ensureAlive(); - return ( mpParent->getScrollBar().IsVisible() ) ? 2 : 1; + return getImplAccessibleChildCount(); } uno::Reference< css::accessibility::XAccessible > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleAtPoint( const awt::Point& aPoint ) @@ -117,18 +122,20 @@ Reference< XAccessible > SAL_CALL SvxShowCharSetVirtualAcc::getAccessibleChild( { OExternalLockGuard aGuard( this ); ensureAlive(); - if ( mpParent->getScrollBar().IsVisible() && i == 0 ) + + sal_Int32 nCount = getImplAccessibleChildCount(); + if (i >= nCount) + throw IndexOutOfBoundsException(); + + if (i == 0 && mpParent->getScrollBar().IsVisible()) return mpParent->getScrollBar().GetAccessible(); - else if ( i == 1 ) + + if ( !m_xAcc.is() ) { - if ( !m_xAcc.is() ) - { - m_pTable = new SvxShowCharSetAcc(this); - m_xAcc = m_pTable; - } + m_pTable = new SvxShowCharSetAcc(this); + m_xAcc = m_pTable; } - else - throw IndexOutOfBoundsException(); + return m_xAcc; } diff --git a/svx/source/inc/charmapacc.hxx b/svx/source/inc/charmapacc.hxx index 73bc31e599fc..2d1a09839141 100644 --- a/svx/source/inc/charmapacc.hxx +++ b/svx/source/inc/charmapacc.hxx @@ -44,6 +44,7 @@ namespace svx VclPtr<SvxShowCharSet> mpParent; // the vcl control SvxShowCharSetAcc* m_pTable; // the table, which holds the characters shown by the vcl control css::uno::Reference< css::accessibility::XAccessible > m_xAcc; // the ref to the table + sal_Int32 getImplAccessibleChildCount() const; protected: virtual ~SvxShowCharSetVirtualAcc() override; |