summaryrefslogtreecommitdiffstats
path: root/src/controls/qtmenuitem.cpp
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-02-25 14:40:24 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-02-25 15:43:37 +0100
commit7cf9b32258c0c1b11cc12693f6feef7dc9d13ef7 (patch)
treeba7334c3f36c0a0de1320356836f1b3bfda14544 /src/controls/qtmenuitem.cpp
parentea4a6d3c095b62e1afb4ccf5125f1280f172e30e (diff)
Menu: Fix 'selectedIndex' update on item trigger
This demanded some code refactoring, and the introduction of the parent menu property. Updated auto-tests too. Change-Id: I3d9070b0a1a76d6c174ccf13965d30413f23aadd Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Caroline Chao <caroline.chao@digia.com>
Diffstat (limited to 'src/controls/qtmenuitem.cpp')
-rw-r--r--src/controls/qtmenuitem.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/controls/qtmenuitem.cpp b/src/controls/qtmenuitem.cpp
index a62845123..c53f9858f 100644
--- a/src/controls/qtmenuitem.cpp
+++ b/src/controls/qtmenuitem.cpp
@@ -51,7 +51,7 @@
QT_BEGIN_NAMESPACE
QtMenuBase::QtMenuBase(QObject *parent)
- : QObject(parent), m_visualItem(0)
+ : QObject(parent), m_parentMenu(0), m_visualItem(0)
{
m_platformItem = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem();
}
@@ -61,6 +61,16 @@ QtMenuBase::~QtMenuBase()
delete m_platformItem;
}
+QtMenu *QtMenuBase::parentMenu() const
+{
+ return m_parentMenu;
+}
+
+void QtMenuBase::setParentMenu(QtMenu *parentMenu)
+{
+ m_parentMenu = parentMenu;
+}
+
void QtMenuBase::syncWithPlatformMenu()
{
QtMenu *menu = qobject_cast<QtMenu *>(parent());
@@ -79,7 +89,6 @@ void QtMenuBase::setVisualItem(QQuickItem *item)
m_visualItem = item;
}
-
/*!
\qmltype MenuSeparator
\instantiates QtMenuSeparator
@@ -206,6 +215,12 @@ QtMenuItem::~QtMenuItem()
unbindFromAction(m_action);
}
+void QtMenuItem::setParentMenu(QtMenu *parentMenu)
+{
+ QtMenuBase::setParentMenu(parentMenu);
+ connect(this, SIGNAL(triggered()), parentMenu, SLOT(updateSelectedIndex()));
+}
+
void QtMenuItem::bindToAction(QtAction *action)
{
m_action = action;
@@ -289,11 +304,6 @@ void QtMenuItem::setAction(QtAction *a)
emit actionChanged();
}
-QtMenu *QtMenuItem::parentMenu() const
-{
- return qobject_cast<QtMenu *>(parent());
-}
-
QString QtMenuItem::text() const
{
return m_action ? m_action->text() : QString();