kfile: add the leading directory to recent directories for files and URLs from KFileWidgetPrivate::addToRecent()

continuation from:
978cf7f0dd

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-08-27 01:55:16 +03:00
parent eef26737e5
commit 3e01296579

View file

@ -2399,6 +2399,12 @@ void KFileWidgetPrivate::addToRecent()
QStringList::ConstIterator it = files.begin(); QStringList::ConstIterator it = files.begin();
for ( ; it != files.end() && atmost > 0; ++it ) { for ( ; it != files.end() && atmost > 0; ++it ) {
KRecentDocument::add( *it ); KRecentDocument::add( *it );
if (!fileClass.isEmpty()) {
const QString itdir = KUrl(*it).directory();
if (!itdir.isEmpty()) {
KRecentDirs::add(fileClass, itdir);
}
}
atmost--; atmost--;
} }
} else { } else {
@ -2408,6 +2414,12 @@ void KFileWidgetPrivate::addToRecent()
for ( ; it != urls.end() && atmost > 0; ++it ) { for ( ; it != urls.end() && atmost > 0; ++it ) {
if ( (*it).isValid() ) { if ( (*it).isValid() ) {
KRecentDocument::add( *it ); KRecentDocument::add( *it );
if (!fileClass.isEmpty()) {
const QString itdir = it->directory();
if (!itdir.isEmpty()) {
KRecentDirs::add(fileClass, itdir);
}
}
atmost--; atmost--;
} }
} }
@ -2516,7 +2528,7 @@ void KFileWidgetPrivate::_k_toggleBookmarks(bool show)
KUrl KFileWidget::getStartUrl( const KUrl& startDir, KUrl KFileWidget::getStartUrl( const KUrl& startDir,
QString& recentDirClass ) QString& recentDirClass )
{ {
QString fileName; // result discarded QString fileName; // result discarded
return getStartUrl( startDir, recentDirClass, fileName ); return getStartUrl( startDir, recentDirClass, fileName );
} }
@ -2548,12 +2560,12 @@ KUrl KFileWidget::getStartUrl( const KUrl& startDir,
QString keyword; QString keyword;
QString urlDir = startDir.directory(); QString urlDir = startDir.directory();
QString urlFile = startDir.fileName(); QString urlFile = startDir.fileName();
if ( urlDir == "/" ) // '1'..'4' above if ( urlDir == "/" ) // '1'..'4' above
{ {
keyword = urlFile; keyword = urlFile;
fileName.clear(); fileName.clear();
} }
else // '5' or '6' above else // '5' or '6' above
{ {
keyword = urlDir.mid( 1 ); keyword = urlDir.mid( 1 );
fileName = urlFile; fileName = urlFile;
@ -2566,7 +2578,7 @@ KUrl KFileWidget::getStartUrl( const KUrl& startDir,
ret = KUrl( KRecentDirs::dir(recentDirClass) ); ret = KUrl( KRecentDirs::dir(recentDirClass) );
} }
else // not special "kfiledialog" URL else // not special "kfiledialog" URL
{ {
// "foo.png" only gives us a file name, the default start dir will be used. // "foo.png" only gives us a file name, the default start dir will be used.
// "file:foo.png" (from KHTML/webkit, due to fromPath()) means the same // "file:foo.png" (from KHTML/webkit, due to fromPath()) means the same
@ -2578,14 +2590,14 @@ KUrl KFileWidget::getStartUrl( const KUrl& startDir,
if (!startDir.directory().isEmpty() || if (!startDir.directory().isEmpty() ||
startDir.fileName().isEmpty()) { startDir.fileName().isEmpty()) {
// can use start directory // can use start directory
ret = startDir; // will be checked by stat later ret = startDir; // will be checked by stat later
// If we won't be able to list it (e.g. http), then use default // If we won't be able to list it (e.g. http), then use default
if ( !KProtocolManager::supportsListing( ret ) ) { if ( !KProtocolManager::supportsListing( ret ) ) {
useDefaultStartDir = true; useDefaultStartDir = true;
fileName = startDir.fileName(); fileName = startDir.fileName();
} }
} }
else // file name only else // file name only
{ {
fileName = startDir.fileName(); fileName = startDir.fileName();
useDefaultStartDir = true; useDefaultStartDir = true;