summaryrefslogtreecommitdiffstats
path: root/accessibility/source/extended/AccessibleGridControl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'accessibility/source/extended/AccessibleGridControl.cxx')
-rw-r--r--accessibility/source/extended/AccessibleGridControl.cxx92
1 files changed, 28 insertions, 64 deletions
diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx
index c90cc0384b46..b2577ea588b3 100644
--- a/accessibility/source/extended/AccessibleGridControl.cxx
+++ b/accessibility/source/extended/AccessibleGridControl.cxx
@@ -22,10 +22,9 @@
#include <extended/AccessibleGridControlHeader.hxx>
#include <com/sun/star/accessibility/AccessibleEventId.hpp>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
-#include <com/sun/star/accessibility/AccessibleTableModelChange.hpp>
-#include <com/sun/star/accessibility/AccessibleTableModelChangeType.hpp>
#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
#include <toolkit/helper/convert.hxx>
+#include <utility>
#include <vcl/accessibletable.hxx>
#include <vcl/svapp.hxx>
@@ -42,7 +41,7 @@ using namespace ::vcl::table;
AccessibleGridControl::AccessibleGridControl(
const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, const css::uno::Reference< css::accessibility::XAccessible >& _rxCreator,
::vcl::table::IAccessibleTable& _rTable )
- : AccessibleGridControlBase( _rxParent, _rTable, TCTYPE_GRIDCONTROL ),
+ : AccessibleGridControlBase(_rxParent, _rTable, AccessibleTableControlObjType::GRIDCONTROL),
m_aCreator(_rxCreator)
{
}
@@ -59,11 +58,6 @@ void SAL_CALL AccessibleGridControl::disposing()
m_xTable->dispose();
m_xTable.clear();
}
- if ( m_xCell.is() )
- {
- m_xCell->dispose();
- m_xCell.clear();
- }
if ( m_xRowHeaderBar.is() )
{
m_xRowHeaderBar->dispose();
@@ -77,7 +71,7 @@ void SAL_CALL AccessibleGridControl::disposing()
AccessibleGridControlBase::disposing();
}
-sal_Int32 AccessibleGridControl::implGetAccessibleChildCount()
+sal_Int64 AccessibleGridControl::implGetAccessibleChildCount()
{
return m_aTable.GetAccessibleControlCount();
}
@@ -85,7 +79,7 @@ sal_Int32 AccessibleGridControl::implGetAccessibleChildCount()
// css::accessibility::XAccessibleContext ---------------------------------------------------------
-sal_Int32 SAL_CALL AccessibleGridControl::getAccessibleChildCount()
+sal_Int64 SAL_CALL AccessibleGridControl::getAccessibleChildCount()
{
SolarMutexGuard aSolarGuard;
ensureIsAlive();
@@ -94,7 +88,7 @@ sal_Int32 SAL_CALL AccessibleGridControl::getAccessibleChildCount()
css::uno::Reference< css::accessibility::XAccessible > SAL_CALL
-AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex )
+AccessibleGridControl::getAccessibleChild( sal_Int64 nChildIndex )
{
SolarMutexGuard aSolarGuard;
@@ -108,7 +102,8 @@ AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex )
{
if(!m_xColumnHeaderBar.is())
{
- m_xColumnHeaderBar = new AccessibleGridControlHeader(m_aCreator, m_aTable, vcl::table::TCTYPE_COLUMNHEADERBAR);
+ m_xColumnHeaderBar = new AccessibleGridControlHeader(m_aCreator, m_aTable,
+ vcl::table::AccessibleTableControlObjType::COLUMNHEADERBAR);
}
xChild = m_xColumnHeaderBar.get();
}
@@ -116,7 +111,8 @@ AccessibleGridControl::getAccessibleChild( sal_Int32 nChildIndex )
{
if(!m_xRowHeaderBar.is())
{
- m_xRowHeaderBar = new AccessibleGridControlHeader(m_aCreator, m_aTable, vcl::table::TCTYPE_ROWHEADERBAR);
+ m_xRowHeaderBar = new AccessibleGridControlHeader(m_aCreator, m_aTable,
+ vcl::table::AccessibleTableControlObjType::ROWHEADERBAR);
}
xChild = m_xRowHeaderBar.get();
}
@@ -185,7 +181,7 @@ void SAL_CALL AccessibleGridControl::grabFocus()
OUString SAL_CALL AccessibleGridControl::getImplementationName()
{
- return "com.sun.star.accessibility.AccessibleGridControl";
+ return u"com.sun.star.accessibility.AccessibleGridControl"_ustr;
}
@@ -195,13 +191,13 @@ tools::Rectangle AccessibleGridControl::implGetBoundingBox()
{
vcl::Window* pParent = m_aTable.GetAccessibleParentWindow();
OSL_ENSURE( pParent, "implGetBoundingBox - missing parent window" );
- return m_aTable.GetWindowExtentsRelative( pParent );
+ return m_aTable.GetWindowExtentsRelative( *pParent );
}
-tools::Rectangle AccessibleGridControl::implGetBoundingBoxOnScreen()
+AbsoluteScreenPixelRectangle AccessibleGridControl::implGetBoundingBoxOnScreen()
{
- return m_aTable.GetWindowExtentsRelative( nullptr );
+ return m_aTable.GetWindowExtentsAbsolute();
}
// internal helper methods ----------------------------------------------------
@@ -221,9 +217,9 @@ AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType
css::uno::Reference< css::accessibility::XAccessible > xRet;
rtl::Reference< AccessibleGridControlHeader >* pxMember = nullptr;
- if( eObjType == TCTYPE_ROWHEADERBAR )
+ if (eObjType == AccessibleTableControlObjType::ROWHEADERBAR)
pxMember = &m_xRowHeaderBar;
- else if( eObjType == TCTYPE_COLUMNHEADERBAR )
+ else if (eObjType == AccessibleTableControlObjType::COLUMNHEADERBAR)
pxMember = &m_xColumnHeaderBar;
if( pxMember )
@@ -239,18 +235,18 @@ AccessibleGridControl::implGetHeaderBar( AccessibleTableControlObjType eObjType
}
css::uno::Reference< css::accessibility::XAccessible >
-AccessibleGridControl::implGetFixedChild( sal_Int32 nChildIndex )
+AccessibleGridControl::implGetFixedChild( sal_Int64 nChildIndex )
{
css::uno::Reference< css::accessibility::XAccessible > xRet;
switch( nChildIndex )
{
/** Child index of the column header bar (first row). */
case 0:
- xRet = implGetHeaderBar( TCTYPE_COLUMNHEADERBAR );
+ xRet = implGetHeaderBar(AccessibleTableControlObjType::COLUMNHEADERBAR);
break;
/** Child index of the row header bar ("handle column"). */
case 1:
- xRet = implGetHeaderBar( TCTYPE_ROWHEADERBAR );
+ xRet = implGetHeaderBar(AccessibleTableControlObjType::ROWHEADERBAR);
break;
/** Child index of the data table. */
case 2:
@@ -269,23 +265,18 @@ rtl::Reference<AccessibleGridControlTable> AccessibleGridControl::createAccessib
void AccessibleGridControl::commitCellEvent(sal_Int16 _nEventId,const Any& _rNewValue,const Any& _rOldValue)
{
- sal_Int32 nChildCount = implGetAccessibleChildCount();
+ sal_Int64 nChildCount = implGetAccessibleChildCount();
if(nChildCount != 0)
{
- for(sal_Int32 i=0;i<nChildCount;i++)
+ for(sal_Int64 i=0;i<nChildCount;i++)
{
css::uno::Reference< css::accessibility::XAccessible > xAccessible = getAccessibleChild(i);
if(css::uno::Reference< css::accessibility::XAccessible >(m_xTable) == xAccessible)
{
- std::vector< rtl::Reference<AccessibleGridControlTableCell> >& rCells =
- m_xTable->getCellVector();
- size_t nIndex = m_aTable.GetCurrentRow() * m_aTable.GetColumnCount()
- + m_aTable.GetCurrentColumn();
- if (nIndex < rCells.size() && rCells[nIndex])
- {
- m_xCell = rCells[nIndex];
- m_xCell->commitEvent( _nEventId, _rNewValue, _rOldValue );
- }
+ Reference<XAccessible> xCell = m_xTable->getAccessibleCellAt(
+ m_aTable.GetCurrentRow(), m_aTable.GetCurrentColumn());
+ AccessibleGridControlTableCell* pCell = static_cast<AccessibleGridControlTableCell*>(xCell.get());
+ pCell->commitEvent(_nEventId, _rNewValue, _rOldValue);
}
}
}
@@ -307,37 +298,10 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe
const sal_Int32 nCurrentCol = m_aTable.GetCurrentColumn();
css::uno::Reference< css::accessibility::XAccessible > xChild;
if (nCurrentRow > -1 && nCurrentCol > -1)
- {
- sal_Int32 nColumnCount = m_aTable.GetColumnCount();
- xChild = m_xTable->getAccessibleChild(nCurrentRow * nColumnCount + nCurrentCol);
- }
+ xChild = m_xTable->getAccessibleCellAt(nCurrentRow, nCurrentCol);
+
m_xTable->commitEvent(_nEventId, Any(xChild),_rOldValue);
}
- else if(_nEventId == AccessibleEventId::TABLE_MODEL_CHANGED)
- {
- AccessibleTableModelChange aChange;
- if(_rNewValue >>= aChange)
- {
- if(aChange.Type == AccessibleTableModelChangeType::DELETE)
- {
- std::vector< rtl::Reference<AccessibleGridControlTableCell> >& rCells =
- m_xTable->getCellVector();
- int nColCount = m_aTable.GetColumnCount();
- // check valid index - entries are inserted lazily
- size_t const nStart = nColCount * aChange.FirstRow;
- size_t const nEnd = nColCount * aChange.LastRow;
- if (nStart < rCells.size())
- {
- m_xTable->getCellVector().erase(
- rCells.begin() + nStart,
- rCells.begin() + std::min(rCells.size(), nEnd));
- }
- m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
- }
- else
- m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
- }
- }
else
m_xTable->commitEvent(_nEventId,_rNewValue,_rOldValue);
}
@@ -346,8 +310,8 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe
AccessibleGridControlAccess::AccessibleGridControlAccess(
- const css::uno::Reference< css::accessibility::XAccessible >& rxParent, ::vcl::table::IAccessibleTable& rTable )
- : m_xParent( rxParent )
+ css::uno::Reference< css::accessibility::XAccessible > xParent, ::vcl::table::IAccessibleTable& rTable )
+ : m_xParent(std::move( xParent ))
, m_pTable( & rTable )
{
}