From 3448f62f31d8b08e1365021a8fb3b58ce0ba2a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Mon, 19 Jan 2026 20:57:13 +0100 Subject: [PATCH] Try to fix crash in ImageRingList --- src/imageringlist.cpp | 44 +++++++++++++++++++++++-------------------- src/imageringlist.h | 8 ++++---- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/imageringlist.cpp b/src/imageringlist.cpp index 654eb0d..29e8e5a 100644 --- a/src/imageringlist.cpp +++ b/src/imageringlist.cpp @@ -111,7 +111,7 @@ void Image::thumbnailLoadFinish(std::shared_ptr rawImage) emit thumbnailLoaded(this); } -ImageRingList::ImageRingList(Database *database, const QStringList &nameFilter, QObject *parent) : QAbstractItemModel(parent) +ImageRingList::ImageRingList(Database *database, const QStringList &nameFilter, QObject *parent) : QAbstractListModel(parent) , m_liveMode(false) , m_analyzeLevel(None) , m_database(database) @@ -412,7 +412,7 @@ void ImageRingList::clearThumbnails() img->clearThumbnail(); } -QModelIndex ImageRingList::index(int row, int column, const QModelIndex &parent) const +/*QModelIndex ImageRingList::index(int row, int column, const QModelIndex &parent) const { Q_UNUSED(parent); return createIndex(row, column, m_images.at(row).get()); @@ -422,7 +422,7 @@ QModelIndex ImageRingList::parent(const QModelIndex &child) const { Q_UNUSED(child); return QModelIndex(); -} +}*/ int ImageRingList::rowCount(const QModelIndex &parent) const { @@ -432,31 +432,35 @@ int ImageRingList::rowCount(const QModelIndex &parent) const return 0; } -int ImageRingList::columnCount(const QModelIndex &parent) const +/*int ImageRingList::columnCount(const QModelIndex &parent) const { Q_UNUSED(parent); return 1; -} +}*/ QVariant ImageRingList::data(const QModelIndex &index, int role) const { - switch(role) + if(index.isValid() && index.row() >= 0 && index.row() < m_images.size()) { - case Qt::DisplayRole: - { - QFileInfo info(m_images.at(index.row())->name()); - return info.fileName(); - } - case Qt::FontRole: - { - bool marked = m_database->isMarked(m_images.at(index.row())->name()); - QFont font; - font.setBold(marked); - return font; - } - default: - return QVariant(); + switch(role) + { + case Qt::DisplayRole: + { + QFileInfo info(m_images.at(index.row())->name()); + return info.fileName(); + } + case Qt::FontRole: + { + bool marked = m_database->isMarked(m_images.at(index.row())->name()); + QFont font; + font.setBold(marked); + return font; + } + default: + return QVariant(); + } } + return QVariant(); } QVariant ImageRingList::headerData(int section, Qt::Orientation orientation, int role) const diff --git a/src/imageringlist.h b/src/imageringlist.h index 13d49a1..d9791d9 100644 --- a/src/imageringlist.h +++ b/src/imageringlist.h @@ -51,7 +51,7 @@ typedef std::shared_ptr ImagePtr; class Database; -class ImageRingList : public QAbstractItemModel +class ImageRingList : public QAbstractListModel { Q_OBJECT int m_width; @@ -93,10 +93,10 @@ public: void updateMark(); void clearThumbnails(); - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &child) const override; + //QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; + //QModelIndex parent(const QModelIndex &child) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; + //int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; public slots: