diff options
-rw-r--r-- | vcl/unx/gtk/a11y/atkwrapper.hxx | 8 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 25 |
2 files changed, 31 insertions, 2 deletions
diff --git a/vcl/unx/gtk/a11y/atkwrapper.hxx b/vcl/unx/gtk/a11y/atkwrapper.hxx index c45f0f9c839b..381f3c074fdf 100644 --- a/vcl/unx/gtk/a11y/atkwrapper.hxx +++ b/vcl/unx/gtk/a11y/atkwrapper.hxx @@ -21,6 +21,10 @@ #define INCLUDED_VCL_UNX_GTK_A11Y_ATKWRAPPER_HXX #include <atk/atk.h> +#include <gtk/gtk.h> +#if GTK_CHECK_VERSION(3,0,0) +#include <gtk/gtk-a11y.h> +#endif #include <com/sun/star/accessibility/XAccessible.hpp> extern "C" { @@ -70,7 +74,11 @@ struct AtkObjectWrapper struct AtkObjectWrapperClass { +#if GTK_CHECK_VERSION(3,0,0) + GtkWidgetAccessibleClass aParentClass; +#else AtkObjectClass aParentClass; +#endif }; GType atk_object_wrapper_get_type() G_GNUC_CONST; diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 577d5e1d2744..54444d801c5c 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -3653,6 +3653,14 @@ static MouseEventModifiers ImplGetMouseMoveMode(sal_uInt16 nCode) return nMode; } +namespace +{ + +AtkObject* (*default_drawing_area_get_accessible)(GtkWidget *widget); + +} + + class GtkInstanceDrawingArea : public GtkInstanceWidget, public virtual weld::DrawingArea { private: @@ -3928,6 +3936,21 @@ public: return uno::Reference<css::accessibility::XAccessibleRelationSet>(); } + virtual void set_accessible_name(const OUString& rName) override + { + AtkObject* pAtkObject = default_drawing_area_get_accessible(m_pWidget); + if (!pAtkObject) + return; + atk_object_set_name(pAtkObject, OUStringToOString(rName, RTL_TEXTENCODING_UTF8).getStr()); + } + + virtual OUString get_accessible_name() const override + { + AtkObject* pAtkObject = default_drawing_area_get_accessible(m_pWidget); + const char* pStr = pAtkObject ? atk_object_get_name(pAtkObject) : nullptr; + return OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8); + } + virtual ~GtkInstanceDrawingArea() override { g_object_steal_data(G_OBJECT(m_pDrawingArea), "g-lo-GtkInstanceDrawingArea"); @@ -4411,8 +4434,6 @@ namespace namespace { -AtkObject* (*default_drawing_area_get_accessible)(GtkWidget *widget); - AtkObject* drawing_area_get_accessibity(GtkWidget *pWidget) { AtkObject* pDefaultAccessible = default_drawing_area_get_accessible(pWidget); |