From fac08af081467a798a649cde6f8ca615e797c137 Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Mon, 15 Aug 2022 15:02:13 +0200 Subject: [PATCH] Don't include `iconOverlays` in rolesData if it is empty If this role isn't in the model yet, it would be `QVariant::Invalid` which is obviously a distinct type from an empty string list. This means `KFileItemModel::setData` treats them non-equal and potentially does expensive operations on the model, which is called every time a role is resolved in `KFileItemModelRolesUpdater`. With this change, the number of pointless layout calculations is significantly reduced. --- src/kitemviews/kfileitemmodelrolesupdater.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index ed762e98ff..2107ebc5ef 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -1350,7 +1350,9 @@ QHash KFileItemModelRolesUpdater::rolesData(const KFileIte for (KOverlayIconPlugin *it : qAsConst(m_overlayIconsPlugin)) { overlays.append(it->getOverlays(item.url())); } - data.insert("iconOverlays", overlays); + if (!overlays.isEmpty()) { + data.insert("iconOverlays", overlays); + } #if HAVE_BALOO if (m_balooFileMonitor) {