SVN commit 944994 by dfaure: Don't make the source dir "disappear" (visually, it was still there on disk) if there was an error while removing one of its subdir (e.g. wrong encoding). This fix will be in 4.2.2 (just in time). BUG: 187868 This is a more refined version of the fix for #118593 (retested, still works). CCBUG: 118593 M +4 -4 copyjob.cpp --- branches/KDE/4.2/kdelibs/kio/kio/copyjob.cpp #944993:944994 @@ -153,7 +153,7 @@ QList dirs; KUrl::List dirsToRemove; KUrl::List m_srcList; - KUrl::List m_successSrcList; + KUrl::List m_successSrcList; // Entries in m_srcList that have successfully been moved KUrl::List::const_iterator m_currentStatSrc; bool m_bCurrentSrcIsDir; bool m_bCurrentOperationIsLink; @@ -853,7 +853,6 @@ { //this is required for the undo feature emit q->copyingDone( q, (*it).uSource, (*it).uDest, (*it).mtime, true, false ); - m_successSrcList.append((*it).uSource); m_directoriesCopied.append( *it ); dirs.erase( it ); } @@ -1574,11 +1573,12 @@ void CopyJobPrivate::slotResultDeletingDirs( KJob * job ) { Q_Q(CopyJob); - if (job->error()) - { + if (job->error()) { // Couldn't remove directory. Well, perhaps it's not empty // because the user pressed Skip for a given file in it. // Let's not display "Could not remove dir ..." for each of those dir ! + } else { + m_successSrcList.append(static_cast(job)->url()); } q->removeSubjob( job ); assert( !q->hasSubjobs() );