void ProcessDirectoryJob::computePinState(PinState parentState)
{
_pinState = parentState;
- if (_queryLocal != ParentDontExist) {
+ if (_queryLocal != ParentDontExist && QFileInfo::exists(_discoveryData->_localDir + _currentFolder._local)) {
if (auto state = _discoveryData->_syncOptions._vfs->pinState(_currentFolder._local)) // ouch! pin local or original?
_pinState = *state;
}
if (propagator()->_abortRequested)
return;
+ auto &vfs = propagator()->syncOptions()._vfs;
const auto previousNameInDb = propagator()->adjustRenamedPath(_item->_file);
const auto existingFile = propagator()->fullLocalPath(propagator()->adjustRenamedPath(_item->_file));
const auto targetFile = propagator()->fullLocalPath(_item->_renameTarget);
const auto fileAlreadyMoved = !QFileInfo::exists(propagator()->fullLocalPath(_item->_originalFile));
+ auto pinState = OCC::PinState::Unspecified;
+ if (!fileAlreadyMoved) {
+ auto pinStateResult = vfs->pinState(propagator()->adjustRenamedPath(_item->_file));
+ if (pinStateResult) {
+ pinState = pinStateResult.get();
+ }
+ }
// if the file is a file underneath a moved dir, the _item->file is equal
// to _item->renameTarget and the file is not moved as a result.
return;
}
- auto &vfs = propagator()->syncOptions()._vfs;
- auto pinState = vfs->pinState(_item->_renameTarget);
- if (!vfs->setPinState(_item->_renameTarget, PinState::Inherited)) {
- qCWarning(lcPropagateLocalRename) << "Could not set pin state of" << _item->_renameTarget << "to inherited";
+ if (pinState != OCC::PinState::Unspecified && !vfs->setPinState(_item->_renameTarget, pinState)) {
+ qCWarning(lcPropagateLocalRename) << "Could not set pin state of" << _item->_renameTarget << "to old value" << pinState;
+ done(SyncFileItem::NormalError, tr("Error setting pin state"));
+ return;
}
const auto oldFile = _item->_file;
return;
}
}
- if (pinState && *pinState != PinState::Inherited
- && !vfs->setPinState(_item->_renameTarget, *pinState)) {
- done(SyncFileItem::NormalError, tr("Error setting pin state"));
- return;
- }
propagator()->_journal->commit("localRename");