diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/controls/qquickmenu.cpp | 20 | ||||
| -rw-r--r-- | src/controls/qquickmenu_p.h | 2 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/controls/qquickmenu.cpp b/src/controls/qquickmenu.cpp index 8982b46ca..c12060bf4 100644 --- a/src/controls/qquickmenu.cpp +++ b/src/controls/qquickmenu.cpp @@ -275,14 +275,28 @@ QQuickMenu::~QQuickMenu() m_platformMenu = 0; } +void QQuickMenu::syncParentMenuBar() +{ + QQuickMenuBar *menubar = qobject_cast<QQuickMenuBar *>(parent()); + if (menubar && menubar->platformMenuBar()) + menubar->platformMenuBar()->syncMenu(m_platformMenu); +} + 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); + syncParentMenuBar(); + } +} + +void QQuickMenu::setEnabled(bool e) +{ + QQuickMenuText::setEnabled(e); + if (m_platformMenu) { + m_platformMenu->setEnabled(e); + syncParentMenuBar(); } } diff --git a/src/controls/qquickmenu_p.h b/src/controls/qquickmenu_p.h index 85cc0107f..73f5c5050 100644 --- a/src/controls/qquickmenu_p.h +++ b/src/controls/qquickmenu_p.h @@ -109,6 +109,7 @@ public: virtual ~QQuickMenu(); void setVisible(bool); + void setEnabled(bool); int selectedIndex() const { return m_selectedIndex; } void setSelectedIndex(int index); @@ -149,6 +150,7 @@ protected Q_SLOTS: private: QQuickWindow *findParentWindow(); + void syncParentMenuBar(); int itemIndexForListIndex(int listIndex) const; void itemIndexToListIndex(int, int *, int *) const; |
