summaryrefslogtreecommitdiffstats
path: root/src/plugins/accessible
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-04-22 15:51:05 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-23 13:11:22 +0200
commita7ce34dba4213927deba443e0e9c42df1769cc25 (patch)
treed24398363750433d7a91d55d6096c16db677c34c /src/plugins/accessible
parent8d60a104620c83ff89b914f4ac94742c52a8ed30 (diff)
Accessibility: Menu item should keep track of owner being valid
The QAction may stay around while the parent/owner gets deleted. This is for example the case for some dynamically created menus. This is required for fixing QTBUG-30792 Change-Id: I7b6122edec6def69aed77502403134e1568e21c9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src/plugins/accessible')
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp2
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h3
2 files changed, 3 insertions, 2 deletions
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.cpp b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
index f248e6d05e..39ac335131 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
@@ -206,7 +206,7 @@ int QAccessibleMenuItem::indexOfChild(const QAccessibleInterface * child) const
bool QAccessibleMenuItem::isValid() const
{
- return m_action ? true : false;
+ return m_action && m_owner ? true : false;
}
QAccessibleInterface *QAccessibleMenuItem::parent() const
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.h b/src/plugins/accessible/widgets/qaccessiblemenu.h
index 74d118a09e..f933a4a37e 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.h
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.h
@@ -43,6 +43,7 @@
#define QACCESSIBLEMENU_H
#include <QtWidgets/private/qaccessiblewidget_p.h>
+#include <QtCore/qpointer.h>
QT_BEGIN_NAMESPACE
@@ -120,7 +121,7 @@ protected:
QAction *action() const;
private:
QAction *m_action;
- QWidget *m_owner; // can hold either QMenu or the QMenuBar that contains the action
+ QPointer<QWidget> m_owner; // can hold either QMenu or the QMenuBar that contains the action
};
#endif // QT_NO_MENU