diff --git a/wallpapers/image/image.cpp b/wallpapers/image/image.cpp --- a/wallpapers/image/image.cpp +++ b/wallpapers/image/image.cpp @@ -548,10 +548,12 @@ return; } } else { - QString wallpaperPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("wallpapers/") + url.path(); + QDir wallpaperDir(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/wallpapers/"); + const QString wallpaperPath = wallpaperDir.absoluteFilePath(url.fileName()); + + if (wallpaperDir.mkpath(wallpaperDir.absolutePath()) && !url.fileName().isEmpty()) { + KIO::FileCopyJob *job = KIO::file_copy(url, QUrl::fromLocalFile(wallpaperPath), -1, KIO::HideProgressInfo | KIO::Overwrite); - if (!wallpaperPath.isEmpty()) { - KIO::FileCopyJob *job = KIO::file_copy(url, QUrl(wallpaperPath), -1, KIO::HideProgressInfo); if (setAsCurrent) { connect(job, &KJob::result, this, &Image::setWallpaperRetrieved); } else {