qCInfo(lcDisco) << "Not a move, no item in db with inode" << localEntry.inode;
return false;
}
+
+ if (base._isE2eEncrypted || isInsideEncryptedTree()) {
+ return false;
+ }
+
if (base.isDirectory() != item->isDirectory()) {
qCInfo(lcDisco) << "Not a move, types don't match" << base._type << item->_type << localEntry.type;
return false;
}
if (recurse) {
auto job = new ProcessDirectoryJob(path, item, recurseQueryLocal, recurseQueryServer, this);
+ job->setInsideEncryptedTree(isInsideEncryptedTree() || item->_isEncrypted);
if (removed) {
job->setParent(_discoveryData);
_discoveryData->_queuedDeletedDirectories[path._original] = job;
/** Start up to nbJobs, return the number of job started; emit finished() when done */
int processSubJobs(int nbJobs);
+ void setInsideEncryptedTree(bool isInsideEncryptedTree)
+ {
+ _isInsideEncryptedTree = isInsideEncryptedTree;
+ }
+
+ bool isInsideEncryptedTree() const
+ {
+ return _isInsideEncryptedTree;
+ }
+
SyncFileItemPtr _dirItem;
private:
bool _childModified = false; // the directory contains modified item what would prevent deletion
bool _childIgnored = false; // The directory contains ignored item that would prevent deletion
PinState _pinState = PinState::Unspecified; // The directory's pin-state, see computePinState()
+ bool _isInsideEncryptedTree = false; // this directory is encrypted or is within the tree of directories with root directory encrypted
signals:
void finished();