diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-08-09 13:28:49 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-13 14:58:22 +0200 |
commit | 467e3fc798f067ba4d3f22c32066e9d12c64fd3c (patch) | |
tree | add56cb5074ce116cccb91f345edf405f6cf08d5 | |
parent | 8f23d0e23200d83e6fcba45f40c163a18306fee5 (diff) | |
download | qtquickcontrols-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.qml | 1 | ||||
-rw-r--r-- | src/controls/qquickmenu.cpp | 14 | ||||
-rw-r--r-- | src/controls/qquickmenu_p.h | 2 | ||||
-rw-r--r-- | src/controls/qquickmenubar_p.h | 2 | ||||
-rw-r--r-- | src/controls/qquickmenuitem_p.h | 2 |
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); |