summaryrefslogtreecommitdiffstats
path: root/src/widgets/accessible
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/accessible')
-rw-r--r--src/widgets/accessible/qaccessiblemenu.cpp14
-rw-r--r--src/widgets/accessible/qaccessiblemenu_p.h2
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp10
3 files changed, 24 insertions, 2 deletions
diff --git a/src/widgets/accessible/qaccessiblemenu.cpp b/src/widgets/accessible/qaccessiblemenu.cpp
index 5b10c6d6c6..4a684e01f9 100644
--- a/src/widgets/accessible/qaccessiblemenu.cpp
+++ b/src/widgets/accessible/qaccessiblemenu.cpp
@@ -231,6 +231,20 @@ QObject *QAccessibleMenuItem::object() const
return m_action;
}
+/*! \reimp */
+QWindow *QAccessibleMenuItem::window() const
+{
+ QWindow *result = Q_NULLPTR;
+ if (!m_owner.isNull()) {
+ result = m_owner->windowHandle();
+ if (!result) {
+ if (const QWidget *nativeParent = m_owner->nativeParentWidget())
+ result = nativeParent->windowHandle();
+ }
+ }
+ return result;
+}
+
QRect QAccessibleMenuItem::rect() const
{
QRect rect;
diff --git a/src/widgets/accessible/qaccessiblemenu_p.h b/src/widgets/accessible/qaccessiblemenu_p.h
index e9dc851ab3..5a5a4a3222 100644
--- a/src/widgets/accessible/qaccessiblemenu_p.h
+++ b/src/widgets/accessible/qaccessiblemenu_p.h
@@ -114,6 +114,8 @@ public:
QAccessibleInterface *parent() const Q_DECL_OVERRIDE;
QAccessibleInterface *child(int index) const Q_DECL_OVERRIDE;
QObject * object() const Q_DECL_OVERRIDE;
+ QWindow *window() const Q_DECL_OVERRIDE;
+
QRect rect() const Q_DECL_OVERRIDE;
QAccessible::Role role() const Q_DECL_OVERRIDE;
void setText(QAccessible::Text t, const QString & text) Q_DECL_OVERRIDE;
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index 901fd7e201..5096c1ff37 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -210,8 +210,14 @@ bool QAccessibleWidget::isValid() const
/*! \reimp */
QWindow *QAccessibleWidget::window() const
{
- Q_ASSERT(widget());
- return widget()->windowHandle();
+ const QWidget *w = widget();
+ Q_ASSERT(w);
+ QWindow *result = w->windowHandle();
+ if (!result) {
+ if (const QWidget *nativeParent = w->nativeParentWidget())
+ result = nativeParent->windowHandle();
+ }
+ return result;
}
/*!