aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2019-05-21 14:43:19 +0200
committerTim Jenssen <tim.jenssen@qt.io>2019-05-21 14:28:44 +0000
commit7eb29b650553548c75218fafb9990d1d034aba32 (patch)
tree68dc2fc6f8776eb28a9a01c293e7143ad779df56
parenta345fbb5b136fd91d6a58bffcdb314179613a819 (diff)
QmlDesigner: Fix regression
This regression was caused by an optimization. I added updatePath() to avoid similar issues in the future. Task-number: QDS-690 Change-Id: I0c1c67a3d35a6944da494651db34c746561a1e26 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp71
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h1
2 files changed, 39 insertions, 33 deletions
diff --git a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp
index 62f7f315ce..51dc03d94f 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp
@@ -79,7 +79,7 @@ CustomFileSystemModel::CustomFileSystemModel(QObject *parent) : QAbstractListMod
m_fileSystemModel->setIconProvider(new ItemLibraryFileIconProvider());
connect(m_fileSystemWatcher, &Utils::FileSystemWatcher::directoryChanged, [this] {
- setRootPath(m_fileSystemModel->rootPath());
+ updatePath(m_fileSystemModel->rootPath());
});
}
@@ -120,38 +120,7 @@ QModelIndex CustomFileSystemModel::setRootPath(const QString &newPath)
if (m_fileSystemModel->rootPath() == newPath)
return QAbstractListModel::index(0, 0);
- beginResetModel();
- m_fileSystemModel->setRootPath(newPath);
-
- m_fileSystemWatcher->removeDirectories(m_fileSystemWatcher->directories());
-
- m_fileSystemWatcher->addDirectory(newPath, Utils::FileSystemWatcher::WatchAllChanges);
-
- QStringList nameFilterList;
-
- const QString searchFilter = m_searchFilter;
-
- if (searchFilter.contains(QLatin1Char('.'))) {
- nameFilterList.append(QString(QStringLiteral("*%1*")).arg(searchFilter));
- } else {
- foreach (const QByteArray &extension, QImageReader::supportedImageFormats()) {
- nameFilterList.append(QString(QStringLiteral("*%1*.%2")).arg(searchFilter, QString::fromUtf8(extension)));
- }
- }
-
- m_files.clear();
-
- QDirIterator fileIterator(newPath, nameFilterList, QDir::Files, QDirIterator::Subdirectories);
-
- while (fileIterator.hasNext())
- m_files.append(filterMetaIcons(fileIterator.next()));
-
- QDirIterator dirIterator(newPath, {}, QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
- while (dirIterator.hasNext())
- m_fileSystemWatcher->addDirectory(dirIterator.next(), Utils::FileSystemWatcher::WatchAllChanges);
-
- endResetModel();
- return QAbstractListModel::index(0, 0);
+ return updatePath(newPath);
}
QVariant CustomFileSystemModel::data(const QModelIndex &index, int role) const
@@ -210,6 +179,42 @@ void CustomFileSystemModel::setSearchFilter(const QString &nameFilterList)
setRootPath(m_fileSystemModel->rootPath());
}
+QModelIndex CustomFileSystemModel::updatePath(const QString &newPath)
+{
+ beginResetModel();
+ m_fileSystemModel->setRootPath(newPath);
+
+ m_fileSystemWatcher->removeDirectories(m_fileSystemWatcher->directories());
+
+ m_fileSystemWatcher->addDirectory(newPath, Utils::FileSystemWatcher::WatchAllChanges);
+
+ QStringList nameFilterList;
+
+ const QString searchFilter = m_searchFilter;
+
+ if (searchFilter.contains(QLatin1Char('.'))) {
+ nameFilterList.append(QString(QStringLiteral("*%1*")).arg(searchFilter));
+ } else {
+ foreach (const QByteArray &extension, QImageReader::supportedImageFormats()) {
+ nameFilterList.append(QString(QStringLiteral("*%1*.%2")).arg(searchFilter, QString::fromUtf8(extension)));
+ }
+ }
+
+ m_files.clear();
+
+ QDirIterator fileIterator(newPath, nameFilterList, QDir::Files, QDirIterator::Subdirectories);
+
+ while (fileIterator.hasNext())
+ m_files.append(filterMetaIcons(fileIterator.next()));
+
+ QDirIterator dirIterator(newPath, {}, QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);
+ while (dirIterator.hasNext())
+ m_fileSystemWatcher->addDirectory(dirIterator.next(), Utils::FileSystemWatcher::WatchAllChanges);
+
+ endResetModel();
+ return QAbstractListModel::index(0, 0);
+}
+
QModelIndex CustomFileSystemModel::fileSystemModelIndex(const QModelIndex &index) const
{
const int row = index.row();
diff --git a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h
index 7ad76ace1c..69a0e4b131 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h
+++ b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.h
@@ -61,6 +61,7 @@ public:
void setSearchFilter(const QString &nameFilterList);
private:
+ QModelIndex updatePath(const QString &newPath);
QModelIndex fileSystemModelIndex(const QModelIndex &index) const;
QFileSystemModel *m_fileSystemModel;