diff options
Diffstat (limited to 'vcl/source/accessibility/accessibleeditbrowseboxcell.cxx')
-rw-r--r-- | vcl/source/accessibility/accessibleeditbrowseboxcell.cxx | 337 |
1 files changed, 167 insertions, 170 deletions
diff --git a/vcl/source/accessibility/accessibleeditbrowseboxcell.cxx b/vcl/source/accessibility/accessibleeditbrowseboxcell.cxx index afd4e514a368..9fdb8a24df7b 100644 --- a/vcl/source/accessibility/accessibleeditbrowseboxcell.cxx +++ b/vcl/source/accessibility/accessibleeditbrowseboxcell.cxx @@ -25,216 +25,213 @@ #include <utility> #include <comphelper/diagnose_ex.hxx> -namespace accessibility -{ - using namespace com::sun::star::accessibility; - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::lang; - using namespace ::com::sun::star::awt; - using namespace ::comphelper; - - EditBrowseBoxTableCell::EditBrowseBoxTableCell( - const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, - const css::uno::Reference< css::accessibility::XAccessible >& _rxOwningAccessible, - const css::uno::Reference< css::accessibility::XAccessibleContext >& _xControlChild, - ::vcl::IAccessibleTableProvider& _rBrowseBox, - const css::uno::Reference< css::awt::XWindow >& _xFocusWindow, - sal_Int32 _nRowPos, - sal_uInt16 _nColPos) - :AccessibleBrowseBoxCell( _rxParent, _rBrowseBox, _xFocusWindow, _nRowPos, _nColPos ) - ,OAccessibleContextWrapperHelper( ::comphelper::getProcessComponentContext(), rBHelper, _xControlChild, _rxOwningAccessible, _rxParent ) - { - aggregateProxy( m_refCount, *this ); - } +using namespace com::sun::star::accessibility; +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::lang; +using namespace ::com::sun::star::awt; +using namespace ::comphelper; + +EditBrowseBoxTableCell::EditBrowseBoxTableCell( + const css::uno::Reference< css::accessibility::XAccessible >& _rxParent, + const css::uno::Reference< css::accessibility::XAccessible >& _rxOwningAccessible, + const css::uno::Reference< css::accessibility::XAccessibleContext >& _xControlChild, + ::vcl::IAccessibleTableProvider& _rBrowseBox, + const css::uno::Reference< css::awt::XWindow >& _xFocusWindow, + sal_Int32 _nRowPos, + sal_uInt16 _nColPos) + :AccessibleBrowseBoxCell( _rxParent, _rBrowseBox, _xFocusWindow, _nRowPos, _nColPos ) + ,OAccessibleContextWrapperHelper( ::comphelper::getProcessComponentContext(), rBHelper, _xControlChild, _rxOwningAccessible, _rxParent ) +{ + aggregateProxy( m_refCount, *this ); +} - EditBrowseBoxTableCell::~EditBrowseBoxTableCell() +EditBrowseBoxTableCell::~EditBrowseBoxTableCell() +{ + if ( !rBHelper.bDisposed ) { - if ( !rBHelper.bDisposed ) - { - acquire(); // to prevent duplicate dtor calls - dispose(); - } + acquire(); // to prevent duplicate dtor calls + dispose(); } +} - OUString SAL_CALL EditBrowseBoxTableCell::getImplementationName() - { - return u"com.sun.star.comp.svtools.TableCellProxy"_ustr; - } +OUString SAL_CALL EditBrowseBoxTableCell::getImplementationName() +{ + return u"com.sun.star.comp.svtools.TableCellProxy"_ustr; +} - IMPLEMENT_FORWARD_XINTERFACE2( EditBrowseBoxTableCell, AccessibleBrowseBoxCell, OAccessibleContextWrapperHelper ) +IMPLEMENT_FORWARD_XINTERFACE2( EditBrowseBoxTableCell, AccessibleBrowseBoxCell, OAccessibleContextWrapperHelper ) - IMPLEMENT_FORWARD_XTYPEPROVIDER2( EditBrowseBoxTableCell, AccessibleBrowseBoxCell, OAccessibleContextWrapperHelper ) +IMPLEMENT_FORWARD_XTYPEPROVIDER2( EditBrowseBoxTableCell, AccessibleBrowseBoxCell, OAccessibleContextWrapperHelper ) - void EditBrowseBoxTableCell::notifyTranslatedEvent( const AccessibleEventObject& _rEvent ) - { - commitEvent( _rEvent.EventId, _rEvent.NewValue, _rEvent.OldValue ); - } +void EditBrowseBoxTableCell::notifyTranslatedEvent( const AccessibleEventObject& _rEvent ) +{ + commitEvent( _rEvent.EventId, _rEvent.NewValue, _rEvent.OldValue ); +} - // css::accessibility::XAccessibleComponent - sal_Int32 SAL_CALL EditBrowseBoxTableCell::getForeground( ) - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +// css::accessibility::XAccessibleComponent +sal_Int32 SAL_CALL EditBrowseBoxTableCell::getForeground( ) +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - css::uno::Reference< css::accessibility::XAccessibleComponent > xAccComp( m_xInnerContext, UNO_QUERY ); - if ( xAccComp.is() ) - return xAccComp->getForeground(); - return 0; - } + css::uno::Reference< css::accessibility::XAccessibleComponent > xAccComp( m_xInnerContext, UNO_QUERY ); + if ( xAccComp.is() ) + return xAccComp->getForeground(); + return 0; +} - sal_Int32 SAL_CALL EditBrowseBoxTableCell::getBackground( ) - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +sal_Int32 SAL_CALL EditBrowseBoxTableCell::getBackground( ) +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - css::uno::Reference< css::accessibility::XAccessibleComponent > xAccComp( m_xInnerContext, UNO_QUERY ); - if ( xAccComp.is() ) - return xAccComp->getBackground(); - return 0; - } + css::uno::Reference< css::accessibility::XAccessibleComponent > xAccComp( m_xInnerContext, UNO_QUERY ); + if ( xAccComp.is() ) + return xAccComp->getBackground(); + return 0; +} - css::uno::Reference< css::accessibility::XAccessible > SAL_CALL EditBrowseBoxTableCell::getAccessibleParent( ) - { - return m_xParentAccessible; - } +css::uno::Reference< css::accessibility::XAccessible > SAL_CALL EditBrowseBoxTableCell::getAccessibleParent( ) +{ + return m_xParentAccessible; +} - OUString SAL_CALL EditBrowseBoxTableCell::getAccessibleDescription() - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +OUString SAL_CALL EditBrowseBoxTableCell::getAccessibleDescription() +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return m_xInnerContext->getAccessibleDescription(); - } + return m_xInnerContext->getAccessibleDescription(); +} - OUString SAL_CALL EditBrowseBoxTableCell::getAccessibleName() - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +OUString SAL_CALL EditBrowseBoxTableCell::getAccessibleName() +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return VclResId(RID_STR_ACC_COLUMN_NUM).replaceAll("%COLUMNNUMBER", OUString::number(getColumnPos()-1)) + ", " - + VclResId(RID_STR_ACC_ROW_NUM).replaceAll("%ROWNUMBER", OUString::number(getRowPos())); - } + return VclResId(RID_STR_ACC_COLUMN_NUM).replaceAll("%COLUMNNUMBER", OUString::number(getColumnPos()-1)) + ", " + + VclResId(RID_STR_ACC_ROW_NUM).replaceAll("%ROWNUMBER", OUString::number(getRowPos())); +} - css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL EditBrowseBoxTableCell::getAccessibleRelationSet() - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL EditBrowseBoxTableCell::getAccessibleRelationSet() +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return baseGetAccessibleRelationSet( ); - } + return baseGetAccessibleRelationSet( ); +} - sal_Int64 SAL_CALL EditBrowseBoxTableCell::getAccessibleStateSet() - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +sal_Int64 SAL_CALL EditBrowseBoxTableCell::getAccessibleStateSet() +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return m_xInnerContext->getAccessibleStateSet(); - // TODO: shouldn't we add an ACTIVE here? Isn't the EditBrowseBoxTableCell always ACTIVE? - } + return m_xInnerContext->getAccessibleStateSet(); + // TODO: shouldn't we add an ACTIVE here? Isn't the EditBrowseBoxTableCell always ACTIVE? +} - sal_Int64 SAL_CALL EditBrowseBoxTableCell::getAccessibleChildCount( ) - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +sal_Int64 SAL_CALL EditBrowseBoxTableCell::getAccessibleChildCount( ) +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return baseGetAccessibleChildCount(); - } + return baseGetAccessibleChildCount(); +} - css::uno::Reference< css::accessibility::XAccessible > SAL_CALL EditBrowseBoxTableCell::getAccessibleChild( sal_Int64 i ) - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +css::uno::Reference< css::accessibility::XAccessible > SAL_CALL EditBrowseBoxTableCell::getAccessibleChild( sal_Int64 i ) +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return baseGetAccessibleChild( i ); - } + return baseGetAccessibleChild( i ); +} - sal_Int16 SAL_CALL EditBrowseBoxTableCell::getAccessibleRole() - { - SolarMethodGuard aGuard(getMutex()); - ensureIsAlive(); +sal_Int16 SAL_CALL EditBrowseBoxTableCell::getAccessibleRole() +{ + SolarMethodGuard aGuard(getMutex()); + ensureIsAlive(); - return m_xInnerContext->getAccessibleRole( ); - } + return m_xInnerContext->getAccessibleRole( ); +} - void SAL_CALL EditBrowseBoxTableCell::dispose() - { - // simply disambiguate. Note that the OComponentHelper base in AccessibleBrowseBoxCell - // will call our "disposing()", which will call "dispose()" on the OAccessibleContextWrapperHelper - // so there is no need to do this here. - AccessibleBrowseBoxCell::dispose(); - } +void SAL_CALL EditBrowseBoxTableCell::dispose() +{ + // simply disambiguate. Note that the OComponentHelper base in AccessibleBrowseBoxCell + // will call our "disposing()", which will call "dispose()" on the OAccessibleContextWrapperHelper + // so there is no need to do this here. + AccessibleBrowseBoxCell::dispose(); +} - void SAL_CALL EditBrowseBoxTableCell::disposing( const css::lang::EventObject& _rSource ) - { - AccessibleBrowseBoxCell::disposing( _rSource ); - OAccessibleContextWrapperHelper::disposing( _rSource ); - } +void SAL_CALL EditBrowseBoxTableCell::disposing( const css::lang::EventObject& _rSource ) +{ + AccessibleBrowseBoxCell::disposing( _rSource ); + OAccessibleContextWrapperHelper::disposing( _rSource ); +} - void SAL_CALL EditBrowseBoxTableCell::disposing() - { - SolarMethodGuard aGuard(getMutex()); +void SAL_CALL EditBrowseBoxTableCell::disposing() +{ + SolarMethodGuard aGuard(getMutex()); + + OAccessibleContextWrapperHelper::dispose(); + // TODO: do we need to dispose our inner object? The base class does this, but is it a good idea? + AccessibleBrowseBoxCell::disposing(); +} + +// EditBrowseBoxTableCell +EditBrowseBoxTableCellAccess::EditBrowseBoxTableCellAccess( + css::uno::Reference< css::accessibility::XAccessible > _xParent, css::uno::Reference< css::accessibility::XAccessible > _xControlAccessible, + css::uno::Reference< css::awt::XWindow > _xFocusWindow, + ::vcl::IAccessibleTableProvider& _rBrowseBox, sal_Int32 _nRowPos, sal_uInt16 _nColPos ) + :m_xParent(std::move( _xParent )) + ,m_xControlAccessible(std::move( _xControlAccessible )) + ,m_xFocusWindow(std::move( _xFocusWindow )) + ,m_pBrowseBox( &_rBrowseBox ) + ,m_nRowPos( _nRowPos ) + ,m_nColPos( _nColPos ) +{ +} - OAccessibleContextWrapperHelper::dispose(); - // TODO: do we need to dispose our inner object? The base class does this, but is it a good idea? - AccessibleBrowseBoxCell::disposing(); - } +EditBrowseBoxTableCellAccess::~EditBrowseBoxTableCellAccess( ) +{ +} - // EditBrowseBoxTableCell - EditBrowseBoxTableCellAccess::EditBrowseBoxTableCellAccess( - css::uno::Reference< css::accessibility::XAccessible > _xParent, css::uno::Reference< css::accessibility::XAccessible > _xControlAccessible, - css::uno::Reference< css::awt::XWindow > _xFocusWindow, - ::vcl::IAccessibleTableProvider& _rBrowseBox, sal_Int32 _nRowPos, sal_uInt16 _nColPos ) - :m_xParent(std::move( _xParent )) - ,m_xControlAccessible(std::move( _xControlAccessible )) - ,m_xFocusWindow(std::move( _xFocusWindow )) - ,m_pBrowseBox( &_rBrowseBox ) - ,m_nRowPos( _nRowPos ) - ,m_nColPos( _nColPos ) +css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL EditBrowseBoxTableCellAccess::getAccessibleContext( ) +{ + if ( !m_pBrowseBox || !m_xControlAccessible.is() ) + throw DisposedException(); + css::uno::Reference< css::accessibility::XAccessibleContext > xMyContext( m_aContext ); + if ( !xMyContext.is() ) { - } + css::uno::Reference< css::accessibility::XAccessibleContext > xInnerContext = m_xControlAccessible->getAccessibleContext(); + css::uno::Reference< css::accessibility::XAccessible > xMe( this ); - EditBrowseBoxTableCellAccess::~EditBrowseBoxTableCellAccess( ) - { + xMyContext = new EditBrowseBoxTableCell( xMe, m_xParent, xInnerContext, *m_pBrowseBox, m_xFocusWindow, m_nRowPos, m_nColPos ); + m_aContext = xMyContext; } + return xMyContext; +} - css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL EditBrowseBoxTableCellAccess::getAccessibleContext( ) +void EditBrowseBoxTableCellAccess::disposing(std::unique_lock<std::mutex>&) +{ + // dispose our context, if it still alive + css::uno::Reference< XComponent > xMyContext( m_aContext.get(), UNO_QUERY ); + if ( xMyContext.is() ) { - if ( !m_pBrowseBox || !m_xControlAccessible.is() ) - throw DisposedException(); - css::uno::Reference< css::accessibility::XAccessibleContext > xMyContext( m_aContext ); - if ( !xMyContext.is() ) + try { - css::uno::Reference< css::accessibility::XAccessibleContext > xInnerContext = m_xControlAccessible->getAccessibleContext(); - css::uno::Reference< css::accessibility::XAccessible > xMe( this ); - - xMyContext = new EditBrowseBoxTableCell( xMe, m_xParent, xInnerContext, *m_pBrowseBox, m_xFocusWindow, m_nRowPos, m_nColPos ); - m_aContext = xMyContext; + xMyContext->dispose(); } - return xMyContext; - } - - void EditBrowseBoxTableCellAccess::disposing(std::unique_lock<std::mutex>&) - { - // dispose our context, if it still alive - css::uno::Reference< XComponent > xMyContext( m_aContext.get(), UNO_QUERY ); - if ( xMyContext.is() ) + catch( const Exception& ) { - try - { - xMyContext->dispose(); - } - catch( const Exception& ) - { - TOOLS_WARN_EXCEPTION( "accessibility", "EditBrowseBoxTableCellAccess::disposing: caught an exception while disposing the context!" ); - } + TOOLS_WARN_EXCEPTION( "accessibility", "EditBrowseBoxTableCellAccess::disposing: caught an exception while disposing the context!" ); } - - m_pBrowseBox = nullptr; - m_xControlAccessible.clear(); - m_aContext.clear(); - // NO dispose of the inner object there: it is the css::accessibility::XAccessible of a window, and disposing - // it would delete the respective VCL window } -} // namespace accessibility + + m_pBrowseBox = nullptr; + m_xControlAccessible.clear(); + m_aContext.clear(); + // NO dispose of the inner object there: it is the css::accessibility::XAccessible of a window, and disposing + // it would delete the respective VCL window +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |