tdf#159089 dispose custom accessible here and unset for `m_xDrawingArea`
rather than waiting for `m_xDrawingArea` to get disposed, to prevent
unsafe use of the now potentially non-functional accessible until it
gets disposed with the VclDrawingArea
Change-Id: I5b8720ac4d5ed41cb1775b0142b17d198e9f036d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161903
Tested-by: Jenkins
Reviewed-by: Patrick Luby <plubius@libreoffice.org>
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index bf76517..7482a08 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -6340,6 +6340,19 @@ SalInstanceDrawingArea::~SalInstanceDrawingArea()
m_xDrawingArea->SetResizeHdl(Link<const Size&, void>());
m_xDrawingArea->SetPaintHdl(
Link<std::pair<vcl::RenderContext&, const tools::Rectangle&>, void>());
// tdf#159089 dispose custom accessible here and unset for `m_xDrawingArea`
// rather than waiting for `m_xDrawingArea` to get disposed, to prevent
// unsafe use of the now potentially non-functional accessible until it
// gets disposed with the VclDrawingArea
css::uno::Reference<css::accessibility::XAccessible> xAccessible
= m_xDrawingArea->GetAccessible();
css::uno::Reference<css::lang::XComponent> xComp(xAccessible, css::uno::UNO_QUERY);
if (xComp.is())
{
xComp->dispose();
m_xDrawingArea->SetAccessible(nullptr);
}
}
OutputDevice& SalInstanceDrawingArea::get_ref_device() { return *m_xDrawingArea->GetOutDev(); }