┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-08-14 23:57:51 +0200
committerFrank Reininghaus <[email protected]>2013-08-14 23:57:51 +0200
commit59723fca41a44e4d1ee753e93589027cbdf8d20d (patch)
treed72e2fd446eb90621c1249b8ee687b00bcd63972 /src/kitemviews
parentfd5ba3b4b22e923cff11b65654e9b6f931ce9a3c (diff)
Do not store default values in QHash<QByteArray, QVariant>
Storing values which are equivalent to default-constructed QVariants does not make much sense because QHash::value returns the same value even if the corresponding key is not found in the hash. This commit reduces Dolphin's memory consumption in large folders by up to 7.3% (tested a folder with 100,000 files in Details View) and reduces the time required for loading a folder. BUG: 323517 FIXED-IN: 4.11.1 REVIEW: 111922
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp27
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp1
2 files changed, 10 insertions, 18 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 1b4911dec..c0dedff39 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -1275,25 +1275,20 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item,
data.insert(sharedValue("url"), item.url());
const bool isDir = item.isDir();
- if (m_requestRole[IsDirRole]) {
- data.insert(sharedValue("isDir"), isDir);
+ if (m_requestRole[IsDirRole] && isDir) {
+ data.insert(sharedValue("isDir"), true);
}
- if (m_requestRole[IsLinkRole]) {
- const bool isLink = item.isLink();
- data.insert(sharedValue("isLink"), isLink);
+ if (m_requestRole[IsLinkRole] && item.isLink()) {
+ data.insert(sharedValue("isLink"), true);
}
if (m_requestRole[NameRole]) {
data.insert(sharedValue("text"), item.text());
}
- if (m_requestRole[SizeRole]) {
- if (isDir) {
- data.insert(sharedValue("size"), QVariant());
- } else {
- data.insert(sharedValue("size"), item.size());
- }
+ if (m_requestRole[SizeRole] && !isDir) {
+ data.insert(sharedValue("size"), item.size());
}
if (m_requestRole[DateRole]) {
@@ -1347,17 +1342,15 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item,
data.insert(sharedValue("path"), path);
}
- if (m_requestRole[IsExpandableRole]) {
- data.insert(sharedValue("isExpandable"), item.isDir());
+ if (m_requestRole[IsExpandableRole] && isDir) {
+ data.insert(sharedValue("isExpandable"), true);
}
if (m_requestRole[ExpandedParentsCountRole]) {
- int level = 0;
if (parent) {
- level = parent->values["expandedParentsCount"].toInt() + 1;
+ const int level = parent->values["expandedParentsCount"].toInt() + 1;
+ data.insert(sharedValue("expandedParentsCount"), level);
}
-
- data.insert(sharedValue("expandedParentsCount"), level);
}
if (item.isMimeTypeKnown()) {
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index 621cd81cc..2a89004c6 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -791,7 +791,6 @@ void KStandardItemListWidget::updateExpansionArea()
{
if (m_supportsItemExpanding) {
const QHash<QByteArray, QVariant> values = data();
- Q_ASSERT(values.contains("expandedParentsCount"));
const int expandedParentsCount = values.value("expandedParentsCount", 0).toInt();
if (expandedParentsCount >= 0) {
const qreal widgetHeight = size().height();