accessibility/inc/standard/vclxaccessiblelistitem.hxx | 9 - accessibility/source/standard/vclxaccessiblelistitem.cxx | 90 ++++++--------- 2 files changed, 42 insertions(+), 57 deletions(-)
New commits: commit 6658a384245f04b433fb540c757b9bd9be43e1c3 Author: Noel Grandin <[email protected]> AuthorDate: Wed Mar 27 12:15:14 2024 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Thu Mar 28 06:43:03 2024 +0100 convert VCLXAccessibleListItem to comphelper::WeakComponentImplHelper Change-Id: I82b7dd9b0cdf379c710870a295c8f33ed9fff681 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165437 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/accessibility/inc/standard/vclxaccessiblelistitem.hxx b/accessibility/inc/standard/vclxaccessiblelistitem.hxx index 260c132bbfa1..83142b50ed6f 100644 --- a/accessibility/inc/standard/vclxaccessiblelistitem.hxx +++ b/accessibility/inc/standard/vclxaccessiblelistitem.hxx @@ -26,8 +26,7 @@ #include <com/sun/star/accessibility/XAccessibleText.hpp> #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> -#include <cppuhelper/compbase.hxx> -#include <cppuhelper/basemutex.hxx> +#include <comphelper/compbase.hxx> #include <comphelper/accessibletexthelper.hxx> #include <standard/vclxaccessiblelist.hxx> @@ -42,7 +41,7 @@ namespace com::sun::star::awt { // class VCLXAccessibleListItem ------------------------------------------ -typedef ::cppu::WeakComponentImplHelper< css::accessibility::XAccessible +typedef ::comphelper::WeakComponentImplHelper< css::accessibility::XAccessible , css::accessibility::XAccessibleContext , css::accessibility::XAccessibleComponent , css::accessibility::XAccessibleEventBroadcaster @@ -51,7 +50,7 @@ typedef ::cppu::WeakComponentImplHelper< css::accessibility::XAccessible /** the class OAccessibleListBoxEntry represents the base class for an accessible object of a listbox entry */ -class VCLXAccessibleListItem final : public ::cppu::BaseMutex, +class VCLXAccessibleListItem final : public ::comphelper::OCommonAccessibleText, public VCLXAccessibleListItem_BASE { @@ -69,7 +68,7 @@ private: virtual ~VCLXAccessibleListItem() override = default; /** this function is called upon disposing the component */ - virtual void SAL_CALL disposing() override; + virtual void disposing(std::unique_lock<std::mutex>& rGuard) override; // OCommonAccessibleText virtual OUString implGetText() override; diff --git a/accessibility/source/standard/vclxaccessiblelistitem.cxx b/accessibility/source/standard/vclxaccessiblelistitem.cxx index 5339f93824a9..31b889ebc3b5 100644 --- a/accessibility/source/standard/vclxaccessiblelistitem.cxx +++ b/accessibility/source/standard/vclxaccessiblelistitem.cxx @@ -60,8 +60,7 @@ using namespace ::com::sun::star; // Ctor() and Dtor() VCLXAccessibleListItem::VCLXAccessibleListItem(sal_Int32 _nIndexInParent, rtl::Reference< VCLXAccessibleList > _xParent) - : VCLXAccessibleListItem_BASE(m_aMutex) - , m_nIndexInParent(_nIndexInParent) + : m_nIndexInParent(_nIndexInParent) , m_bSelected(false) , m_bVisible(false) , m_nClientId(0) @@ -142,26 +141,25 @@ Sequence< sal_Int8 > VCLXAccessibleListItem::getImplementationId() // XComponent -void SAL_CALL VCLXAccessibleListItem::disposing() +void VCLXAccessibleListItem::disposing(std::unique_lock<std::mutex>& rGuard) { - comphelper::AccessibleEventNotifier::TClientId nId( 0 ); - Reference< XInterface > xEventSource; - { - ::osl::MutexGuard aGuard( m_aMutex ); - - VCLXAccessibleListItem_BASE::disposing(); - m_sEntryText.clear(); - m_xParent = nullptr; + VCLXAccessibleListItem_BASE::disposing(rGuard); - nId = m_nClientId; - m_nClientId = 0; - if ( nId ) - xEventSource = *this; - } + m_sEntryText.clear(); + m_xParent = nullptr; + comphelper::AccessibleEventNotifier::TClientId nId = m_nClientId; + m_nClientId = 0; + Reference< XInterface > xEventSource; + if ( nId ) + xEventSource = *this; // Send a disposing to all listeners. if ( nId ) - comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this ); + { + rGuard.unlock(); + comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nId, *this ); + rGuard.lock(); + } } // XServiceInfo @@ -204,7 +202,7 @@ Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleChild( sa Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleParent( ) { - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return m_xParent; } @@ -228,7 +226,7 @@ OUString SAL_CALL VCLXAccessibleListItem::getAccessibleDescription( ) OUString SAL_CALL VCLXAccessibleListItem::getAccessibleName( ) { - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); // entry text == accessible name return m_sEntryText; @@ -241,11 +239,11 @@ Reference< XAccessibleRelationSet > SAL_CALL VCLXAccessibleListItem::getAccessib sal_Int64 SAL_CALL VCLXAccessibleListItem::getAccessibleStateSet( ) { - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); sal_Int64 nStateSet = 0; - if ( !rBHelper.bDisposed && !rBHelper.bInDispose ) + if ( !m_bDisposed ) { nStateSet |= AccessibleStateType::TRANSIENT; @@ -274,7 +272,7 @@ sal_Int64 SAL_CALL VCLXAccessibleListItem::getAccessibleStateSet( ) Locale SAL_CALL VCLXAccessibleListItem::getLocale( ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return implGetLocale(); } @@ -284,7 +282,7 @@ Locale SAL_CALL VCLXAccessibleListItem::getLocale( ) sal_Bool SAL_CALL VCLXAccessibleListItem::containsPoint( const awt::Point& _aPoint ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); bool bInside = false; ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -305,7 +303,7 @@ Reference< XAccessible > SAL_CALL VCLXAccessibleListItem::getAccessibleAtPoint( awt::Rectangle SAL_CALL VCLXAccessibleListItem::getBounds( ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); awt::Rectangle aRect; ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -318,7 +316,7 @@ awt::Rectangle SAL_CALL VCLXAccessibleListItem::getBounds( ) awt::Point SAL_CALL VCLXAccessibleListItem::getLocation( ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); Point aPoint(0,0); ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -333,7 +331,7 @@ awt::Point SAL_CALL VCLXAccessibleListItem::getLocation( ) awt::Point SAL_CALL VCLXAccessibleListItem::getLocationOnScreen( ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); Point aPoint(0,0); ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -349,7 +347,7 @@ awt::Point SAL_CALL VCLXAccessibleListItem::getLocationOnScreen( ) awt::Size SAL_CALL VCLXAccessibleListItem::getSize( ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); Size aSize; ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -374,7 +372,7 @@ sal_Int32 SAL_CALL VCLXAccessibleListItem::getCaretPosition() sal_Bool SAL_CALL VCLXAccessibleListItem::setCaretPosition( sal_Int32 nIndex ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); if ( !implIsValidRange( nIndex, nIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -385,7 +383,7 @@ sal_Bool SAL_CALL VCLXAccessibleListItem::setCaretPosition( sal_Int32 nIndex ) sal_Unicode SAL_CALL VCLXAccessibleListItem::getCharacter( sal_Int32 nIndex ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::implGetCharacter( m_sEntryText, nIndex ); } @@ -393,7 +391,7 @@ sal_Unicode SAL_CALL VCLXAccessibleListItem::getCharacter( sal_Int32 nIndex ) Sequence< PropertyValue > SAL_CALL VCLXAccessibleListItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< OUString >& ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); if ( !implIsValidIndex( nIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -404,7 +402,7 @@ Sequence< PropertyValue > SAL_CALL VCLXAccessibleListItem::getCharacterAttribute awt::Rectangle SAL_CALL VCLXAccessibleListItem::getCharacterBounds( sal_Int32 nIndex ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); if ( !implIsValidIndex( nIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -424,8 +422,7 @@ awt::Rectangle SAL_CALL VCLXAccessibleListItem::getCharacterBounds( sal_Int32 nI sal_Int32 SAL_CALL VCLXAccessibleListItem::getCharacterCount() { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return m_sEntryText.getLength(); } @@ -433,7 +430,7 @@ sal_Int32 SAL_CALL VCLXAccessibleListItem::getCharacterCount() sal_Int32 SAL_CALL VCLXAccessibleListItem::getIndexAtPoint( const awt::Point& aPoint ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); sal_Int32 nIndex = -1; ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr; @@ -452,32 +449,22 @@ sal_Int32 SAL_CALL VCLXAccessibleListItem::getIndexAtPoint( const awt::Point& aP OUString SAL_CALL VCLXAccessibleListItem::getSelectedText() { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); - return OUString(); } sal_Int32 SAL_CALL VCLXAccessibleListItem::getSelectionStart() { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); - return 0; } sal_Int32 SAL_CALL VCLXAccessibleListItem::getSelectionEnd() { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); - return 0; } sal_Bool SAL_CALL VCLXAccessibleListItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); if ( !implIsValidRange( nStartIndex, nEndIndex, m_sEntryText.getLength() ) ) throw IndexOutOfBoundsException(); @@ -487,8 +474,7 @@ sal_Bool SAL_CALL VCLXAccessibleListItem::setSelection( sal_Int32 nStartIndex, s OUString SAL_CALL VCLXAccessibleListItem::getText() { - SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return m_sEntryText; } @@ -496,7 +482,7 @@ OUString SAL_CALL VCLXAccessibleListItem::getText() OUString SAL_CALL VCLXAccessibleListItem::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::implGetTextRange( m_sEntryText, nStartIndex, nEndIndex ); } @@ -504,7 +490,7 @@ OUString SAL_CALL VCLXAccessibleListItem::getTextRange( sal_Int32 nStartIndex, s css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::getTextAtIndex( nIndex, aTextType ); } @@ -512,7 +498,7 @@ css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextAtIndex( css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::getTextBeforeIndex( nIndex, aTextType ); } @@ -520,7 +506,7 @@ css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBeforeIn css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); return OCommonAccessibleText::getTextBehindIndex( nIndex, aTextType ); } @@ -528,7 +514,7 @@ css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBehindIn sal_Bool SAL_CALL VCLXAccessibleListItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) { SolarMutexGuard aSolarGuard; - ::osl::MutexGuard aGuard( m_aMutex ); + std::unique_lock aGuard( m_aMutex ); checkIndex_Impl( nStartIndex, m_sEntryText ); checkIndex_Impl( nEndIndex, m_sEntryText );
