@@ -37,10 +37,6 @@ RootActionState::RootActionState(QObject *parent)
3737
3838RootActionState::~RootActionState()
3939{
40− if (m_menu) {
41− m_menu->disconnect(this);
42− m_menu->setActionStateParser(NULL);
43− }
4440}
4541
4642UnityMenuModel* RootActionState::menu() const
@@ -53,7 +49,6 @@ void RootActionState::setMenu(UnityMenuModel* menu)
5349 if (m_menu != menu) {
5450 if (m_menu) {
5551 m_menu->disconnect(this);
56− m_menu->setActionStateParser(NULL);
5752 }
5853 m_menu = menu;
5954
@@ -63,8 +58,6 @@ void RootActionState::setMenu(UnityMenuModel* menu)
6358 connect(m_menu, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)), SLOT(onModelDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)));
6459
6560 connect(m_menu, SIGNAL(destroyed()), SLOT(reset()));
66−
67− m_menu->setActionStateParser(this);
6861 }
6962 updateActionState();
7063 Q_EMIT menuChanged();
@@ -110,7 +103,13 @@ void RootActionState::reset() {
110103void RootActionState::updateActionState()
111104{
112105 if (m_menu && m_menu->rowCount() > 0) {
106+
107+ ActionStateParser* oldParser = m_menu->actionStateParser();
108+ m_menu->setActionStateParser(this);
109+
113110 m_cachedState = m_menu->get(0, "actionState").toMap();
111+
112+ m_menu->setActionStateParser(oldParser);
114113 } else {
115114 m_cachedState.clear();
116115 }