mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-17 15:31:20 +00:00
Add only canonical paths to dirWatcher
Summary: KDirWatch only works correctly with canonical paths, i.e. symbolic links resolved. Test Plan: 1. Create dirs: $ mkdir test1 $ mkdir test1/subdir $ ln -s test1 test2 2. Start dolphin, navigate to test2/subdir, then in terminal: $ echo test > test2/subdir/test Without the patch, test2/subdir/test won't be shown automatically, only after reload (F5). With the patch applied, test2/subdir/test will be shown automatically. 3. Restart dolphin, navigate to test2/subdir, then in terminal: $ echo test >> test2/subdir/test Without the patch, the increased size of test2/subdir/test won't be shown automatically, only after reload (F5). With the patch applied, it will be shown automatically. 4. Restart dolphin, navigate to test2/subdir, then in terminal: $ rm test2/subdir/test Without the patch, test2/subdir/test stays visible, will only disappear after reload (F5). With the patch applied, it will disappear automatically. Reviewers: dfaure, #dolphin, elvisangelaccio Reviewed By: dfaure, #dolphin, elvisangelaccio Subscribers: ngraham, elvisangelaccio, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D25732
This commit is contained in:
parent
09e215be46
commit
17e127edcd
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include <KDirWatch>
|
#include <KDirWatch>
|
||||||
|
|
||||||
|
#include <QFileInfo>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
|
||||||
KDirectoryContentsCounter::KDirectoryContentsCounter(KFileItemModel* model, QObject* parent) :
|
KDirectoryContentsCounter::KDirectoryContentsCounter(KFileItemModel* model, QObject* parent) :
|
||||||
|
@ -85,9 +86,11 @@ void KDirectoryContentsCounter::addDirectory(const QString& path)
|
||||||
|
|
||||||
int KDirectoryContentsCounter::countDirectoryContentsSynchronously(const QString& path)
|
int KDirectoryContentsCounter::countDirectoryContentsSynchronously(const QString& path)
|
||||||
{
|
{
|
||||||
if (!m_dirWatcher->contains(path)) {
|
const QString resolvedPath = QFileInfo(path).canonicalFilePath();
|
||||||
m_dirWatcher->addDir(path);
|
|
||||||
m_watchedDirs.insert(path);
|
if (!m_dirWatcher->contains(resolvedPath)) {
|
||||||
|
m_dirWatcher->addDir(resolvedPath);
|
||||||
|
m_watchedDirs.insert(resolvedPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
KDirectoryContentsCounterWorker::Options options;
|
KDirectoryContentsCounterWorker::Options options;
|
||||||
|
@ -107,9 +110,11 @@ void KDirectoryContentsCounter::slotResult(const QString& path, int count)
|
||||||
{
|
{
|
||||||
m_workerIsBusy = false;
|
m_workerIsBusy = false;
|
||||||
|
|
||||||
if (!m_dirWatcher->contains(path)) {
|
const QString resolvedPath = QFileInfo(path).canonicalFilePath();
|
||||||
m_dirWatcher->addDir(path);
|
|
||||||
m_watchedDirs.insert(path);
|
if (!m_dirWatcher->contains(resolvedPath)) {
|
||||||
|
m_dirWatcher->addDir(resolvedPath);
|
||||||
|
m_watchedDirs.insert(resolvedPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_queue.isEmpty()) {
|
if (!m_queue.isEmpty()) {
|
||||||
|
|
Loading…
Reference in a new issue