From 1bb45e6361c44760be401dee040b47a5f3afb2ec Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Sun, 8 Feb 2026 17:43:00 +0100 Subject: kfileitemmodelrolesupdater: Disconnect change signal before changing data Avoids the item being considered dirty when *we* changed it. It is guarded in most places but wasn't done in the pixmap animation stuff causing the item considered dirty whenever hovering it. --- src/kitemviews/kfileitemmodelrolesupdater.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index cff4c6f2e..31459d8d1 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -627,7 +627,9 @@ void KFileItemModelRolesUpdater::slotHoverSequenceGotPreview(const KFileItem &it } if (wap >= 0.0f) { data["hoverSequenceWraparoundPoint"] = wap; + disconnect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); + connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged); } // For hover sequence previews we never load index 0, because that's just the regular preview @@ -642,7 +644,9 @@ void KFileItemModelRolesUpdater::slotHoverSequenceGotPreview(const KFileItem &it pixmaps.append(scaledPixmap); data["hoverSequencePixmaps"] = QVariant::fromValue(pixmaps); + disconnect(m_model, &KFileItemModel::itemsMoved, this, &KFileItemModelRolesUpdater::slotItemsMoved); m_model->setData(index, data); + connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged); const auto loadedIt = std::find(m_hoverSequenceLoadedItems.begin(), m_hoverSequenceLoadedItems.end(), item); if (loadedIt == m_hoverSequenceLoadedItems.end()) { @@ -1057,7 +1061,9 @@ void KFileItemModelRolesUpdater::loadNextHoverSequencePreview() if (!data.contains("hoverSequencePixmaps")) { // The pixmap at index 0 isn't used ("iconPixmap" will be used instead) data.insert("hoverSequencePixmaps", QVariant::fromValue(QVector() << QPixmap())); + disconnect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); + connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged); } const QVector pixmaps = data["hoverSequencePixmaps"].value>(); -- cgit v1.3