parent
0391b06f3b
commit
783a050a00
@ -0,0 +1,43 @@
|
||||
From 2beb3922391ae1a6f1d26128d82c0e34cb963af3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Tue, 23 Mar 2021 14:55:09 +0000
|
||||
Subject: [PATCH] Related: tdf#141197 critical a11y warning
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
** (soffice:19098): CRITICAL **: 13:44:40.365:
|
||||
AtkObject* atk_object_wrapper_ref(const com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible>&, bool):
|
||||
assertion 'bool(rxAccessible)' failed
|
||||
|
||||
probably since...
|
||||
|
||||
commit cbc18cc904c652a936c4b68fba4d975bd89b5abd
|
||||
Date: Mon Nov 23 21:03:28 2020 +0100
|
||||
|
||||
tdf#138425 vcl/gtk activate main menu in UpdateFull
|
||||
|
||||
Change-Id: Ieb181e02bb0d2a907aec8534349ec2a80fd9c7e3
|
||||
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113000
|
||||
Tested-by: Jenkins
|
||||
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
||||
---
|
||||
vcl/source/window/menu.cxx | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
|
||||
index 4fb964f2f008..233f531cfcaf 100644
|
||||
--- a/vcl/source/window/menu.cxx
|
||||
+++ b/vcl/source/window/menu.cxx
|
||||
@@ -1303,7 +1303,7 @@ css::uno::Reference<css::accessibility::XAccessible> Menu::GetAccessible()
|
||||
// Since PopupMenu are sometimes shared by different instances of MenuBar, the mxAccessible member gets
|
||||
// overwritten and may contain a disposed object when the initial menubar gets set again. So use the
|
||||
// mxAccessible member only for sub menus.
|
||||
- if ( pStartedFrom )
|
||||
+ if (pStartedFrom && pStartedFrom != this)
|
||||
{
|
||||
for ( sal_uInt16 i = 0, nCount = pStartedFrom->GetItemCount(); i < nCount; ++i )
|
||||
{
|
||||
--
|
||||
2.30.2
|
||||
|
@ -0,0 +1,120 @@
|
||||
From 26ff4db374438a230f1670ab12d88f7f54075127 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Wed, 24 Mar 2021 11:33:42 +0000
|
||||
Subject: [PATCH] tdf#141197 if we have a sysobj child then include that in the
|
||||
atk hierarchy
|
||||
|
||||
this also should make the case of an embedded video visible in the atk
|
||||
hierarchy as well as the target of the native gtk widgets in a vcl
|
||||
window container in the startcenter
|
||||
|
||||
Change-Id: Ia91439cbccbffbb0badbfb466f7ab6d1ccbfe3ae
|
||||
---
|
||||
vcl/Library_vclplug_gtk3.mk | 1 +
|
||||
vcl/Library_vclplug_gtk3_kde5.mk | 1 +
|
||||
vcl/unx/gtk3/a11y/atkwrapper.hxx | 1 +
|
||||
vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx | 28 ++++++++++++++++++++++++++++
|
||||
4 files changed, 31 insertions(+)
|
||||
|
||||
diff --git a/vcl/Library_vclplug_gtk3.mk b/vcl/Library_vclplug_gtk3.mk
|
||||
index 9e67d5efc265..317152b59fe9 100644
|
||||
--- a/vcl/Library_vclplug_gtk3.mk
|
||||
+++ b/vcl/Library_vclplug_gtk3.mk
|
||||
@@ -36,6 +36,7 @@ $(eval $(call gb_Library_set_include,vclplug_gtk3,\
|
||||
|
||||
$(eval $(call gb_Library_add_defs,vclplug_gtk3,\
|
||||
-DVCLPLUG_GTK_IMPLEMENTATION \
|
||||
+ -DVCL_INTERNALS \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_custom_headers,vclplug_gtk3,\
|
||||
diff --git a/vcl/Library_vclplug_gtk3_kde5.mk b/vcl/Library_vclplug_gtk3_kde5.mk
|
||||
index 51dafda097be..602be3d13b45 100644
|
||||
--- a/vcl/Library_vclplug_gtk3_kde5.mk
|
||||
+++ b/vcl/Library_vclplug_gtk3_kde5.mk
|
||||
@@ -41,6 +41,7 @@ $(eval $(call gb_Library_add_cxxflags,vclplug_gtk3_kde5,\
|
||||
|
||||
$(eval $(call gb_Library_add_defs,vclplug_gtk3_kde5,\
|
||||
-DVCLPLUG_GTK_IMPLEMENTATION -DVCLPLUG_GTK3_KDE5_IMPLEMENTATION \
|
||||
+ -DVCL_INTERNALS \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_custom_headers,vclplug_gtk3_kde5,\
|
||||
diff --git a/vcl/unx/gtk3/a11y/atkwrapper.hxx b/vcl/unx/gtk3/a11y/atkwrapper.hxx
|
||||
index d9c651a2eae8..0fcbce6369fd 100644
|
||||
--- a/vcl/unx/gtk3/a11y/atkwrapper.hxx
|
||||
+++ b/vcl/unx/gtk3/a11y/atkwrapper.hxx
|
||||
@@ -46,6 +46,7 @@ struct AtkObjectWrapper
|
||||
{
|
||||
AtkObject aParent;
|
||||
AtkObject* mpOrig; //if we're a GtkDrawingArea acting as a custom LibreOffice widget, this is the toolkit default impl
|
||||
+ AtkObject* mpSysObjChild; //if we're a container for a sysobj, then this is the sysobj native gtk AtkObject
|
||||
|
||||
css::uno::Reference<css::accessibility::XAccessible> mpAccessible;
|
||||
css::uno::Reference<css::accessibility::XAccessibleContext> mpContext;
|
||||
diff --git a/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx b/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx
|
||||
index 2442e6ab665d..56bc8717d0fb 100644
|
||||
--- a/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx
|
||||
+++ b/vcl/unx/gtk3/a11y/gtk3atkwrapper.cxx
|
||||
@@ -40,9 +40,13 @@
|
||||
#include <com/sun/star/accessibility/XAccessibleImage.hpp>
|
||||
#include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
|
||||
#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
|
||||
+#include <com/sun/star/awt/XWindow.hpp>
|
||||
|
||||
#include <rtl/strbuf.hxx>
|
||||
#include <osl/diagnose.h>
|
||||
+#include <vcl/syschild.hxx>
|
||||
+#include <vcl/sysdata.hxx>
|
||||
+#include <vcl/toolkit/unowrap.hxx>
|
||||
|
||||
#include "atkwrapper.hxx"
|
||||
#include "atkregistry.hxx"
|
||||
@@ -406,6 +410,10 @@ static gint
|
||||
wrapper_get_n_children( AtkObject *atk_obj )
|
||||
{
|
||||
AtkObjectWrapper *obj = ATK_OBJECT_WRAPPER (atk_obj);
|
||||
+
|
||||
+ if (obj->mpSysObjChild)
|
||||
+ return 1;
|
||||
+
|
||||
gint n = 0;
|
||||
|
||||
if( obj->mpContext.is() )
|
||||
@@ -428,6 +436,13 @@ wrapper_ref_child( AtkObject *atk_obj,
|
||||
gint i )
|
||||
{
|
||||
AtkObjectWrapper *obj = ATK_OBJECT_WRAPPER (atk_obj);
|
||||
+
|
||||
+ if (obj->mpSysObjChild)
|
||||
+ {
|
||||
+ g_object_ref(obj->mpSysObjChild);
|
||||
+ return obj->mpSysObjChild;
|
||||
+ }
|
||||
+
|
||||
AtkObject* child = nullptr;
|
||||
|
||||
// see comments above atk_object_wrapper_remove_child
|
||||
@@ -874,6 +889,19 @@ atk_object_wrapper_new( const css::uno::Reference< css::accessibility::XAccessib
|
||||
}
|
||||
}
|
||||
|
||||
+ // tdf#141197 if we have a sysobj child then include that in the hierarchy
|
||||
+ if (UnoWrapperBase* pWrapper = UnoWrapperBase::GetUnoWrapper())
|
||||
+ {
|
||||
+ css::uno::Reference<css::awt::XWindow> xAWTWindow(rxAccessible, css::uno::UNO_QUERY);
|
||||
+ VclPtr<vcl::Window> xWindow = pWrapper->GetWindow(xAWTWindow);
|
||||
+ if (xWindow && xWindow->GetType() == WindowType::SYSTEMCHILDWINDOW)
|
||||
+ {
|
||||
+ const SystemEnvData* pEnvData = static_cast<SystemChildWindow*>(xWindow.get())->GetSystemData();
|
||||
+ if (GtkWidget *pSysObj = pEnvData ? static_cast<GtkWidget*>(pEnvData->pWidget) : nullptr)
|
||||
+ pWrap->mpSysObjChild = gtk_widget_get_accessible(pSysObj);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return ATK_OBJECT( pWrap );
|
||||
}
|
||||
catch (const uno::Exception &)
|
||||
--
|
||||
2.30.2
|
||||
|
Loading…
Reference in new issue