diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-06-19 18:49:59 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-30 20:52:41 +0200 |
commit | d71f9d8c05d70053f2ce46dbb2203309addc0f93 (patch) | |
tree | 6edffca89fc49f0cc0bcfac21998c450fc1f235c /src/widgets/accessible/qaccessiblewidget.cpp | |
parent | d448725403fea283a586aae5a23860c866597752 (diff) |
Accessibility: Top level widgets should only be in the hierarchy once
On Linux for example Orca gets confused when showing a dialog that is a
child of another widget since it would show up twice in the hierarchy.
Task-number: QTBUG-39444
Change-Id: I84773ecc3d6774a652dbeb29ad201779f5b3191c
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src/widgets/accessible/qaccessiblewidget.cpp')
-rw-r--r-- | src/widgets/accessible/qaccessiblewidget.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp index 73425b9acd..48f99f4d35 100644 --- a/src/widgets/accessible/qaccessiblewidget.cpp +++ b/src/widgets/accessible/qaccessiblewidget.cpp @@ -240,10 +240,10 @@ QWidget *QAccessibleWidget::widget() const */ QObject *QAccessibleWidget::parentObject() const { - QObject *parent = object()->parent(); - if (!parent) - parent = qApp; - return parent; + QWidget *w = widget(); + if (!w || w->isWindow() || !w->parentWidget()) + return qApp; + return w->parent(); } /*! \reimp */ @@ -353,11 +353,7 @@ QAccessibleWidget::relations(QAccessible::Relation match /*= QAccessible::AllRel /*! \reimp */ QAccessibleInterface *QAccessibleWidget::parent() const { - Q_ASSERT(widget()); - QObject *parentWidget= widget()->parentWidget(); - if (!parentWidget) - parentWidget = qApp; - return QAccessible::queryAccessibleInterface(parentWidget); + return QAccessible::queryAccessibleInterface(parentObject()); } /*! \reimp */ |