|
 |
f325b2 |
From dade1c7a39363610e5f04bf8cd99c9aaf3a33aab Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: rpmbuild <rpmbuild@fedoraproject.org>
|
|
 |
f325b2 |
Date: Fri, 31 Mar 2017 17:10:46 +0100
|
|
 |
f325b2 |
Subject: [PATCH] Resolves: rhbz#1437537 fix csv a11y
|
|
 |
f325b2 |
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
.../ui/Accessibility/AccessibleCsvControl.cxx | 33 +++++++++++++++++++---
|
|
 |
f325b2 |
sc/source/ui/inc/AccessibleCsvControl.hxx | 9 ++++++
|
|
 |
f325b2 |
3 files changed, 49 insertions(+), 18 deletions(-)
|
|
 |
f325b2 |
mode change 100644 => 100755 config.sub
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
|
|
 |
f325b2 |
index bb924f2..4bc75f3 100644
|
|
 |
f325b2 |
--- a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
|
|
 |
f325b2 |
+++ b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
|
|
 |
f325b2 |
@@ -865,6 +865,15 @@ ScAccessibleCsvGrid::~ScAccessibleCsvGrid()
|
|
 |
f325b2 |
implDispose();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+void ScAccessibleCsvGrid::disposing()
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ SolarMutexGuard aGuard;
|
|
 |
f325b2 |
+ for (XAccessibleSet::iterator aI = maAccessibleChildren.begin(); aI != maAccessibleChildren.end(); ++aI)
|
|
 |
f325b2 |
+ aI->second->dispose();
|
|
 |
f325b2 |
+ maAccessibleChildren.clear();
|
|
 |
f325b2 |
+ ScAccessibleCsvControl::disposing();
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
// XAccessibleComponent -------------------------------------------------------
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Reference< XAccessible > SAL_CALL ScAccessibleCsvGrid::getAccessibleAtPoint( const AwtPoint& rPoint )
|
|
 |
f325b2 |
@@ -882,7 +891,7 @@ Reference< XAccessible > SAL_CALL ScAccessibleCsvGrid::getAccessibleAtPoint( con
|
|
 |
f325b2 |
lcl_GetApiColumn( rGrid.GetColumnFromX( rPoint.X ) ) : 0;
|
|
 |
f325b2 |
sal_Int32 nRow = (rPoint.Y >= rGrid.GetHdrHeight()) ?
|
|
 |
f325b2 |
(rGrid.GetLineFromY( rPoint.Y ) - rGrid.GetFirstVisLine() + 1) : 0;
|
|
 |
f325b2 |
- xRet = implCreateCellObj( nRow, nColumn );
|
|
 |
f325b2 |
+ xRet = getAccessibleCell(nRow, nColumn);
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
return xRet;
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
@@ -912,13 +921,30 @@ sal_Int32 SAL_CALL ScAccessibleCsvGrid::getAccessibleChildCount() throw( Runtime
|
|
 |
f325b2 |
return implGetCellCount();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+Reference<XAccessible> ScAccessibleCsvGrid::getAccessibleCell(sal_Int32 nRow, sal_Int32 nColumn)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ sal_Int32 nIndex = implGetIndex(nRow, nColumn);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ XAccessibleSet::iterator aI = maAccessibleChildren.lower_bound(nIndex);
|
|
 |
f325b2 |
+ if (aI != maAccessibleChildren.end() && !(maAccessibleChildren.key_comp()(nIndex, aI->first)))
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ // key already exists
|
|
 |
f325b2 |
+ return Reference<XAccessible>(aI->second.get());
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ // key does not exist
|
|
 |
f325b2 |
+ rtl::Reference<ScAccessibleCsvControl> xNew = implCreateCellObj(nRow, nColumn);
|
|
 |
f325b2 |
+ maAccessibleChildren.insert(aI, XAccessibleSet::value_type(nIndex, xNew));
|
|
 |
f325b2 |
+ return Reference<XAccessible>(xNew.get());
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
Reference< XAccessible > SAL_CALL ScAccessibleCsvGrid::getAccessibleChild( sal_Int32 nIndex )
|
|
 |
f325b2 |
throw( IndexOutOfBoundsException, RuntimeException, std::exception )
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
SolarMutexGuard aGuard;
|
|
 |
f325b2 |
ensureAlive();
|
|
 |
f325b2 |
ensureValidIndex( nIndex );
|
|
 |
f325b2 |
- return implCreateCellObj( implGetRow( nIndex ), implGetColumn( nIndex ) );
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ return getAccessibleCell(implGetRow(nIndex), implGetColumn(nIndex));
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Reference< XAccessibleRelationSet > SAL_CALL ScAccessibleCsvGrid::getAccessibleRelationSet()
|
|
 |
f325b2 |
@@ -1066,7 +1092,7 @@ Reference< XAccessible > SAL_CALL ScAccessibleCsvGrid::getAccessibleCellAt( sal_
|
|
 |
f325b2 |
SolarMutexGuard aGuard;
|
|
 |
f325b2 |
ensureAlive();
|
|
 |
f325b2 |
ensureValidPosition( nRow, nColumn );
|
|
 |
f325b2 |
- return implCreateCellObj( nRow, nColumn );
|
|
 |
f325b2 |
+ return getAccessibleCell(nRow, nColumn);
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Reference< XAccessible > SAL_CALL ScAccessibleCsvGrid::getAccessibleCaption()
|
|
 |
f325b2 |
@@ -1235,7 +1261,6 @@ Sequence< sal_Int8 > SAL_CALL ScAccessibleCsvGrid::getImplementationId() throw(
|
|
 |
f325b2 |
void ScAccessibleCsvGrid::SendFocusEvent( bool bFocused )
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
ScAccessibleCsvControl::SendFocusEvent( bFocused );
|
|
 |
f325b2 |
-
|
|
 |
f325b2 |
AccessibleEventObject aEvent;
|
|
 |
f325b2 |
aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
|
|
 |
f325b2 |
aEvent.Source = Reference< XAccessible >( this );
|
|
 |
f325b2 |
diff --git a/sc/source/ui/inc/AccessibleCsvControl.hxx b/sc/source/ui/inc/AccessibleCsvControl.hxx
|
|
 |
f325b2 |
index a181c24..870cb3c 100644
|
|
 |
f325b2 |
--- a/sc/source/ui/inc/AccessibleCsvControl.hxx
|
|
 |
f325b2 |
+++ b/sc/source/ui/inc/AccessibleCsvControl.hxx
|
|
 |
f325b2 |
@@ -31,6 +31,7 @@
|
|
 |
f325b2 |
#include <comphelper/uno3.hxx>
|
|
 |
f325b2 |
#include <vcl/vclptr.hxx>
|
|
 |
f325b2 |
#include "AccessibleContextBase.hxx"
|
|
 |
f325b2 |
+#include <map>
|
|
 |
f325b2 |
|
|
 |
f325b2 |
class ScCsvControl;
|
|
 |
f325b2 |
namespace utl { class AccessibleStateSetHelper; }
|
|
 |
f325b2 |
@@ -304,10 +305,16 @@ class ScAccessibleCsvGrid : public ScAccessibleCsvControl, public ScAccessibleCs
|
|
 |
f325b2 |
protected:
|
|
 |
f325b2 |
typedef ::com::sun::star::uno::Reference<
|
|
 |
f325b2 |
::com::sun::star::accessibility::XAccessibleTable > XAccessibleTableRef;
|
|
 |
f325b2 |
+ typedef std::map< sal_Int32, rtl::Reference<ScAccessibleCsvControl> > XAccessibleSet;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+private:
|
|
 |
f325b2 |
+ XAccessibleSet maAccessibleChildren;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
public:
|
|
 |
f325b2 |
explicit ScAccessibleCsvGrid( ScCsvGrid& rGrid );
|
|
 |
f325b2 |
virtual ~ScAccessibleCsvGrid();
|
|
 |
f325b2 |
+ using ScAccessibleContextBase::disposing;
|
|
 |
f325b2 |
+ virtual void SAL_CALL disposing() override;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
// XAccessibleComponent ---------------------------------------------------
|
|
 |
f325b2 |
|
|
 |
f325b2 |
@@ -531,6 +538,8 @@ private:
|
|
 |
f325b2 |
OUString implGetCellText( sal_Int32 nRow, sal_Int32 nColumn ) const;
|
|
 |
f325b2 |
/** Creates a new accessible object of the specified cell. Indexes must be valid. */
|
|
 |
f325b2 |
ScAccessibleCsvControl* implCreateCellObj( sal_Int32 nRow, sal_Int32 nColumn ) const;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ css::uno::Reference<css::accessibility::XAccessible> getAccessibleCell(sal_Int32 nRow, sal_Int32 nColumn);
|
|
 |
f325b2 |
};
|
|
 |
f325b2 |
|
|
 |
f325b2 |
/** Accessible class representing a cell of the CSV grid control. */
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
1.8.3.1
|
|
 |
f325b2 |
|