From 8c2d4207ee82ba060bfbd6e788325d3f5288f03e Mon Sep 17 00:00:00 2001
From: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Date: Thu, 28 Feb 2013 17:21:36 +0100
Subject: [PATCH] Menu: Support invisible MenuItems

Note that currently, invisible Menus in MenuBars are not supported
because of the QPA backend. To be decided whether we want this...

Change-Id: Ide01c0ddc12f07969a5466a77b5c5c67b265ec87
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
---
 examples/gallery/main.qml   | 9 +++++++++
 src/controls/Menu.qml       | 4 +++-
 src/controls/qtmenuitem.cpp | 4 ++++
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/examples/gallery/main.qml b/examples/gallery/main.qml
index cf24bec1e..63047003c 100644
--- a/examples/gallery/main.qml
+++ b/examples/gallery/main.qml
@@ -226,6 +226,15 @@ ApplicationWindow {
                 shortcut: "Ctrl+E,Shift+Ctrl+X"
                 enabled: false
             }
+            MenuItem {
+                text: "Not Even There"
+                shortcut: "Ctrl+E,Shift+Ctrl+Y"
+                visible: false
+            }
+            Menu {
+                text: "Me Neither"
+                visible: false
+            }
         }
     }
 
diff --git a/src/controls/Menu.qml b/src/controls/Menu.qml
index ef406caa1..b4ba2e964 100644
--- a/src/controls/Menu.qml
+++ b/src/controls/Menu.qml
@@ -247,7 +247,9 @@ MenuPrivate {
                         property int menuItemIndex: index
 
                         sourceComponent: menuFrameLoader.menuItemStyle
-                        enabled: !isSeparator && !!menuItem && menuItem.enabled
+                        enabled: visible && !isSeparator && !!menuItem && menuItem.enabled
+                        visible: menuItem.visible
+                        active: visible
 
                         function showSubMenu(immediately) {
                             if (immediately) {
diff --git a/src/controls/qtmenuitem.cpp b/src/controls/qtmenuitem.cpp
index 124ba4c81..bf2248d16 100644
--- a/src/controls/qtmenuitem.cpp
+++ b/src/controls/qtmenuitem.cpp
@@ -66,6 +66,10 @@ void QtMenuBase::setVisible(bool v)
 {
     if (v != m_visible) {
         m_visible = v;
+
+        if (m_platformItem)
+            m_platformItem->setVisible(m_visible);
+
         emit visibleChanged();
     }
 }
-- 
GitLab