on xenial help sign in
Fixed QMenuModel::submenu bug
70a7d39Nick Dedekind
tests/mocks/QMenuModel/unitymenumodel.cpp+5−9
@@ -38,13 +38,6 @@ UnityMenuModel::UnityMenuModel(QObject *parent)
38{
38{
39}
39}
40
40
41−UnityMenuModel::UnityMenuModel(const QVariant& data, QObject *parent)
42−: QAbstractListModel(parent)
43−{
44− QVariantList li = data.toList();
45− m_modelData = li;
46−}
47−
48QVariant UnityMenuModel::modelData() const
41QVariant UnityMenuModel::modelData() const
49{
42{
50 return m_modelData;
43 return m_modelData;
@@ -201,9 +194,12 @@ QObject * UnityMenuModel::submenu(int position, QQmlComponent*)
201 if (submenuData.type() == (int)QMetaType::QVariantList) {
194 if (submenuData.type() == (int)QMetaType::QVariantList) {
202 UnityMenuModel*& model = submenus[position];
195 UnityMenuModel*& model = submenus[position];
203 if (!model) {
196 if (!model) {
204− model = new UnityMenuModel(submenuData, this);
197+ model = new UnityMenuModel(this);
205− return model;
198+ }
199+ if (model->modelData() != submenuData) {
200+ model->setModelData(submenuData);
206 }
201 }
202+ return model;
207 }
203 }
208
204
209 return NULL;
205 return NULL;
tests/mocks/QMenuModel/unitymenumodel.h−2
@@ -81,8 +81,6 @@ Q_SIGNALS:
81 void modelDataChanged();
81 void modelDataChanged();
82
82
83private:
83private:
84− UnityMenuModel(const QVariant& data, QObject *parent = NULL);
85−
86 QVariantMap rowData(int row) const;
84 QVariantMap rowData(int row) const;
87 QVariant subMenuData(int row) const;
85 QVariant subMenuData(int row) const;
88
86