Skip to content

Commit

Permalink
Use absolute file paths instead of canonical paths. Fixes unpredictab…
Browse files Browse the repository at this point in the history
…le paths in relative path saved playlists.
  • Loading branch information
smithjd15 committed Jan 23, 2022
1 parent d79f837 commit 70e8fe9
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/core/commandlineoptions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ bool CommandlineOptions::Parse() {
QString value = QFile::decodeName(argv_[i]);
QFileInfo file_info(value);
if (file_info.exists())
urls_ << QUrl::fromLocalFile(file_info.canonicalFilePath());
urls_ << QUrl::fromLocalFile(file_info.absoluteFilePath());
else
urls_ << QUrl::fromUserInput(value);
}
Expand Down
8 changes: 4 additions & 4 deletions src/library/librarybackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -218,11 +218,11 @@ void LibraryBackend::UpdateTotalSongCount() {
}

void LibraryBackend::AddDirectory(const QString& path) {
QString canonical_path = QFileInfo(path).canonicalFilePath();
QString db_path = canonical_path;
QString absolute_path = QFileInfo(path).absoluteFilePath();
QString db_path = absolute_path;

if (Application::kIsPortable && Utilities::UrlOnSameDriveAsClementine(
QUrl::fromLocalFile(canonical_path))) {
QUrl::fromLocalFile(absolute_path))) {
db_path = Utilities::GetRelativePathToClementineBin(db_path);
qLog(Debug) << "db_path" << db_path;
}
Expand All @@ -239,7 +239,7 @@ void LibraryBackend::AddDirectory(const QString& path) {
if (db_->CheckErrors(q)) return;

Directory dir;
dir.path = canonical_path;
dir.path = absolute_path;
dir.id = q.lastInsertId().toInt();

emit DirectoryDiscovered(dir, SubdirectoryList());
Expand Down
2 changes: 1 addition & 1 deletion src/networkremote/incomingdataparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ void IncomingDataParser::AppendFilesToPlaylist(
QDir dir(fi_folder.absoluteFilePath());
for (const auto& file : req_append.files()) {
QFileInfo fi(dir, file.c_str());
if (fi.exists()) urls << QUrl::fromLocalFile(fi.canonicalFilePath());
if (fi.exists()) urls << QUrl::fromLocalFile(fi.absoluteFilePath());
}
if (!urls.isEmpty()) {
MimeData* data = new MimeData;
Expand Down
4 changes: 2 additions & 2 deletions src/ui/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2181,7 +2181,7 @@ void MainWindow::AddFile() {
// Convert to URLs
QList<QUrl> urls;
for (const QString& path : file_names) {
urls << QUrl::fromLocalFile(QFileInfo(path).canonicalFilePath());
urls << QUrl::fromLocalFile(QFileInfo(path).absoluteFilePath());
}

MimeData* data = new MimeData;
Expand All @@ -2205,7 +2205,7 @@ void MainWindow::AddFolder() {
// Add media
MimeData* data = new MimeData;
data->setUrls(QList<QUrl>() << QUrl::fromLocalFile(
QFileInfo(directory).canonicalFilePath()));
QFileInfo(directory).absoluteFilePath()));
AddToPlaylist(data);
}

Expand Down
2 changes: 1 addition & 1 deletion src/widgets/fileviewlist.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ QList<QUrl> FileViewList::UrlListFromSelection() const {
if (index.column() == 0)
urls << QUrl::fromLocalFile(static_cast<QFileSystemModel*>(model())
->fileInfo(index)
.canonicalFilePath());
.absoluteFilePath());
}
return urls;
}
Expand Down
2 changes: 1 addition & 1 deletion tests/librarybackend_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ TEST_F(LibraryBackendTest, AddDirectory) {
// Check the signal was emitted correctly
ASSERT_EQ(1, spy.count());
Directory dir = spy[0][0].value<Directory>();
EXPECT_EQ(QFileInfo("/tmp").canonicalFilePath(), dir.path);
EXPECT_EQ(QFileInfo("/tmp").absoluteFilePath(), dir.path);
EXPECT_EQ(1, dir.id);
EXPECT_EQ(0, spy[0][1].value<SubdirectoryList>().size());
}
Expand Down

0 comments on commit 70e8fe9

Please sign in to comment.