@@ -57,7 +57,7 @@ void RootActionState::setMenu(UnityMenuModel* menu)
57 connect(m_menu, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), SLOT(onModelRowsRemoved(const QModelIndex&, int, int)));
57 connect(m_menu, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), SLOT(onModelRowsRemoved(const QModelIndex&, int, int)));
58 connect(m_menu, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)), SLOT(onModelDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)));
58 connect(m_menu, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)), SLOT(onModelDataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)));
60− m_menu->setActionStateParser(this);
60+ connect(m_menu, SIGNAL(destroyed()), SLOT(reset()));
62 updateActionState();
62 updateActionState();
63 Q_EMIT menuChanged();
63 Q_EMIT menuChanged();
@@ -92,10 +92,24 @@ void RootActionState::onModelDataChanged(const QModelIndex& topLeft, const QMode
95+void RootActionState::reset()
97+ m_cachedState.clear();
100+ Q_EMIT menuChanged();
95void RootActionState::updateActionState()
104void RootActionState::updateActionState()
97 if (m_menu && m_menu->rowCount() > 0) {
106 if (m_menu && m_menu->rowCount() > 0) {
107+ ActionStateParser* oldParser = m_menu->actionStateParser();
108+ m_menu->setActionStateParser(this);
98 m_cachedState = m_menu->get(0, "actionState").toMap();
110 m_cachedState = m_menu->get(0, "actionState").toMap();
112+ m_menu->setActionStateParser(oldParser);
100 m_cachedState.clear();
114 m_cachedState.clear();