From 6d034bda825c506bede7bf0229f47095222edfc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 5 Dec 2017 09:52:04 +0100 Subject: GH-2059 fix instance directory not being created on first launch --- api/logic/FolderInstanceProvider.cpp | 9 +++++---- api/logic/InstanceList.cpp | 5 ++--- api/logic/InstanceList.h | 6 +----- 3 files changed, 8 insertions(+), 12 deletions(-) (limited to 'api') 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 m_updatedProviders; - QString m_instDir; QList m_instances; QSet m_groups; - SettingsObjectPtr m_globalSettings; QVector> m_providers; }; -- cgit v1.2.3