┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-05-22 18:06:54 +0200
committerFrank Reininghaus <[email protected]>2013-05-22 18:09:42 +0200
commite66c3221ce2534c3317489c0d666da20ff14de8f (patch)
tree458619b396d685e4a92072be6a754b03b61faa55
parentfffbb5b583ffb5af2a7ff6b17104c23bf3b31727 (diff)
KFileItemModelRolesUpdater: only update the size for changed folders
When using inotify, we also receive signals for modified files, even if we only ask KDirWatch to watch the directory containing them. In that case, we must not set the size to -1 (which means "unknown number of items" for folders) temporarily, or we end up with an apparent file size of 2^64 - 1 bytes. BUG: 309740 FIXED-IN: 4.10.4 REVIEW: 110428
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp
index 39d01e232..7cade10f5 100644
--- a/src/kitemviews/kfileitemmodelrolesupdater.cpp
+++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp
@@ -630,6 +630,13 @@ void KFileItemModelRolesUpdater::slotDirWatchDirty(const QString& path)
if (getSizeRole || getIsExpandableRole) {
const int index = m_model->index(KUrl(path));
if (index >= 0) {
+ if (!m_model->fileItem(index).isDir()) {
+ // If INotify is used, KDirWatch issues the dirty() signal
+ // also for changed files inside the directory, even if we
+ // don't enable this behavior explicitly (see bug 309740).
+ return;
+ }
+
QHash<QByteArray, QVariant> data;
const int count = subItemsCount(path);