include/vcl/weld.hxx          |    2 ++
 vcl/inc/salvtables.hxx        |    4 ++++
 vcl/source/app/salvtables.cxx |   10 ++++++++++
 vcl/unx/gtk3/gtkinst.cxx      |   26 ++++++++++++++++++++++++++
 4 files changed, 42 insertions(+)

New commits:
commit f6aa099d34726d719bd8dd9ac7452c051fcc0d8f
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Fri Jun 21 08:44:58 2024 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Jun 21 15:49:49 2024 +0200

    tdf#161648 vcl a11y: Add weld::Toolbar::set_item_accessible_name
    
    Add API to set the accessible name of toolbar items
    and implement it for the VCL, gtk3 and gtk4 implementations.
    
    This will be used in an upcoming commit to set a11y names
    for the border items in Calc's sidebar.
    
    Change-Id: I958390d8736da8f1281f91586cacbefb5975e229
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169320
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169330

diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index c3a688d84be0..427c0f869c05 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -2538,6 +2538,8 @@ public:
                                 const 
css::uno::Reference<css::graphic::XGraphic>& rIcon)
         = 0;
     virtual void set_item_tooltip_text(int nIndex, const OUString& rTip) = 0;
+    virtual void set_item_accessible_name(int nIndex, const OUString& rName) = 
0;
+    virtual void set_item_accessible_name(const OUString& rIdent, const 
OUString& rName) = 0;
 
     virtual vcl::ImageType get_icon_size() const = 0;
     virtual void set_icon_size(vcl::ImageType eType) = 0;
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 984baf4e61b8..47c692793001 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -1426,6 +1426,10 @@ public:
 
     virtual void set_item_tooltip_text(const OUString& rIdent, const OUString& 
rTip) override;
 
+    virtual void set_item_accessible_name(int nIndex, const OUString& rName) 
override;
+
+    virtual void set_item_accessible_name(const OUString& rIdent, const 
OUString& rName) override;
+
     virtual OUString get_item_tooltip_text(const OUString& rIdent) const 
override;
 
     virtual vcl::ImageType get_icon_size() const override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index e086def8434c..176944cca54c 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1217,6 +1217,16 @@ void SalInstanceToolbar::set_item_tooltip_text(const 
OUString& rIdent, const OUS
     m_xToolBox->SetQuickHelpText(m_xToolBox->GetItemId(rIdent), rTip);
 }
 
+void SalInstanceToolbar::set_item_accessible_name(int nIndex, const OUString& 
rName)
+{
+    m_xToolBox->SetAccessibleName(m_xToolBox->GetItemId(nIndex), rName);
+}
+
+void SalInstanceToolbar::set_item_accessible_name(const OUString& rIdent, 
const OUString& rName)
+{
+    m_xToolBox->SetAccessibleName(m_xToolBox->GetItemId(rIdent), rName);
+}
+
 OUString SalInstanceToolbar::get_item_tooltip_text(const OUString& rIdent) 
const
 {
     return m_xToolBox->GetQuickHelpText(m_xToolBox->GetItemId(rIdent));
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index d354fd4b7bbd..d2453e230d6e 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -12447,6 +12447,32 @@ public:
         gtk_widget_set_tooltip_text(pItem, OUStringToOString(rTip, 
RTL_TEXTENCODING_UTF8).getStr());
     }
 
+    virtual void set_item_accessible_name(int nIndex, const OUString& rName) 
override
+    {
+        GtkWidget* pItem = toolbar_get_nth_item(nIndex);
+#if !GTK_CHECK_VERSION(4, 0, 0)
+        AtkObject* pAccessible = gtk_widget_get_accessible(pItem);
+        assert(pAccessible);
+        atk_object_set_name(pAccessible, OUStringToOString(rName, 
RTL_TEXTENCODING_UTF8).getStr());
+#else
+        gtk_accessible_update_property(GTK_ACCESSIBLE(pItem), 
GTK_ACCESSIBLE_PROPERTY_LABEL,
+                                       OUStringToOString(rName, 
RTL_TEXTENCODING_UTF8).getStr());
+#endif
+    }
+
+    virtual void set_item_accessible_name(const OUString& rIdent, const 
OUString& rName) override
+    {
+        GtkWidget* pItem = GTK_WIDGET(m_aMap[rIdent]);
+#if !GTK_CHECK_VERSION(4, 0, 0)
+        AtkObject* pAccessible = gtk_widget_get_accessible(pItem);
+        assert(pAccessible);
+        atk_object_set_name(pAccessible, OUStringToOString(rName, 
RTL_TEXTENCODING_UTF8).getStr());
+#else
+        gtk_accessible_update_property(GTK_ACCESSIBLE(pItem), 
GTK_ACCESSIBLE_PROPERTY_LABEL,
+                                       OUStringToOString(rName, 
RTL_TEXTENCODING_UTF8).getStr());
+#endif
+    }
+
     virtual OUString get_item_tooltip_text(const OUString& rIdent) const 
override
     {
         GtkWidget* pItem = GTK_WIDGET(m_aMap.find(rIdent)->second);

Reply via email to