From 276daef1e986887f6bb43ebc20f08d14c214ab0c Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Date: Tue, 12 Feb 2013 16:06:12 +0100 Subject: [PATCH] MenuItem: Add 'parentMenu' property This is needed since MenuItem is no longer a QQuickItem, and we cannot access a QObject's parent from QML. Returns 0 for the topmost menu. Change-Id: I76dd60cb0000066fc1ed675b4767efbcdfc69d0a Reviewed-by: J-P Nurmi <jpnurmi@digia.com> --- src/qtdesktop/Menu.qml | 2 +- src/qtdesktop/qtmenuitem.cpp | 5 +++++ src/qtdesktop/qtmenuitem_p.h | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/qtdesktop/Menu.qml b/src/qtdesktop/Menu.qml index b50041b87..a59cec2d8 100644 --- a/src/qtdesktop/Menu.qml +++ b/src/qtdesktop/Menu.qml @@ -187,7 +187,7 @@ MenuPrivate { } Keys.onLeftPressed: { - if (root.parent["menuItems"]) + if (root.parentMenu) closeMenu() } diff --git a/src/qtdesktop/qtmenuitem.cpp b/src/qtdesktop/qtmenuitem.cpp index 4ecfa44be..e1e8f8c5c 100644 --- a/src/qtdesktop/qtmenuitem.cpp +++ b/src/qtdesktop/qtmenuitem.cpp @@ -288,6 +288,11 @@ void QtMenuItem::setAction(QtAction *a) emit actionChanged(); } +QtMenu *QtMenuItem::parentMenu() const +{ + return qobject_cast<QtMenu *>(parent()); +} + QString QtMenuItem::text() const { return m_action ? m_action->text() : QString(); diff --git a/src/qtdesktop/qtmenuitem_p.h b/src/qtdesktop/qtmenuitem_p.h index df0efb141..212194a0e 100644 --- a/src/qtdesktop/qtmenuitem_p.h +++ b/src/qtdesktop/qtmenuitem_p.h @@ -52,6 +52,7 @@ class QUrl; class QPlatformMenuItem; class QQuickItem; class QtAction; +class QtMenu; class QtMenuBase: public QObject { @@ -97,6 +98,7 @@ class QtMenuItem: public QtMenuBase Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged) Q_PROPERTY(QtAction *action READ action WRITE setAction NOTIFY actionChanged) + Q_PROPERTY(QtMenu *parentMenu READ parentMenu) public: QtMenuItem(QObject *parent = 0); @@ -105,6 +107,8 @@ public: QtAction *action(); void setAction(QtAction *a); + QtMenu *parentMenu() const; + QString text() const; void setText(const QString &text); -- GitLab