diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 81c63dc56..dd246f109 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -856,14 +856,29 @@ void Folder::appendPathToSelectiveSyncList(const QString &path, const SyncJourna } } +void Folder::removePathFromSelectiveSyncList(const QString &path, const SyncJournalDb::SelectiveSyncListType listType) +{ + const auto folderPath = trailingSlashPath(path); + const auto journal = journalDb(); + auto ok = false; + auto list = journal->getSelectiveSyncList(listType, &ok); + + if (ok) { + list.removeAll(folderPath); + journal->setSelectiveSyncList(listType, list); + } +} + void Folder::whitelistPath(const QString &path) { appendPathToSelectiveSyncList(path, SyncJournalDb::SelectiveSyncWhiteList); + removePathFromSelectiveSyncList(path, SyncJournalDb::SelectiveSyncUndecidedList); } void Folder::blacklistPath(const QString &path) { appendPathToSelectiveSyncList(path, SyncJournalDb::SelectiveSyncBlackList); + removePathFromSelectiveSyncList(path, SyncJournalDb::SelectiveSyncUndecidedList); } bool Folder::isFileExcludedAbsolute(const QString &fullPath) const diff --git a/src/gui/folder.h b/src/gui/folder.h index 5ffbde52d..821f90716 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -472,6 +472,7 @@ private: void correctPlaceholderFiles(); void appendPathToSelectiveSyncList(const QString &path, const SyncJournalDb::SelectiveSyncListType listType); + void removePathFromSelectiveSyncList(const QString &path, const SyncJournalDb::SelectiveSyncListType listType); AccountStatePtr _accountState; FolderDefinition _definition;