summaryrefslogtreecommitdiff
path: root/include/comphelper
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2023-01-06 18:43:28 +0100
committerStephan Bergmann <sbergman@redhat.com>2023-01-06 19:02:05 +0000
commitec98e7769048d44c6d274e3edcac19d5cbc74348 (patch)
tree1f059916db08d101c8e24ea76d4fd21582a246ca /include/comphelper
parenta2e0d46ec556382140069fe473d6e0018e1d2881 (diff)
Merge comphelper::OAccessibleContextHelper into comphelper::OCommonAccessibleComponent
Change-Id: I586ae8fe2842fd879ae2ae506c659d06dda16843 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145160 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'include/comphelper')
-rw-r--r--include/comphelper/accessiblecomponenthelper.hxx117
-rw-r--r--include/comphelper/accessiblecontexthelper.hxx140
2 files changed, 121 insertions, 136 deletions
diff --git a/include/comphelper/accessiblecomponenthelper.hxx b/include/comphelper/accessiblecomponenthelper.hxx
index 963bea96bf17..0c738d0e6df0 100644
--- a/include/comphelper/accessiblecomponenthelper.hxx
+++ b/include/comphelper/accessiblecomponenthelper.hxx
@@ -21,8 +21,12 @@
#define INCLUDED_COMPHELPER_ACCESSIBLECOMPONENTHELPER_HXX
#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext2.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
#include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp>
-#include <comphelper/accessiblecontexthelper.hxx>
+#include <comphelper/accessibleeventnotifier.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase2.hxx>
#include <cppuhelper/implbase1.hxx>
#include <comphelper/uno3.hxx>
#include <comphelper/comphelperdllapi.h>
@@ -34,15 +38,118 @@ namespace comphelper
//= OCommonAccessibleComponent
+ typedef ::cppu::WeakAggComponentImplHelper2 < css::accessibility::XAccessibleContext2,
+ css::accessibility::XAccessibleEventBroadcaster
+ > OCommonAccessibleComponent_Base;
+
/** base class encapsulating common functionality for the helper classes implementing
the XAccessibleComponent respectively XAccessibleExtendendComponent
*/
- class COMPHELPER_DLLPUBLIC OCommonAccessibleComponent : public OAccessibleContextHelper
+ class COMPHELPER_DLLPUBLIC OCommonAccessibleComponent
+ :public ::cppu::BaseMutex
+ ,public OCommonAccessibleComponent_Base
{
+ friend class OContextEntryGuard;
+ private:
+ css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator; // the XAccessible which created our XAccessibleContext
+ AccessibleEventNotifier::TClientId m_nClientId;
+
+ protected:
+ virtual ~OCommonAccessibleComponent( ) override;
+
+ OCommonAccessibleComponent( );
+
+ /** late construction
+ @param _rxAccessible
+ the Accessible object which created this context.
+ <p>If your derived implementation implements the XAccessible (and does not follow the proposed
+ separation of XAccessible from XAccessibleContext), you may pass <code>this</code> here.</p>
+
+ <p>The object is hold weak, so its life time is not affected.</p>
+
+ <p>The object is needed for performance reasons: for <method>getAccessibleIndexInParent</method>,
+ all children (which are XAccessible's theirself) of our parent have to be asked. If we know our
+ XAccessible, we can compare it with all the children, instead of asking all children for their
+ context and comparing this context with ourself.</p>
+ */
+ void lateInit( const css::uno::Reference< css::accessibility::XAccessible >& _rxAccessible );
+
+ /** retrieves the creator previously set with <method>lateInit</method>
+ */
+ css::uno::Reference< css::accessibility::XAccessible >
+ getAccessibleCreator( ) const;
+
+ public:
+ // XAccessibleEventBroadcaster
+ virtual void SAL_CALL addAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
+ virtual void SAL_CALL removeAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
+
+ // XAccessibleContext - still waiting to be overwritten
+ virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override = 0;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override = 0;
+ virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override = 0;
+ virtual sal_Int16 SAL_CALL getAccessibleRole( ) override = 0;
+ virtual OUString SAL_CALL getAccessibleDescription( ) override = 0;
+ virtual OUString SAL_CALL getAccessibleName( ) override = 0;
+ virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override = 0;
+ virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override = 0;
+
+ // XAccessibleContext2 - default implementation
+ virtual OUString SAL_CALL getAccessibleId( ) override;
+
+ // XAccessibleContext - default implementations
+ /** default implementation for retrieving the index of this object within the parent
+ <p>This basic implementation here returns the index <code>i</code> of the child for which
+ <code>&lt;parent&gt;.getAccessibleChild( i )</code> equals our creator.</p>
+ */
+ virtual sal_Int64 SAL_CALL getAccessibleIndexInParent( ) override;
+ /** default implementation for retrieving the locale
+ <p>This basic implementation returns the locale of the parent context,
+ as retrieved via getAccessibleParent()->getAccessibleContext.</p>
+ */
+ virtual css::lang::Locale SAL_CALL getLocale( ) override;
+
+ protected:
+ // OComponentHelper
+ virtual void SAL_CALL disposing() override;
+
protected:
- /// see the respective base class ctor for an extensive comment on this, please
- OCommonAccessibleComponent();
- virtual ~OCommonAccessibleComponent() override;
+ // helper
+ /** notifies all AccessibleEventListeners of a certain event
+
+ @precond not to be called with our mutex locked
+ @param _nEventId
+ the id of the event. See AccessibleEventType
+ @param _rOldValue
+ the old value to be notified
+ @param _rNewValue
+ the new value to be notified
+ */
+ void NotifyAccessibleEvent(
+ const sal_Int16 _nEventId,
+ const css::uno::Any& _rOldValue,
+ const css::uno::Any& _rNewValue
+ );
+
+ // life time control
+ /// checks whether the object is alive (returns <TRUE/> then) or disposed
+ bool isAlive() const;
+ /// checks for being alive. If the object is already disposed (i.e. not alive), an exception is thrown.
+ void ensureAlive() const;
+
+ /** ensures that the object is disposed.
+ @precond
+ to be called from within the destructor of your derived class only!
+ */
+ void ensureDisposed( );
+
+ /** shortcut for retrieving the context of the parent (returned by getAccessibleParent)
+ */
+ css::uno::Reference< css::accessibility::XAccessibleContext >
+ implGetParentContext();
+
+ // access to the base class' broadcast helper/mutex
+ ::osl::Mutex& GetMutex() { return m_aMutex; }
protected:
/// implements the calculation of the bounding rectangle - still waiting to be overwritten
diff --git a/include/comphelper/accessiblecontexthelper.hxx b/include/comphelper/accessiblecontexthelper.hxx
index ea0f9b214d29..59a87a6987df 100644
--- a/include/comphelper/accessiblecontexthelper.hxx
+++ b/include/comphelper/accessiblecontexthelper.hxx
@@ -20,12 +20,7 @@
#ifndef INCLUDED_COMPHELPER_ACCESSIBLECONTEXTHELPER_HXX
#define INCLUDED_COMPHELPER_ACCESSIBLECONTEXTHELPER_HXX
-#include <cppuhelper/compbase2.hxx>
-#include <cppuhelper/basemutex.hxx>
-#include <com/sun/star/accessibility/XAccessibleContext2.hpp>
-#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
-#include <comphelper/accessibleeventnotifier.hxx>
-#include <comphelper/comphelperdllapi.h>
+#include <comphelper/accessiblecomponenthelper.hxx>
#include <comphelper/solarmutex.hxx>
@@ -33,130 +28,13 @@ namespace comphelper
{
- //= OAccessibleContextHelper
-
-
- typedef ::cppu::WeakAggComponentImplHelper2 < css::accessibility::XAccessibleContext2,
- css::accessibility::XAccessibleEventBroadcaster
- > OAccessibleContextHelper_Base;
-
- /** helper class for implementing an AccessibleContext
- */
- class COMPHELPER_DLLPUBLIC OAccessibleContextHelper
- :public ::cppu::BaseMutex
- ,public OAccessibleContextHelper_Base
- {
- friend class OContextEntryGuard;
- private:
- css::uno::WeakReference< css::accessibility::XAccessible > m_aCreator; // the XAccessible which created our XAccessibleContext
- AccessibleEventNotifier::TClientId m_nClientId;
-
- protected:
- virtual ~OAccessibleContextHelper( ) override;
-
- OAccessibleContextHelper( );
-
- /** late construction
- @param _rxAccessible
- the Accessible object which created this context.
- <p>If your derived implementation implements the XAccessible (and does not follow the proposed
- separation of XAccessible from XAccessibleContext), you may pass <code>this</code> here.</p>
-
- <p>The object is hold weak, so its life time is not affected.</p>
-
- <p>The object is needed for performance reasons: for <method>getAccessibleIndexInParent</method>,
- all children (which are XAccessible's theirself) of our parent have to be asked. If we know our
- XAccessible, we can compare it with all the children, instead of asking all children for their
- context and comparing this context with ourself.</p>
- */
- void lateInit( const css::uno::Reference< css::accessibility::XAccessible >& _rxAccessible );
-
- /** retrieves the creator previously set with <method>lateInit</method>
- */
- css::uno::Reference< css::accessibility::XAccessible >
- getAccessibleCreator( ) const;
-
- public:
- // XAccessibleEventBroadcaster
- virtual void SAL_CALL addAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
- virtual void SAL_CALL removeAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
-
- // XAccessibleContext - still waiting to be overwritten
- virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override = 0;
- virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override = 0;
- virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override = 0;
- virtual sal_Int16 SAL_CALL getAccessibleRole( ) override = 0;
- virtual OUString SAL_CALL getAccessibleDescription( ) override = 0;
- virtual OUString SAL_CALL getAccessibleName( ) override = 0;
- virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override = 0;
- virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override = 0;
-
- // XAccessibleContext2 - default implementation
- virtual OUString SAL_CALL getAccessibleId( ) override;
-
- // XAccessibleContext - default implementations
- /** default implementation for retrieving the index of this object within the parent
- <p>This basic implementation here returns the index <code>i</code> of the child for which
- <code>&lt;parent&gt;.getAccessibleChild( i )</code> equals our creator.</p>
- */
- virtual sal_Int64 SAL_CALL getAccessibleIndexInParent( ) override;
- /** default implementation for retrieving the locale
- <p>This basic implementation returns the locale of the parent context,
- as retrieved via getAccessibleParent()->getAccessibleContext.</p>
- */
- virtual css::lang::Locale SAL_CALL getLocale( ) override;
-
- protected:
- // OComponentHelper
- virtual void SAL_CALL disposing() override;
-
- protected:
- // helper
- /** notifies all AccessibleEventListeners of a certain event
-
- @precond not to be called with our mutex locked
- @param _nEventId
- the id of the event. See AccessibleEventType
- @param _rOldValue
- the old value to be notified
- @param _rNewValue
- the new value to be notified
- */
- void NotifyAccessibleEvent(
- const sal_Int16 _nEventId,
- const css::uno::Any& _rOldValue,
- const css::uno::Any& _rNewValue
- );
-
- // life time control
- /// checks whether the object is alive (returns <TRUE/> then) or disposed
- bool isAlive() const;
- /// checks for being alive. If the object is already disposed (i.e. not alive), an exception is thrown.
- void ensureAlive() const;
-
- /** ensures that the object is disposed.
- @precond
- to be called from within the destructor of your derived class only!
- */
- void ensureDisposed( );
-
- /** shortcut for retrieving the context of the parent (returned by getAccessibleParent)
- */
- css::uno::Reference< css::accessibility::XAccessibleContext >
- implGetParentContext();
-
- // access to the base class' broadcast helper/mutex
- ::osl::Mutex& GetMutex() { return m_aMutex; }
- };
-
-
//= OContextEntryGuard
- /** helper class for guarding the entry into OAccessibleContextHelper methods.
+ /** helper class for guarding the entry into OCommonAccessibleComponent methods.
<p>The class has two responsibilities:
- <ul><li>it locks the mutex of an OAccessibleContextHelper instance, as long as the guard lives</li>
- <li>it checks if a given OAccessibleContextHelper instance is alive, else an exception is thrown
+ <ul><li>it locks the mutex of an OCommonAccessibleComponent instance, as long as the guard lives</li>
+ <li>it checks if a given OCommonAccessibleComponent instance is alive, else an exception is thrown
our of the constructor of the guard</li>
</ul>
<br/>
@@ -176,11 +54,11 @@ namespace comphelper
the context which shall be guarded
@precond <arg>_pContext</arg> != NULL
*/
- inline OContextEntryGuard( OAccessibleContextHelper* _pContext );
+ inline OContextEntryGuard( OCommonAccessibleComponent* _pContext );
};
- inline OContextEntryGuard::OContextEntryGuard( OAccessibleContextHelper* _pContext )
+ inline OContextEntryGuard::OContextEntryGuard( OCommonAccessibleComponent* _pContext )
: ::osl::ClearableMutexGuard( _pContext->GetMutex() )
{
_pContext->ensureAlive();
@@ -194,16 +72,16 @@ namespace comphelper
,public OContextEntryGuard
{
public:
- inline OExternalLockGuard( OAccessibleContextHelper* _pContext );
+ inline OExternalLockGuard( OCommonAccessibleComponent* _pContext );
};
- inline OExternalLockGuard::OExternalLockGuard( OAccessibleContextHelper* _pContext )
+ inline OExternalLockGuard::OExternalLockGuard( OCommonAccessibleComponent* _pContext )
:osl::Guard<SolarMutex>( SolarMutex::get() )
,OContextEntryGuard( _pContext )
{
// Only lock the external mutex,
- // release the ::osl::Mutex of the OAccessibleContextHelper instance.
+ // release the ::osl::Mutex of the OCommonAccessibleComponent instance.
// If you call into another UNO object with locked ::osl::Mutex,
// this may lead to dead locks.
clear();