mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Merge remote-tracking branch 'origin/KDE/4.10'
This commit is contained in:
commit
04e825d022
|
@ -1327,10 +1327,6 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item,
|
|||
data.insert("path", path);
|
||||
}
|
||||
|
||||
if (m_requestRole[IsExpandedRole]) {
|
||||
data.insert("isExpanded", false);
|
||||
}
|
||||
|
||||
if (m_requestRole[IsExpandableRole]) {
|
||||
data.insert("isExpandable", item.isDir() && item.url() == item.targetUrl());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -78,6 +78,7 @@ private slots:
|
|||
void testIndexForKeyboardSearch();
|
||||
void testNameFilter();
|
||||
void testEmptyPath();
|
||||
void testRefreshExpandedItem();
|
||||
void testRemoveHiddenItems();
|
||||
void collapseParentOfHiddenItems();
|
||||
void removeParentOfHiddenItems();
|
||||
|
@ -856,6 +857,39 @@ void KFileItemModelTest::testEmptyPath()
|
|||
m_model->slotCompleted();
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that the 'isExpanded' state of folders does not change when the
|
||||
* 'refreshItems' signal is received, see https://bugs.kde.org/show_bug.cgi?id=299675.
|
||||
*/
|
||||
void KFileItemModelTest::testRefreshExpandedItem()
|
||||
{
|
||||
QSet<QByteArray> modelRoles = m_model->roles();
|
||||
modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
|
||||
m_model->setRoles(modelRoles);
|
||||
|
||||
QStringList files;
|
||||
files << "a/1" << "a/2" << "3" << "4";
|
||||
m_testDir->createFiles(files);
|
||||
|
||||
m_model->loadDirectory(m_testDir->url());
|
||||
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||
QCOMPARE(m_model->count(), 3); // "a/", "3", "4"
|
||||
|
||||
m_model->setExpanded(0, true);
|
||||
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||
QCOMPARE(m_model->count(), 5); // "a/", "a/1", "a/2", "3", "4"
|
||||
QVERIFY(m_model->isExpanded(0));
|
||||
|
||||
QSignalSpy spyItemsChanged(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)));
|
||||
|
||||
const KFileItem item = m_model->fileItem(0);
|
||||
m_model->slotRefreshItems(QList<QPair<KFileItem, KFileItem> >() << qMakePair(item, item));
|
||||
QVERIFY(!spyItemsChanged.isEmpty());
|
||||
|
||||
QCOMPARE(m_model->count(), 5); // "a/", "a/1", "a/2", "3", "4"
|
||||
QVERIFY(m_model->isExpanded(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that removing hidden files and folders from the model does not
|
||||
* result in a crash, see https://bugs.kde.org/show_bug.cgi?id=314046
|
||||
|
|
Loading…
Reference in a new issue