summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accessibility/inc/extended/accessiblelistbox.hxx8
-rw-r--r--accessibility/source/extended/accessiblelistbox.cxx6
-rw-r--r--include/toolkit/awt/vclxaccessiblecomponent.hxx10
-rw-r--r--toolkit/source/awt/vclxaccessiblecomponent.cxx14
-rw-r--r--winaccessibility/source/service/AccTopWindowListener.cxx4
5 files changed, 31 insertions, 11 deletions
diff --git a/accessibility/inc/extended/accessiblelistbox.hxx b/accessibility/inc/extended/accessiblelistbox.hxx
index 339e32f3b0b7..7138820123ad 100644
--- a/accessibility/inc/extended/accessiblelistbox.hxx
+++ b/accessibility/inc/extended/accessiblelistbox.hxx
@@ -35,12 +35,14 @@ namespace accessibility
{
class AccessibleListBoxEntry;
+ using AccessibleListBox_Base = cppu::ImplHelper2<
+ css::accessibility::XAccessible,
+ css::accessibility::XAccessibleSelection>;
+
/** the class OAccessibleListBoxEntry represents the base class for an accessible object of a listbox entry
*/
class AccessibleListBox :
- public cppu::ImplHelper2<
- css::accessibility::XAccessible,
- css::accessibility::XAccessibleSelection>,
+ public AccessibleListBox_Base,
public VCLXAccessibleComponent
{
diff --git a/accessibility/source/extended/accessiblelistbox.cxx b/accessibility/source/extended/accessiblelistbox.cxx
index df4a9a759c0f..bb1131d0ab4f 100644
--- a/accessibility/source/extended/accessiblelistbox.cxx
+++ b/accessibility/source/extended/accessiblelistbox.cxx
@@ -58,8 +58,10 @@ namespace accessibility
dispose();
}
}
- IMPLEMENT_FORWARD_XINTERFACE2(AccessibleListBox, VCLXAccessibleComponent, ImplHelper2)
- IMPLEMENT_FORWARD_XTYPEPROVIDER2(AccessibleListBox, VCLXAccessibleComponent, ImplHelper2)
+ IMPLEMENT_FORWARD_XINTERFACE2(
+ AccessibleListBox, VCLXAccessibleComponent, AccessibleListBox_Base);
+ IMPLEMENT_FORWARD_XTYPEPROVIDER2(
+ AccessibleListBox, VCLXAccessibleComponent, AccessibleListBox_Base);
void AccessibleListBox::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
{
diff --git a/include/toolkit/awt/vclxaccessiblecomponent.hxx b/include/toolkit/awt/vclxaccessiblecomponent.hxx
index 7c299edf6d65..dd25c76c2c2d 100644
--- a/include/toolkit/awt/vclxaccessiblecomponent.hxx
+++ b/include/toolkit/awt/vclxaccessiblecomponent.hxx
@@ -22,7 +22,8 @@
#include <toolkit/dllapi.h>
#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <cppuhelper/implbase2.hxx>
#include <comphelper/accimplaccess.hxx>
#include <comphelper/accessiblecomponenthelper.hxx>
@@ -42,8 +43,8 @@ class AccessibleRelationSetHelper;
-typedef ::cppu::ImplHelper1<
- css::lang::XServiceInfo > VCLXAccessibleComponent_BASE;
+typedef ::cppu::ImplHelper2<
+ css::lang::XServiceInfo, css::lang::XUnoTunnel > VCLXAccessibleComponent_BASE;
class TOOLKIT_DLLPUBLIC VCLXAccessibleComponent
:public comphelper::OAccessibleExtendedComponentHelper
@@ -89,6 +90,9 @@ public:
virtual sal_Bool SAL_CALL supportsService( const OUString& rServiceName ) override;
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
+ sal_Int64 SAL_CALL getSomething(css::uno::Sequence<sal_Int8> const & aIdentifier) override;
+ static css::uno::Sequence<sal_Int8> const & getUnoTunnelId();
+
// css::accessibility::XAccessibleContext
sal_Int64 SAL_CALL getAccessibleChildCount( ) override;
css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override;
diff --git a/toolkit/source/awt/vclxaccessiblecomponent.cxx b/toolkit/source/awt/vclxaccessiblecomponent.cxx
index 7fbb1ea1ccd6..6d0798bda590 100644
--- a/toolkit/source/awt/vclxaccessiblecomponent.cxx
+++ b/toolkit/source/awt/vclxaccessiblecomponent.cxx
@@ -22,6 +22,7 @@
#include <com/sun/star/accessibility/AccessibleEventId.hpp>
#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <comphelper/servicehelper.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <i18nlangtag/languagetag.hxx>
#include <toolkit/awt/vclxaccessiblecomponent.hxx>
@@ -105,6 +106,15 @@ uno::Sequence< OUString > VCLXAccessibleComponent::getSupportedServiceNames()
return aNames;
}
+sal_Int64 VCLXAccessibleComponent::getSomething(css::uno::Sequence<sal_Int8> const & aIdentifier) {
+ return comphelper::getSomethingImpl(aIdentifier, this);
+}
+
+css::uno::Sequence<sal_Int8> const & VCLXAccessibleComponent::getUnoTunnelId() {
+ static comphelper::UnoIdInit const id;
+ return id.getSeq();
+}
+
IMPL_LINK( VCLXAccessibleComponent, WindowEventListener, VclWindowEvent&, rEvent, void )
{
/* Ignore VclEventId::WindowEndPopupMode, because the UNO accessibility wrapper
@@ -169,7 +179,7 @@ void VCLXAccessibleComponent::ProcessWindowChildEvent( const VclWindowEvent& rVc
uno::Reference<XAccessibleContext> xChildContext = xAcc->getAccessibleContext();
if (xChildContext.is())
{
- VCLXAccessibleComponent* pChildComponent = dynamic_cast<VCLXAccessibleComponent*>(xChildContext.get());
+ VCLXAccessibleComponent* pChildComponent = comphelper::getFromUnoTunnel<VCLXAccessibleComponent>(xChildContext);
if (pChildComponent)
{
css::uno::Any aNewStateValue;
@@ -190,7 +200,7 @@ void VCLXAccessibleComponent::ProcessWindowChildEvent( const VclWindowEvent& rVc
uno::Reference<XAccessibleContext> xChildContext = xAcc->getAccessibleContext();
if (xChildContext.is())
{
- VCLXAccessibleComponent* pChildComponent = dynamic_cast<VCLXAccessibleComponent*>(xChildContext.get());
+ VCLXAccessibleComponent* pChildComponent = comphelper::getFromUnoTunnel<VCLXAccessibleComponent>(xChildContext);
if (pChildComponent)
{
css::uno::Any aOldStateValue;
diff --git a/winaccessibility/source/service/AccTopWindowListener.cxx b/winaccessibility/source/service/AccTopWindowListener.cxx
index a6b935d55798..70c2429f71e2 100644
--- a/winaccessibility/source/service/AccTopWindowListener.cxx
+++ b/winaccessibility/source/service/AccTopWindowListener.cxx
@@ -18,6 +18,7 @@
*/
+#include <comphelper/servicehelper.hxx>
#include <sal/log.hxx>
#include <vcl/window.hxx>
#include <toolkit/awt/vclxaccessiblecomponent.hxx>
@@ -44,7 +45,8 @@ void AccTopWindowListener::HandleWindowOpened( css::accessibility::XAccessible*
VclPtr<vcl::Window> window;
if (auto pvclwindow = dynamic_cast<VCLXWindow*>(pAccessible))
window = pvclwindow->GetWindow();
- else if (auto pvclxcomponent = dynamic_cast<VCLXAccessibleComponent*>(pAccessible))
+ else if (auto pvclxcomponent
+ = comphelper::getFromUnoTunnel<VCLXAccessibleComponent>(pAccessible))
window = pvclxcomponent->GetWindow();
assert(window);
// The SalFrame of window may be destructed at this time