@@ -37,10 +37,6 @@ RootActionState::RootActionState(QObject *parent)
38RootActionState::~RootActionState()
38RootActionState::~RootActionState()
41− m_menu->disconnect(this);
42− m_menu->setActionStateParser(NULL);
46UnityMenuModel* RootActionState::menu() const
42UnityMenuModel* RootActionState::menu() const
@@ -53,7 +49,6 @@ void RootActionState::setMenu(UnityMenuModel* menu)
53 if (m_menu != menu) {
49 if (m_menu != menu) {
54 if (m_menu) {
50 if (m_menu) {
55 m_menu->disconnect(this);
51 m_menu->disconnect(this);
56− m_menu->setActionStateParser(NULL);
58 m_menu = menu;
53 m_menu = menu;
@@ -63,8 +58,6 @@ void RootActionState::setMenu(UnityMenuModel* menu)
63 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>&)));
65 connect(m_menu, SIGNAL(destroyed()), SLOT(reset()));
60 connect(m_menu, SIGNAL(destroyed()), SLOT(reset()));
67− m_menu->setActionStateParser(this);
69 updateActionState();
62 updateActionState();
70 Q_EMIT menuChanged();
63 Q_EMIT menuChanged();
@@ -110,7 +103,13 @@ void RootActionState::reset() {
110void RootActionState::updateActionState()
103void RootActionState::updateActionState()
112 if (m_menu && m_menu->rowCount() > 0) {
105 if (m_menu && m_menu->rowCount() > 0) {
107+ ActionStateParser* oldParser = m_menu->actionStateParser();
108+ m_menu->setActionStateParser(this);
113 m_cachedState = m_menu->get(0, "actionState").toMap();
110 m_cachedState = m_menu->get(0, "actionState").toMap();
112+ m_menu->setActionStateParser(oldParser);
115 m_cachedState.clear();
114 m_cachedState.clear();