diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-12-05 09:52:04 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-12-05 09:52:04 +0100 |
commit | 6d034bda825c506bede7bf0229f47095222edfc2 (patch) | |
tree | e305701ed2eb2afb080ade007d3fe1668f1cfa4e /api/logic | |
parent | 44475350ebfed97f6b0cb14c1e62c8ef67fb9a31 (diff) | |
download | MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar.gz MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar.lz MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.tar.xz MultiMC-6d034bda825c506bede7bf0229f47095222edfc2.zip |
GH-2059 fix instance directory not being created on first launch
Diffstat (limited to 'api/logic')
-rw-r--r-- | api/logic/FolderInstanceProvider.cpp | 9 | ||||
-rw-r--r-- | api/logic/InstanceList.cpp | 5 | ||||
-rw-r--r-- | api/logic/InstanceList.h | 6 |
3 files changed, 8 insertions, 12 deletions
diff --git a/api/logic/FolderInstanceProvider.cpp b/api/logic/FolderInstanceProvider.cpp index 296b366e..74ac456a 100644 --- a/api/logic/FolderInstanceProvider.cpp +++ b/api/logic/FolderInstanceProvider.cpp @@ -34,12 +34,13 @@ struct WatchLock FolderInstanceProvider::FolderInstanceProvider(SettingsObjectPtr settings, const QString& instDir) : BaseInstanceProvider(settings) { - // Normalize path - m_instDir = QDir(instDir).canonicalPath(); - if (!QDir::current().exists(m_instDir)) + // Create aand normalize path + if (!QDir::current().exists(instDir)) { - QDir::current().mkpath(m_instDir); + QDir::current().mkpath(instDir); } + // NOTE: canonicalPath requires the path to exist. Do not move this above the creation block! + m_instDir = QDir(instDir).canonicalPath(); m_watcher = new QFileSystemWatcher(this); connect(m_watcher, &QFileSystemWatcher::directoryChanged, this, &FolderInstanceProvider::instanceDirContentsChanged); m_watcher->addPath(m_instDir); diff --git a/api/logic/InstanceList.cpp b/api/logic/InstanceList.cpp index 96251b60..d5b71d50 100644 --- a/api/logic/InstanceList.cpp +++ b/api/logic/InstanceList.cpp @@ -26,10 +26,9 @@ #include "FolderInstanceProvider.h" -InstanceList::InstanceList(SettingsObjectPtr globalSettings, const QString &instDir, QObject *parent) - : QAbstractListModel(parent), m_instDir(instDir) +InstanceList::InstanceList(QObject *parent) + : QAbstractListModel(parent) { - m_globalSettings = globalSettings; resumeWatch(); } diff --git a/api/logic/InstanceList.h b/api/logic/InstanceList.h index 89be10de..dceca043 100644 --- a/api/logic/InstanceList.h +++ b/api/logic/InstanceList.h @@ -27,16 +27,14 @@ #include "QObjectPtr.h" -class QFileSystemWatcher; class BaseInstance; -class QDir; class MULTIMC_LOGIC_EXPORT InstanceList : public QAbstractListModel { Q_OBJECT public: - explicit InstanceList(SettingsObjectPtr globalSettings, const QString &instDir, QObject *parent = 0); + explicit InstanceList(QObject *parent = 0); virtual ~InstanceList(); public: @@ -101,9 +99,7 @@ private: protected: int m_watchLevel = 0; QSet<BaseInstanceProvider *> m_updatedProviders; - QString m_instDir; QList<InstancePtr> m_instances; QSet<QString> m_groups; - SettingsObjectPtr m_globalSettings; QVector<shared_qobject_ptr<BaseInstanceProvider>> m_providers; }; |