diff options
Diffstat (limited to 'src/controls')
| -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); |
