on xenial help sign in
Reset instead of qFatal when removing things from the middle

This can be optimized but let's see how this behaves, at least we won't qFatal anymore :D Fixes: #1238979 Approved by: Andrea Cimitan

commit6d79f4590ba6b6eb74fa8f52db4ff867c08e9f4f authorAlbert Astals Cid <albert.astals@canonical.com> dateThu 12 Nov 2015, 20:40 (11 years ago) parent19014f15c43927
10 files changed+17−22
plugins/Dash/horizontaljournal.cpp+3−1 plugins/Dash/organicgrid.cpp+3−1 plugins/Dash/verticaljournal.cpp+3−1 tests/mocks/Unity/CMakeLists.txt+1−1 tests/mocks/Unity/fake_categories.cpp−5 tests/mocks/Unity/fake_categories.h−1 tests/mocks/Unity/fake_scope.cpp+5 tests/mocks/Unity/fake_scope.h+2 tests/mocks/Unity/fake_scopesoverview.cpp−10 tests/mocks/Unity/fake_scopesoverview.h−2
plugins/Dash/horizontaljournal.cpp+3−1
@@ -195,7 +195,9 @@ void HorizontalJournal::processModelRemoves(const QVector<QQmlChangeSet::Change>
195195 m_lastInRowIndexPosition.remove(indexToRemove);
196196 } else {
197197 if (indexToRemove < lastIndex) {
198− qFatal("HorizontalJournal only supports removal from the end of the model");
198+ qDebug() << "HorizontalJournal only supports removal from the end of the model, resetting instead";
199+ cleanupExistingItems();
200+ break;
199201 } else {
200202 setImplicitHeightDirty();
201203 }
plugins/Dash/organicgrid.cpp+3−1
@@ -246,7 +246,9 @@ void OrganicGrid::processModelRemoves(const QVector<QQmlChangeSet::Change> &remo
246246 releaseItem(m_visibleItems.takeLast());
247247 } else {
248248 if (indexToRemove < lastIndex) {
249− qFatal("OrganicGrid only supports removal from the end of the model");
249+ qDebug() << "OrganicGrid only supports removal from the end of the model, resetting instead";
250+ cleanupExistingItems();
251+ break;
250252 }
251253 }
252254 }
plugins/Dash/verticaljournal.cpp+3−1
@@ -261,7 +261,9 @@ void VerticalJournal::processModelRemoves(const QVector<QQmlChangeSet::Change> &
261261 }
262262 if (!found) {
263263 if (indexToRemove < lastCreatedIndex) {
264− qFatal("VerticalJournal only supports removal from the end of the model");
264+ qDebug() << "VerticalJournal only supports removal from the end of the model, resetting instead";
265+ cleanupExistingItems();
266+ break;
265267 } else {
266268 setImplicitHeightDirty();
267269 }
tests/mocks/Unity/CMakeLists.txt+1−1
@@ -7,7 +7,7 @@ add_subdirectory(Notifications)
77add_subdirectory(DashCommunicator)
88
99pkg_search_module(GOBJECT gobject-2.0 REQUIRED)
10−pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=7)
10+pkg_check_modules(SCOPES_API REQUIRED unity-shell-scopes=8)
1111
1212include_directories(
1313 ${CMAKE_CURRENT_BINARY_DIR}
tests/mocks/Unity/fake_categories.cpp−5
@@ -32,11 +32,6 @@ int Categories::rowCount(const QModelIndex& /*parent*/) const
3232 return m_category_count;
3333}
3434
35−void Categories::addSpecialCategory(QString const& /*categoryId*/, QString const& /*name*/, QString const& /*icon*/, QString const& /*rawTemplate*/, QObject* /*countObject*/)
36−{
37− qFatal("Using un-implemented Categories::addSpecialCategory");
38−}
39−
4035bool Categories::overrideCategoryJson(QString const& /* categoryId */, QString const& /* json */)
4136{
4237 qFatal("Using un-implemented Categories::overrideCategoryJson");
tests/mocks/Unity/fake_categories.h−1
@@ -34,7 +34,6 @@ public:
3434 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
3535 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
3636
37− Q_INVOKABLE void addSpecialCategory(QString const& categoryId, QString const& name, QString const& icon, QString const& rawTemplate, QObject* countObject) override;
3837 Q_INVOKABLE bool overrideCategoryJson(QString const& categoryId, QString const& json) override;
3938
4039 Q_INVOKABLE QVariant data(int row, int role) const;
tests/mocks/Unity/fake_scope.cpp+5
@@ -271,6 +271,11 @@ void Scope::refresh()
271271 Q_EMIT refreshed();
272272}
273273
274+void Scope::activateAction(QVariant const& /*result*/, QString const& /*categoryId*/, QString const& /*actionId*/)
275+{
276+ qFatal("Using Scope::activateAction");
277+}
278+
274279unity::shell::scopes::NavigationInterface* Scope::getNavigation(const QString& id)
275280{
276281 if (id.isEmpty())
tests/mocks/Unity/fake_scope.h+2
@@ -79,6 +79,8 @@ public:
7979
8080 Q_INVOKABLE void refresh() override;
8181
82+ Q_INVOKABLE virtual void activateAction(QVariant const& result, QString const& categoryId, QString const& actionId) override;
83+
8284Q_SIGNALS:
8385 // These are not in the Interface, here for testing benefits
8486 void refreshed();
tests/mocks/Unity/fake_scopesoverview.cpp−10
@@ -74,11 +74,6 @@ int ScopesOverviewCategories::rowCount(const QModelIndex& /*parent*/) const
7474 return 2;
7575}
7676
77−void ScopesOverviewCategories::addSpecialCategory(QString const&, QString const&, QString const&, QString const&, QObject*)
78−{
79− qFatal("Using un-implemented ScopesOverviewCategories::addSpecialCategory");
80−}
81−
8277bool ScopesOverviewCategories::overrideCategoryJson(QString const& /* categoryId */, QString const& /* json */)
8378{
8479 qFatal("Using un-implemented ScopesOverviewCategories::overrideCategoryJson");
@@ -175,11 +170,6 @@ int ScopesOverviewSearchCategories::rowCount(const QModelIndex& /*parent*/) cons
175170 return 2;
176171}
177172
178−void ScopesOverviewSearchCategories::addSpecialCategory(QString const&, QString const&, QString const&, QString const&, QObject*)
179−{
180− qFatal("Using un-implemented ScopesOverviewSearchCategories::addSpecialCategory");
181−}
182−
183173bool ScopesOverviewSearchCategories::overrideCategoryJson(QString const& /* categoryId */, QString const& /* json */)
184174{
185175 qFatal("Using un-implemented ScopesOverviewSearchCategories::overrideCategoryJson");
tests/mocks/Unity/fake_scopesoverview.h−2
@@ -53,7 +53,6 @@ public:
5353 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
5454 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
5555
56− Q_INVOKABLE void addSpecialCategory(QString const& categoryId, QString const& name, QString const& icon, QString const& rawTemplate, QObject* countObject) override;
5756 Q_INVOKABLE bool overrideCategoryJson(QString const& categoryId, QString const& json) override;
5857
5958 // This is implementation detail
@@ -76,7 +75,6 @@ public:
7675 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
7776 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
7877
79− Q_INVOKABLE void addSpecialCategory(QString const& categoryId, QString const& name, QString const& icon, QString const& rawTemplate, QObject* countObject) override;
8078 Q_INVOKABLE bool overrideCategoryJson(QString const& categoryId, QString const& json) override;
8179
8280private: