[Libreoffice-commits] core.git: include/svx svx/source

Matthew J. Francis mjay.francis at gmail.com
Thu Jul 9 18:47:28 PDT 2015


 include/svx/charmap.hxx                 |    1 
 svx/source/accessibility/charmapacc.cxx |   45 ++++++++++++++++++++++++++++++--
 svx/source/dialog/charmap.cxx           |    9 ++++++
 svx/source/inc/charmapacc.hxx           |   14 +++++++++
 4 files changed, 66 insertions(+), 3 deletions(-)

New commits:
commit 83b53164b096b4cba94a2e1ee8b620228bee8a3a
Author: Matthew J. Francis <mjay.francis at gmail.com>
Date:   Sun Jul 5 20:37:40 2015 +0800

    Add an a11y action for items in the Special Characters dialog
    
    Change-Id: I53fef3f151f66be775655ceef623a7d564c66f1a
    Reviewed-on: https://gerrit.libreoffice.org/16771
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Matthew Francis <mjay.francis at gmail.com>

diff --git a/include/svx/charmap.hxx b/include/svx/charmap.hxx
index e56fe98..6538ffd 100644
--- a/include/svx/charmap.hxx
+++ b/include/svx/charmap.hxx
@@ -65,6 +65,7 @@ public:
     int                         LastInView() const;
     int                         PixelToMapIndex( const Point&) const;
     void                        SelectIndex( int index, bool bFocus = false );
+    void                        OutputIndex( int index );
     void                        DeSelect();
     inline bool                 IsSelected(sal_uInt16 _nPos) const { return _nPos == nSelectedIndex; }
     inline sal_uInt16           GetSelectIndexId() const { return sal::static_int_cast<sal_uInt16>(nSelectedIndex); }
diff --git a/svx/source/accessibility/charmapacc.cxx b/svx/source/accessibility/charmapacc.cxx
index 69aff5d..a959ce6 100644
--- a/svx/source/accessibility/charmapacc.cxx
+++ b/svx/source/accessibility/charmapacc.cxx
@@ -625,8 +625,8 @@ SvxShowCharSetItemAcc::~SvxShowCharSetItemAcc()
     delete getExternalLock();
 }
 
-IMPLEMENT_FORWARD_XINTERFACE2( SvxShowCharSetItemAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_2 )
-IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxShowCharSetItemAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_2 )
+IMPLEMENT_FORWARD_XINTERFACE2( SvxShowCharSetItemAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_3 )
+IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxShowCharSetItemAcc, OAccessibleComponentHelper, OAccessibleHelper_Base_3 )
 
 
 void SvxShowCharSetItemAcc::ParentDestroyed()
@@ -762,6 +762,47 @@ uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL SvxShowCharSe
     return pStateSet;
 }
 
+
+
+sal_Int32 SvxShowCharSetItemAcc::getAccessibleActionCount() throw (RuntimeException, std::exception)
+{
+    return 1;
+}
+
+
+
+sal_Bool SvxShowCharSetItemAcc::doAccessibleAction ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
+{
+    OExternalLockGuard aGuard( this );
+
+    if( nIndex == 0 )
+    {
+        mpParent->mrParent.OutputIndex( mpParent->mnId );
+        return 1;
+    }
+    throw IndexOutOfBoundsException();
+}
+
+
+
+OUString SvxShowCharSetItemAcc::getAccessibleActionDescription ( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException, std::exception)
+{
+    if( nIndex == 0 )
+        return OUString( "press" );
+    throw IndexOutOfBoundsException();
+}
+
+
+
+Reference< css::accessibility::XAccessibleKeyBinding > SvxShowCharSetItemAcc::getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (css::lang::IndexOutOfBoundsException, uno::RuntimeException, std::exception)
+{
+    if( nIndex == 0 )
+        return Reference< css::accessibility::XAccessibleKeyBinding >();
+    throw IndexOutOfBoundsException();
+}
+
+
+
 void SAL_CALL SvxShowCharSetItemAcc::grabFocus()
     throw (uno::RuntimeException, std::exception)
 {
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index b7923ac..2972dbe 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -662,6 +662,15 @@ void SvxShowCharSet::SelectIndex( int nNewIndex, bool bFocus )
 
 
 
+void SvxShowCharSet::OutputIndex( int nNewIndex )
+{
+    SelectIndex( nNewIndex, true );
+    aSelectHdl.Call( this );
+
+}
+
+
+
 void SvxShowCharSet::SelectCharacter( sal_UCS4 cNew, bool bFocus )
 {
     if (mpFontCharMap == nullptr)
diff --git a/svx/source/inc/charmapacc.hxx b/svx/source/inc/charmapacc.hxx
index 1c09cfc..7616ee8 100644
--- a/svx/source/inc/charmapacc.hxx
+++ b/svx/source/inc/charmapacc.hxx
@@ -23,6 +23,7 @@
 #include <osl/mutex.hxx>
 #include <vcl/image.hxx>
 #include <comphelper/accessibleselectionhelper.hxx>
+#include <com/sun/star/accessibility/XAccessibleAction.hpp>
 #include <com/sun/star/accessibility/XAccessibleTable.hpp>
 
 #include <vector>
@@ -209,10 +210,14 @@ namespace svx
 
     // - SvxShowCharSetItemAcc -
 
+    typedef ::cppu::ImplHelper2 <   ::com::sun::star::accessibility::XAccessible,
+                                    ::com::sun::star::accessibility::XAccessibleAction
+                                >   OAccessibleHelper_Base_3;
+
     /** The child implementation of the table.
     */
     class SvxShowCharSetItemAcc : public ::comphelper::OAccessibleComponentHelper,
-                                  public OAccessibleHelper_Base_2
+                                  public OAccessibleHelper_Base_3
     {
     private:
         SvxShowCharSetItem* mpParent;
@@ -252,6 +257,13 @@ namespace svx
         virtual sal_Int32 SAL_CALL getForeground(  ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE { return mpParent->m_pParent->getForeground(); }
         virtual sal_Int32 SAL_CALL getBackground(  ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE { return mpParent->m_pParent->getBackground(); }
 
+        // XAccessibleAction
+        virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+        virtual sal_Bool SAL_CALL doAccessibleAction ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+        virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+        virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+
         inline void SAL_CALL fireEvent(
                     const sal_Int16 _nEventId,
                     const ::com::sun::star::uno::Any& _rOldValue,


More information about the Libreoffice-commits mailing list