winaccessibility/source/UAccCOM/MAccessible.cxx |   12 ++++++++++++
 1 file changed, 12 insertions(+)

New commits:
commit 21b29f25660db973fa1480de77e6a69d76a5de53
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Wed Aug 28 15:14:54 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Thu Aug 29 09:32:39 2024 +0200

    tdf#155447 wina11y: Report accessible ID as "id" obj attribute
    
    Report the accessible ID as an "id" object attribute.
    Firefox also already uses that object attribute.
    
    Pending PR suggesting to add the "id" attribute to the
    official IAccessible2 object attribute specification: [1]
    
    Sample use in NVDA's Python console, with the caret/focus
    in the Spelling dialog's "Not in Dictionary" edit:
    
        >>> focus.parent.IAccessibleObject.attributes
        'id:sentence;'
    
    [1] https://github.com/LinuxA11y/IAccessible2/pull/31
    
    Change-Id: I42250c3f46afbb2ab64c884d8bf5f2bf7d2a5ced
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172538
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx 
b/winaccessibility/source/UAccCOM/MAccessible.cxx
index 44ba7016c6b2..bd0a2d45ac76 100644
--- a/winaccessibility/source/UAccCOM/MAccessible.cxx
+++ b/winaccessibility/source/UAccCOM/MAccessible.cxx
@@ -45,6 +45,7 @@
 #include <systools/win32/oleauto.hxx>
 
 #include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext2.hpp>
 #include <com/sun/star/accessibility/XAccessibleText.hpp>
 #include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
 #include <com/sun/star/accessibility/XAccessibleImage.hpp>
@@ -2668,6 +2669,17 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
CMAccessible::get_attributes(/*[out]*/ BSTR *p
                 xText, IA2AttributeType::ObjectAttributes, 0, nStartOffset, 
nEndOffset);
         }
 
+        // report accessible ID via "id" object attribute
+        // (pending PR suggesting to add that attribute to the IAccessible2 
spec:
+        // https://github.com/LinuxA11y/IAccessible2/pull/31 )
+        Reference<XAccessibleContext2> xContext2(pRContext, UNO_QUERY);
+        if (xContext2.is())
+        {
+            const OUString sId = xContext2->getAccessibleId();
+            if (!sId.isEmpty())
+                sAttributes += "id:" + sId + ";";
+        }
+
         if (*pAttr)
             SysFreeString(*pAttr);
         *pAttr = sal::systools::BStr::newBSTR(sAttributes);

Reply via email to