summaryrefslogtreecommitdiffstats
path: root/src/widgets/accessible/qaccessiblewidget.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-06-19 18:49:59 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-30 20:52:41 +0200
commitd71f9d8c05d70053f2ce46dbb2203309addc0f93 (patch)
tree6edffca89fc49f0cc0bcfac21998c450fc1f235c /src/widgets/accessible/qaccessiblewidget.cpp
parentd448725403fea283a586aae5a23860c866597752 (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.cpp14
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 */