summaryrefslogtreecommitdiff
path: root/vcl/unx
diff options
context:
space:
mode:
authorSamuel Thibault <sthibault@hypra.fr>2019-05-02 17:24:30 +0200
committerStephan Bergmann <sbergman@redhat.com>2019-05-09 13:39:33 +0200
commitb4009daccd11e416865efd5fd3c205c46691bb12 (patch)
treeae169db727876878617f003999ca9bbf2b7b753a /vcl/unx
parent639aba04ce74c3055b3b1c7ea4cd46a06da1f8ed (diff)
tdf#124400 a11y: add accessible ID
Such ID is not meant to be presented to the user, but to be an ID which is stable over application development. Typically, this is the gtkbuilder ID. Such an ID can then be used to identify a given well-known accessible object independently from the current locale, user-visible labelling, or dialog structure. This can then be used for tailored screen reading (e.g. automatically announcing the content of a well-known object), or for automatic regression testing (to check the behavior of well-known objects). Uniqueness within the window is thus desirable when returning a non-empty string. This adds XAccessibleXContext2 to augment XAccessibleXContext with getAccessibleId(). The VCL implementation just takes Window::get_id(), i.e. the gtkbuilder id, which is enough for most use cases for now. atk_object_wrapper_new then passes it to atk_object_set_accessible_id() for AT-SPI technologies to pick it up. Change-Id: Iea0ad08d036e539dbcfec1a9be026c8da8d17357 Reviewed-on: https://gerrit.libreoffice.org/71743 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Jenkins
Diffstat (limited to 'vcl/unx')
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/vcl/unx/gtk/a11y/atkwrapper.cxx b/vcl/unx/gtk/a11y/atkwrapper.cxx
index a6382c8b2ef6..63b4cfa04430 100644
--- a/vcl/unx/gtk/a11y/atkwrapper.cxx
+++ b/vcl/unx/gtk/a11y/atkwrapper.cxx
@@ -31,6 +31,7 @@
#include <com/sun/star/accessibility/XAccessibleValue.hpp>
#include <com/sun/star/accessibility/XAccessibleAction.hpp>
#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext2.hpp>
#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
#include <com/sun/star/accessibility/XAccessibleMultiLineText.hpp>
@@ -880,6 +881,17 @@ atk_object_wrapper_new( const css::uno::Reference< css::accessibility::XAccessib
OSL_ASSERT( false );
}
+#if ATK_CHECK_VERSION(2,33,1)
+ {
+ css::uno::Reference<css::accessibility::XAccessibleContext2> xContext2(xContext, css::uno::UNO_QUERY);
+ if( xContext2.is() )
+ {
+ OString aId = OUStringToOString( xContext2->getAccessibleId(), RTL_TEXTENCODING_UTF8);
+ atk_object_set_accessible_id(atk_obj, aId.getStr());
+ }
+ }
+#endif
+
return ATK_OBJECT( pWrap );
}
catch (const uno::Exception &)