┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Uwe Broulik <[email protected]>2026-02-08 17:43:00 +0100
committerKai Uwe Broulik <[email protected]>2026-02-08 17:43:00 +0100
commit1bb45e6361c44760be401dee040b47a5f3afb2ec (patch)
treed1934dd8faea4a51e817c2e2e392ebc65562d6b5
parent9bb9040c3fe541b29130ab50907d5c5134040271 (diff)
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.
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp6
1 files changed, 6 insertions, 0 deletions
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>() << QPixmap()));
+ disconnect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
m_model->setData(index, data);
+ connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
}
const QVector<QPixmap> pixmaps = data["hoverSequencePixmaps"].value<QVector<QPixmap>>();