svx/source/accessibility/charmapacc.cxx |   29 ++++++++++++++++++-----------
 svx/source/inc/charmapacc.hxx           |    1 +
 2 files changed, 19 insertions(+), 11 deletions(-)

New commits:
commit 2247313b0aec80306e7f67926810cf004d5b4d1d
Author: Caolán McNamara <caol...@redhat.com>
Date:   Wed Feb 15 16:52:53 2017 +0000

    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/34314
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>

diff --git a/svx/source/accessibility/charmapacc.cxx 
b/svx/source/accessibility/charmapacc.cxx
index 80d0e51..c65d58c 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 2169e96..bfb4fb7 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();
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to