From c3fe8736a8cd00581a33cbea62a752331e6bd619 Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Thu, 5 Jun 2014 20:08:04 +0200 Subject: Menu: Properly relay enabled state to QPA menu object Task-number: QTBUG-39384 Change-Id: I1b71912b4f35ea0aa9e06667a5c0ecedec30f980 Reviewed-by: J-P Nurmi --- src/controls/qquickmenu.cpp | 20 +++++++++++++++++--- 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 8982b46c..c12060bf 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(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(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 85cc0107..73f5c505 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; -- cgit v1.2.1