diff --git a/src/core/copyjob.cpp b/src/core/copyjob.cpp --- a/src/core/copyjob.cpp +++ b/src/core/copyjob.cpp @@ -1137,10 +1137,7 @@ const UDSEntry entry = ((KIO::StatJob *)job)->statResult(); - // Its modification time: - const QDateTime destmtime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1)); - const QDateTime destctime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1)); - + QDateTime destmtime, destctime; const KIO::filesize_t destsize = entry.numberValue(KIO::UDSEntry::UDS_SIZE); const QString linkDest = entry.stringValue(KIO::UDSEntry::UDS_LINK_DEST); @@ -1156,7 +1153,9 @@ (*it).uSource.adjusted(QUrl::StripTrailingSlash).path() == linkDest)) { options |= RenameDialog_OverwriteItself; } else { - options |= RenameDialog_Overwrite; + options |= RenameDialog_Overwrite; + destmtime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1), Qt::UTC); + destctime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1), Qt::UTC); } } @@ -1409,8 +1408,7 @@ // Its modification time: const UDSEntry entry = static_cast(job)->statResult(); - const QDateTime destmtime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1)); - const QDateTime destctime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1)); + QDateTime destmtime, destctime; const KIO::filesize_t destsize = entry.numberValue(KIO::UDSEntry::UDS_SIZE); const QString linkDest = entry.stringValue(KIO::UDSEntry::UDS_LINK_DEST); @@ -1428,6 +1426,9 @@ options = RenameDialog_OverwriteItself; } else { options = RenameDialog_Overwrite; + // These timestamps are used only when RenameDialog_Overwrite is set. + destmtime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1), Qt::UTC); + destctime = QDateTime::fromMSecsSinceEpoch(1000 * entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME, -1), Qt::UTC); } isDir = false; } diff --git a/src/widgets/fileundomanager.cpp b/src/widgets/fileundomanager.cpp --- a/src/widgets/fileundomanager.cpp +++ b/src/widgets/fileundomanager.cpp @@ -65,7 +65,7 @@ stream >> op.m_valid >> type >> op.m_renamed >> op.m_src >> op.m_dst >> op.m_target >> mtime; op.m_type = static_cast(type); - op.m_mtime = QDateTime::fromMSecsSinceEpoch(1000 * mtime); + op.m_mtime = QDateTime::fromMSecsSinceEpoch(1000 * mtime, Qt::UTC); return stream; } @@ -484,7 +484,7 @@ BasicOperation op = m_current.m_opStack.last(); //qDebug() << "stat result for " << op.m_dst; KIO::StatJob *statJob = static_cast(job); - const QDateTime mtime = QDateTime::fromMSecsSinceEpoch(1000 * statJob->statResult().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1)); + const QDateTime mtime = QDateTime::fromMSecsSinceEpoch(1000 * statJob->statResult().numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME, -1), Qt::UTC); if (mtime != op.m_mtime) { //qDebug() << op.m_dst << " was modified after being copied!"; QDateTime srcTime = op.m_mtime.toLocalTime();