From 7720de7f6a589669f43d4cf9750ccc854ed5090f Mon Sep 17 00:00:00 2001 From: liyigang Date: Fri, 29 Dec 2023 16:20:15 +0800 Subject: [PATCH] fix: The gear icon is displayed on the USB flash drive when deleting files to the trash The customData of trashfileinfo does not implement kitemFileRefreshIcon. Add an implementation to clean up the fileicon when comparing iconname inconsistencies when caching properties in asyncfileinfo Log: The gear icon is displayed on the USB flash drive when deleting files to the trash Bug: https://pms.uniontech.com/bug-view-237591.html --- src/dfm-base/file/local/asyncfileinfo.cpp | 4 ++++ src/plugins/common/core/dfmplugin-trashcore/trashfileinfo.cpp | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/dfm-base/file/local/asyncfileinfo.cpp b/src/dfm-base/file/local/asyncfileinfo.cpp index 71f56f9f98..0df95d3a8a 100644 --- a/src/dfm-base/file/local/asyncfileinfo.cpp +++ b/src/dfm-base/file/local/asyncfileinfo.cpp @@ -1137,6 +1137,10 @@ int AsyncFileInfoPrivate::cacheAllAttributes() tmp.insert(FileInfo::FileInfoAttributeID::kStandardIcon, attribute(DFileInfo::AttributeID::kStandardIcon)); tmp.insert(FileInfo::FileInfoAttributeID::kStandardIsLocalDevice, FileUtils::isLocalDevice(q->fileUrl())); tmp.insert(FileInfo::FileInfoAttributeID::kStandardIsCdRomDevice, FileUtils::isCdRomDevice(q->fileUrl())); + if (q->nameOf(NameInfoType::kIconName) != attribute(DFileInfo::AttributeID::kStandardIcon)) { + QWriteLocker rlk(&iconLock); + fileIcon = QIcon(); + } if (cacheTmp.isEmpty()) { { QWriteLocker lk(&lock); diff --git a/src/plugins/common/core/dfmplugin-trashcore/trashfileinfo.cpp b/src/plugins/common/core/dfmplugin-trashcore/trashfileinfo.cpp index cd16e0f02d..99f3f945e2 100644 --- a/src/plugins/common/core/dfmplugin-trashcore/trashfileinfo.cpp +++ b/src/plugins/common/core/dfmplugin-trashcore/trashfileinfo.cpp @@ -432,6 +432,9 @@ QVariant TrashFileInfo::customData(int role) const return urlOf(UrlInfoType::kOriginalUrl).path(); else if (role == kItemFileDeletionDate) return d->deletionTime().toString(FileUtils::dateTimeFormat()); + else if (role == Global::ItemRoles::kItemFileRefreshIcon){ + return ProxyFileInfo::customData(role); + } else return QVariant(); }