Qt: fix blank rows in library rendering

This commit is contained in:
Adam Higerd 2025-04-14 10:03:06 -05:00 committed by Vicki Pfau
parent d79579d1ca
commit 44349b0a37
2 changed files with 23 additions and 1 deletions

View File

@ -336,6 +336,26 @@ QVariant LibraryModel::folderData(const QModelIndex& index, int role) const {
return QVariant();
}
bool LibraryModel::validateIndex(const QModelIndex& index) const
{
if (index.model() != this || index.row() < 0 || index.column() < 0 || index.column() > MAX_COLUMN) {
// Obviously invalid index
return false;
}
if (index.parent().isValid() && !validateIndex(index.parent())) {
// Parent index is invalid
return false;
}
if (index.row() >= rowCount(index.parent())) {
// Row is out of bounds for this level of hierarchy
return false;
}
return true;
}
QVariant LibraryModel::data(const QModelIndex& index, int role) const {
switch (role) {
case Qt::DisplayRole:
@ -357,7 +377,7 @@ QVariant LibraryModel::data(const QModelIndex& index, int role) const {
return QVariant();
}
if (index.model() != this || index.row() < 0 || index.row() > rowCount() || index.column() < 0 || index.column() > columnCount()) {
if (!validateIndex(index)) {
return QVariant();
}

View File

@ -70,6 +70,8 @@ private:
QVariant folderData(const QModelIndex& index, int role = Qt::DisplayRole) const;
bool validateIndex(const QModelIndex& index) const;
void addEntriesList(const QList<LibraryEntry>& items);
void addEntriesTree(const QList<LibraryEntry>& items);
void addEntryInternal(const LibraryEntry& item);