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