diff --git a/src/lib/utility/file/FilePath.cpp b/src/lib/utility/file/FilePath.cpp index 2bf4c7d5..543a9b42 100644 --- a/src/lib/utility/file/FilePath.cpp +++ b/src/lib/utility/file/FilePath.cpp @@ -191,6 +191,11 @@ FilePath FilePath::relativeTo(const FilePath& other) const r /= *itA; } + if (r.empty()) + { + r = "./"; + } + return r; } diff --git a/src/lib_gui/qt/element/QtDirectoryListBox.cpp b/src/lib_gui/qt/element/QtDirectoryListBox.cpp index 0352410e..8f8a3cdb 100644 --- a/src/lib_gui/qt/element/QtDirectoryListBox.cpp +++ b/src/lib_gui/qt/element/QtDirectoryListBox.cpp @@ -270,12 +270,17 @@ void QtDirectoryListBox::setStringList(const std::vector& list) { clear(); + FilePath root = m_relativeRootDirectory; + m_relativeRootDirectory = FilePath(); + for (const std::string& str : list) { QtListItemWidget* widget = addListBoxItem(); widget->setText(QString::fromStdString(str)); } + m_relativeRootDirectory = root; + QTimer::singleShot(1, this, SLOT(resize())); } diff --git a/src/test/FilePathTestSuite.h b/src/test/FilePathTestSuite.h index 30d468a2..24c4b59d 100644 --- a/src/test/FilePathTestSuite.h +++ b/src/test/FilePathTestSuite.h @@ -99,6 +99,13 @@ public: TS_ASSERT_EQUALS(pathA.relativeTo(pathB).str(), "../a.cpp"); } + void test_file_path_relative_to_same_directory() + { + FilePath pathA("data/FilePathTestSuite/test"); + + TS_ASSERT_EQUALS(pathA.relativeTo(pathA).str(), "./"); + } + void test_file_path_file_name() { FilePath path("data/FilePathTestSuite/abc.h");