Stop listing children of collapsed folders

Before this patch, KDirLister would continue listing any children of
collapsed folders, even though the children themselves were removed
from the model. This could lead to new items being inserted as
top-level items at some later point, because no parent could be found
for them. This inconsistent model state could lead to a crash later on.

Many thanks to Martin Koller for helping to debug this problem!

BUG: 332102
REVIEW: 118055
FIXED-IN: 4.13.2
This commit is contained in:
Frank Reininghaus 2014-05-13 19:06:42 +02:00
parent e0aec6f923
commit 4642301ea0

View file

@ -512,7 +512,9 @@ bool KFileItemModel::setExpanded(int index, bool expanded)
ItemData* itemData = m_itemData.at(childIndex);
if (itemData->values.value("isExpanded").toBool()) {
const KUrl targetUrl = itemData->item.targetUrl();
const KUrl url = itemData->item.url();
m_expandedDirs.remove(targetUrl);
m_dirLister->stop(url); // TODO: try to unit-test this, see https://bugs.kde.org/show_bug.cgi?id=332102#c11
expandedChildren.append(targetUrl);
}
++childIndex;