svx a11y: Let AccessibleTableHeaderShape subclass OAccessible
Reuse existing OAccessible logic by subclassing it.
This aligns AccessibleTableHeaderShape with other
a11y implementations.
No user-visible change in behavior intended.
Sample steps to make use of the class on Linux with
the qt6 vcl plugin:
* start Impress
* use the "Insert" -> "Table" dialog to insert a table
* type something in some cells
* start Accerciser
* in Accerciser's tree view of LO's a11y hierarchy, navigate
to the a11y object of the table (which uses an a11y name of
"TableShape")
* use Accerciser's IPython console to interact with the table header:
In [6]: table = acc.queryTable()
In [7]: table_header_cell = table.getRowHeader(0)
In [8]: table_header_cell.get_name()
Out[8]: 'A1'
This matches the behavior without this change in place.
(The question of whether all of the semantics/logic implemented in
AccessibleTableHeaderShape makes sense as is is a separate question,
unrelated to this refactor.)
Change-Id: I15c6a19aaa4ae69085dd8cb3a53447e55bf096f9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/210456
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This commit is contained in:
@@ -125,15 +125,10 @@ private:
|
||||
sal_Int64 GetIndexOfSelectedChild( sal_Int64 nSelectedChildIndex ) const;
|
||||
};
|
||||
|
||||
typedef ::cppu::WeakImplHelper<
|
||||
css::accessibility::XAccessible,
|
||||
css::accessibility::XAccessibleComponent,
|
||||
css::accessibility::XAccessibleContext,
|
||||
css::accessibility::XAccessibleTable,
|
||||
css::accessibility::XAccessibleTableSelection >
|
||||
AccessibleTableHeaderShape_BASE;
|
||||
|
||||
class AccessibleTableHeaderShape final : public AccessibleTableHeaderShape_BASE
|
||||
class AccessibleTableHeaderShape final
|
||||
: public cppu::ImplInheritanceHelper<comphelper::OAccessible,
|
||||
css::accessibility::XAccessibleTable,
|
||||
css::accessibility::XAccessibleTableSelection>
|
||||
{
|
||||
public:
|
||||
// bRow, true means rowheader, false means columnheader
|
||||
@@ -142,9 +137,6 @@ public:
|
||||
AccessibleTableHeaderShape(const AccessibleTableHeaderShape&) = delete;
|
||||
AccessibleTableHeaderShape& operator=(const AccessibleTableHeaderShape&) = delete;
|
||||
|
||||
// XAccessible
|
||||
virtual css::uno::Reference< css::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext( ) override;
|
||||
|
||||
// XAccessibleContext
|
||||
virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override;
|
||||
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override;
|
||||
@@ -158,12 +150,8 @@ public:
|
||||
virtual css::lang::Locale SAL_CALL getLocale( ) override;
|
||||
|
||||
//XAccessibleComponent
|
||||
virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint ) override;
|
||||
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override;
|
||||
virtual css::awt::Rectangle SAL_CALL getBounds( ) override;
|
||||
virtual css::awt::Point SAL_CALL getLocation( ) override;
|
||||
virtual css::awt::Point SAL_CALL getLocationOnScreen( ) override;
|
||||
virtual css::awt::Size SAL_CALL getSize( ) override;
|
||||
virtual sal_Int32 SAL_CALL getForeground( ) override;
|
||||
virtual sal_Int32 SAL_CALL getBackground( ) override;
|
||||
virtual void SAL_CALL grabFocus( ) override;
|
||||
@@ -194,6 +182,10 @@ public:
|
||||
virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column ) override ;
|
||||
virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row ) override ;
|
||||
virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column ) override ;
|
||||
|
||||
protected:
|
||||
virtual css::awt::Rectangle implGetBounds() override;
|
||||
|
||||
private:
|
||||
bool mbRow;
|
||||
rtl::Reference< AccessibleTableShape > mpTable;
|
||||
|
||||
@@ -953,12 +953,6 @@ AccessibleTableHeaderShape::~AccessibleTableHeaderShape()
|
||||
mpTable = nullptr;
|
||||
}
|
||||
|
||||
// XAccessible
|
||||
Reference< XAccessibleContext > SAL_CALL AccessibleTableHeaderShape::getAccessibleContext()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
// XAccessibleContext
|
||||
sal_Int64 SAL_CALL AccessibleTableHeaderShape::getAccessibleChildCount( )
|
||||
{
|
||||
@@ -1012,36 +1006,19 @@ Locale SAL_CALL AccessibleTableHeaderShape::getLocale()
|
||||
}
|
||||
|
||||
//XAccessibleComponent
|
||||
sal_Bool SAL_CALL AccessibleTableHeaderShape::containsPoint ( const css::awt::Point& aPoint )
|
||||
{
|
||||
return mpTable->containsPoint( aPoint );
|
||||
}
|
||||
|
||||
Reference< XAccessible > SAL_CALL AccessibleTableHeaderShape::getAccessibleAtPoint ( const css::awt::Point& aPoint)
|
||||
{
|
||||
return mpTable->getAccessibleAtPoint( aPoint );
|
||||
}
|
||||
|
||||
css::awt::Rectangle SAL_CALL AccessibleTableHeaderShape::getBounds()
|
||||
{
|
||||
return mpTable->getBounds();
|
||||
}
|
||||
|
||||
css::awt::Point SAL_CALL AccessibleTableHeaderShape::getLocation()
|
||||
{
|
||||
return mpTable->getLocation();
|
||||
}
|
||||
css::awt::Rectangle AccessibleTableHeaderShape::implGetBounds() { return mpTable->getBounds(); }
|
||||
|
||||
css::awt::Point SAL_CALL AccessibleTableHeaderShape::getLocationOnScreen()
|
||||
{
|
||||
return mpTable->getLocationOnScreen();
|
||||
}
|
||||
|
||||
css::awt::Size SAL_CALL AccessibleTableHeaderShape::getSize()
|
||||
{
|
||||
return mpTable->getSize();
|
||||
}
|
||||
|
||||
sal_Int32 SAL_CALL AccessibleTableHeaderShape::getForeground()
|
||||
{
|
||||
return mpTable->getForeground();
|
||||
|
||||
Reference in New Issue
Block a user