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);