diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 993dcb69e1..3a33d45427 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -669,8 +669,10 @@ void Folder::setVirtualFilesEnabled(bool enabled) _definition.virtualFilesMode = newMode; startVfs(); - if (newMode != Vfs::Off) + if (newMode != Vfs::Off) { _saveInFoldersWithPlaceholders = true; + SyncEngine::switchToVirtualFiles(path(), _journal, *_vfs); + } saveToSettings(); } } diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 9813e63cb6..47f24f832c 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -1019,6 +1019,16 @@ void SyncEngine::wipeVirtualFiles(const QString &localPath, SyncJournalDb &journ // But hydrated placeholders may still be around. } +void SyncEngine::switchToVirtualFiles(const QString &localPath, SyncJournalDb &journal, Vfs &vfs) +{ + qCInfo(lcEngine) << "Convert to virtual files inside" << localPath; + journal.getFilesBelowPath({}, [&](const SyncJournalFileRecord &rec) { + SyncFileItem item; + QString localFile = localPath + rec.path(); + vfs.convertToPlaceholder(localFile, item, localFile); + }); +} + void SyncEngine::abort() { if (_propagator) diff --git a/src/libsync/syncengine.h b/src/libsync/syncengine.h index 991ef48202..9d0bada92d 100644 --- a/src/libsync/syncengine.h +++ b/src/libsync/syncengine.h @@ -134,6 +134,8 @@ public: */ static void wipeVirtualFiles(const QString &localPath, SyncJournalDb &journal, Vfs &vfs); + static void switchToVirtualFiles(const QString &localPath, SyncJournalDb &journal, Vfs &vfs); + auto getPropagator() { return _propagator; } // for the test signals: