[Libreoffice-commits] core.git: vcl/unx

Caolán McNamara caolanm at redhat.com
Wed May 30 20:29:55 UTC 2018


 vcl/unx/gtk/a11y/atkwrapper.hxx |    8 ++++++++
 vcl/unx/gtk3/gtk3gtkinst.cxx    |   25 +++++++++++++++++++++++--
 2 files changed, 31 insertions(+), 2 deletions(-)

New commits:
commit fd52a23e4428bd9447643fd9c9c58905a4e7250b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed May 30 16:26:40 2018 +0100

    tdf#117859 crash in Tab Color a11y
    
    Change-Id: I935f0b1a28b483fad70caf7af96742dee74916ad
    Reviewed-on: https://gerrit.libreoffice.org/55087
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

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


More information about the Libreoffice-commits mailing list