Kaydet (Commit) fd52a23e authored tarafından Caolán McNamara's avatar Caolán McNamara

tdf#117859 crash in Tab Color a11y

Change-Id: I935f0b1a28b483fad70caf7af96742dee74916ad
Reviewed-on: https://gerrit.libreoffice.org/55087Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 0258bcde
......@@ -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;
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment