diff --git a/changelog/unreleased/9969 b/changelog/unreleased/9969 new file mode 100644 index 00000000000..fa7afbfde4e --- /dev/null +++ b/changelog/unreleased/9969 @@ -0,0 +1,5 @@ +Bugfix: Run next scheduled sync after a folder was removed + +We fixed a bug where we did not start another sync when a folder that was currently syncing was removed. + +https://github.com/owncloud/client/issues/9969 diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index c5457ae9684..89491f6e2cd 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -160,7 +160,7 @@ FolderMan::FolderMan(QObject *parent) connect(&_startScheduledSyncTimer, &QTimer::timeout, this, &FolderMan::slotStartScheduledFolderSync); - _timeScheduler.setInterval(5000); + _timeScheduler.setInterval(5s); _timeScheduler.setSingleShot(false); connect(&_timeScheduler, &QTimer::timeout, this, &FolderMan::slotScheduleFolderByTime); @@ -1206,21 +1206,14 @@ void FolderMan::removeFolder(Folder *f) f->removeFromSettings(); unloadFolder(f); - if (currentlyRunning) { - // We want to schedule the next folder once this is done - connect(f, &Folder::syncFinished, - this, &FolderMan::slotFolderSyncFinished); - // Let the folder delete itself when done. - connect(f, &Folder::syncFinished, f, &QObject::deleteLater); - } else { - f->deleteLater(); - } + f->deleteLater(); #ifdef Q_OS_WIN _navigationPaneHelper.scheduleUpdateCloudStorageRegistry(); #endif Q_EMIT folderRemoved(f); emit folderListChanged(_folderMap); + QTimer::singleShot(0, this, &FolderMan::startScheduledSyncSoon); } QString FolderMan::getBackupName(QString fullPathName) const diff --git a/src/gui/folderman.h b/src/gui/folderman.h index 331954edef5..7fef08f5d92 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -354,7 +354,7 @@ private slots: QSet _disabledFolders; QMap _folderMap; QString _folderConfigPath; - Folder *_currentSyncFolder; + QPointer _currentSyncFolder; QPointer _lastSyncFolder; bool _syncEnabled;