summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-08-09 13:28:49 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-08-13 14:58:22 +0200
commit467e3fc798f067ba4d3f22c32066e9d12c64fd3c (patch)
treeadd56cb5074ce116cccb91f345edf405f6cf08d5
parent8f23d0e23200d83e6fcba45f40c163a18306fee5 (diff)
downloadqtquickcontrols-467e3fc798f067ba4d3f22c32066e9d12c64fd3c.tar.gz
MenuBar: Make sure invisible menus appear so
Task-number: QTBUG-32899 Change-Id: Id07baba90ff45ba420d563ce47ee58964d4e4d02 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
-rw-r--r--src/controls/MenuBar.qml1
-rw-r--r--src/controls/qquickmenu.cpp14
-rw-r--r--src/controls/qquickmenu_p.h2
-rw-r--r--src/controls/qquickmenubar_p.h2
-rw-r--r--src/controls/qquickmenuitem_p.h2
5 files changed, 19 insertions, 2 deletions
diff --git a/src/controls/MenuBar.qml b/src/controls/MenuBar.qml
index 65af1c12..eabb4d48 100644
--- a/src/controls/MenuBar.qml
+++ b/src/controls/MenuBar.qml
@@ -180,6 +180,7 @@ MenuBarPrivate {
sourceComponent: menuBarLoader.menuItemStyle
property int menuItemIndex: index
+ visible: menuItem.visible
Connections {
target: menuBarLoader
diff --git a/src/controls/qquickmenu.cpp b/src/controls/qquickmenu.cpp
index bb0ddae9..2dbaf952 100644
--- a/src/controls/qquickmenu.cpp
+++ b/src/controls/qquickmenu.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qquickmenu_p.h"
+#include "qquickmenubar_p.h"
#include "qquickmenuitemcontainer_p.h"
#include "qquickmenupopupwindow_p.h"
@@ -110,7 +111,7 @@ QT_BEGIN_NAMESPACE
\qmlproperty bool Menu::visible
Whether the menu should be visible. This is only enabled when the menu is used as
- a submenu. Its value defaults to \c true.
+ a submenu or in the menubar. Its value defaults to \c true.
*/
/*!
@@ -271,6 +272,17 @@ QQuickMenu::~QQuickMenu()
m_platformMenu = 0;
}
+void QQuickMenu::setVisible(bool v)
+{
+ QQuickMenuBase::setVisible(v);
+ if (m_platformMenu) {
+ m_platformMenu->setVisible(v);
+ QQuickMenuBar *menubar = qobject_cast<QQuickMenuBar *>(parent());
+ if (menubar && menubar->platformMenuBar())
+ menubar->platformMenuBar()->syncMenu(m_platformMenu);
+ }
+}
+
void QQuickMenu::updateText()
{
if (m_platformMenu)
diff --git a/src/controls/qquickmenu_p.h b/src/controls/qquickmenu_p.h
index 6207e3e0..54f7451b 100644
--- a/src/controls/qquickmenu_p.h
+++ b/src/controls/qquickmenu_p.h
@@ -103,6 +103,8 @@ public:
QQuickMenu(QObject *parent = 0);
virtual ~QQuickMenu();
+ void setVisible(bool);
+
int selectedIndex() const { return m_selectedIndex; }
void setSelectedIndex(int index);
diff --git a/src/controls/qquickmenubar_p.h b/src/controls/qquickmenubar_p.h
index c1aeece8..09a297fb 100644
--- a/src/controls/qquickmenubar_p.h
+++ b/src/controls/qquickmenubar_p.h
@@ -82,6 +82,8 @@ public:
QQuickWindow *parentWindow() const { return m_parentWindow; }
void setParentWindow(QQuickWindow *);
+ QPlatformMenuBar *platformMenuBar() const { return m_platformMenuBar; }
+
private:
static void append_menu(QQmlListProperty<QQuickMenu> *list, QQuickMenu *menu);
static int count_menu(QQmlListProperty<QQuickMenu> *list);
diff --git a/src/controls/qquickmenuitem_p.h b/src/controls/qquickmenuitem_p.h
index 61229685..02e7f5e3 100644
--- a/src/controls/qquickmenuitem_p.h
+++ b/src/controls/qquickmenuitem_p.h
@@ -90,7 +90,7 @@ public:
~QQuickMenuBase();
bool visible() const { return m_visible; }
- void setVisible(bool);
+ virtual void setVisible(bool);
QQuickMenu *parentMenu() const;
virtual void setParentMenu(QQuickMenu *parentMenu);