summaryrefslogtreecommitdiffstats
path: root/src/widgets/accessible
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-03-18 15:59:17 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-23 14:42:45 +0100
commit5147b1d4108e36f79aaf4aca539d5cf11726995e (patch)
treea1213f3dc5967c300824e75f06ec48a7e4b4a132 /src/widgets/accessible
parenta3304489e870555f5d01d02c0252103db2288898 (diff)
Accessibility: Fix crash when updating in dtor
This happens for example when running several tests. Widgets in destructor should be treated as invalid since their window pointer and other properties are no longer valid. When deleting a window containing only a table view there would be a table model reset update comming from the window being destroyed. Change-Id: Ia387c814333ce373fe132b189fc180787e36cdd5 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src/widgets/accessible')
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp9
-rw-r--r--src/widgets/accessible/qaccessiblewidget_p.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 2b8e1a7036..dcbf276356 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -55,6 +55,7 @@
#include <QRubberBand>
#include <QFocusFrame>
#include <QMenu>
+#include <QtWidgets/private/qwidget_p.h>
QT_BEGIN_NAMESPACE
@@ -152,6 +153,7 @@ QString Q_WIDGETS_EXPORT qt_accHotKey(const QString &text)
return QString();
}
+// ### inherit QAccessibleObjectPrivate
class QAccessibleWidgetPrivate
{
public:
@@ -202,6 +204,13 @@ QAccessibleWidget::QAccessibleWidget(QWidget *w, QAccessible::Role role, const Q
d->name = name;
}
+bool QAccessibleWidget::isValid() const
+{
+ if (!object() || static_cast<QWidget *>(object())->d_func()->data.in_destructor)
+ return false;
+ return QAccessibleObject::isValid();
+}
+
/*! \reimp */
QWindow *QAccessibleWidget::window() const
{
diff --git a/src/widgets/accessible/qaccessiblewidget_p.h b/src/widgets/accessible/qaccessiblewidget_p.h
index 803dc71409..cb1ce37734 100644
--- a/src/widgets/accessible/qaccessiblewidget_p.h
+++ b/src/widgets/accessible/qaccessiblewidget_p.h
@@ -56,6 +56,7 @@ class Q_WIDGETS_EXPORT QAccessibleWidget : public QAccessibleObject, public QAcc
{
public:
explicit QAccessibleWidget(QWidget *o, QAccessible::Role r = QAccessible::Client, const QString& name = QString());
+ bool isValid() const;
QWindow *window() const;
int childCount() const;