libtaskmanager: Fix invalid dataChanged() signal emission

Calling dataChanged() with an invalid QModelIndex() triggered an assertion
inside QConcatenateTablesProxyModel (my Qt is built with assertions):
ASSERT: "from.isValid()" in file $HOME/cheri/qt5/qtbase/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp, line 623
wilder-5.26
Alex Richardson 4 years ago
parent 7f308065a7
commit de45732b8d
  1. 6
      libtaskmanager/xwindowtasksmodel.cpp

@ -189,7 +189,13 @@ void XWindowTasksModel::Private::init()
});
QObject::connect(KWindowSystem::self(), &KWindowSystem::stackingOrderChanged, q, [this]() {
// No need to do anything if the model is empty. This avoids calling q->dataChanged with an invalid QModelIndex.
if (q->rowCount() == 0) {
return;
}
cachedStackingOrder = KWindowSystem::stackingOrder();
Q_ASSERT(q->hasIndex(0, 0));
Q_ASSERT(q->hasIndex(q->rowCount() - 1, 0));
Q_EMIT q->dataChanged(q->index(0, 0), q->index(q->rowCount() - 1, 0), QVector<int>{StackingOrder});
});

Loading…
Cancel
Save