diff options
-rw-r--r-- | vcl/qt5/Qt5AccessibleWidget.cxx | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/vcl/qt5/Qt5AccessibleWidget.cxx b/vcl/qt5/Qt5AccessibleWidget.cxx index 9773b2875050..c2c1fdc2b7f8 100644 --- a/vcl/qt5/Qt5AccessibleWidget.cxx +++ b/vcl/qt5/Qt5AccessibleWidget.cxx @@ -636,7 +636,22 @@ void* Qt5AccessibleWidget::interface_cast(QAccessible::InterfaceType t) bool Qt5AccessibleWidget::isValid() const { - return m_xAccessible.is() && m_xAccessible->getAccessibleContext().is(); + if (m_xAccessible.is()) + { + try + { + // getAccessibleContext throws RuntimeException if context is no longer alive + Reference<XAccessibleContext> xAc = m_xAccessible->getAccessibleContext(); + return xAc.is(); + } + // so let's catch it here, cuz otherwise soffice falls flat on its face + // with FatalError and nothing else + catch (css::uno::RuntimeException /*ex*/) + { + return false; + } + } + return false; } QObject* Qt5AccessibleWidget::object() const { return nullptr; } |