diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index 2b00a59e85a..b6d39257591 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -460,8 +460,8 @@ QmakeParserPriFileNode::QmakeParserPriFileNode(QmakeProject *project, m_projectDir(filePath.toFileInfo().absolutePath()) { Q_ASSERT(project); - m_priFileDocument = new QmakePriFileDocument(this); - Core::DocumentManager::addDocument(m_priFileDocument); + m_priFileDocument = std::make_unique(this); + Core::DocumentManager::addDocument(m_priFileDocument.get()); setDisplayName(filePath.toFileInfo().completeBaseName()); setIcon(qmakeParserNodeStaticData()->projectIcon); @@ -470,7 +470,6 @@ QmakeParserPriFileNode::QmakeParserPriFileNode(QmakeProject *project, QmakeParserPriFileNode::~QmakeParserPriFileNode() { watchFolders(QSet()); - delete m_priFileDocument; } void QmakeParserPriFileNode::scheduleUpdate() diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h index de7095ff51a..7142bfa7f0c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h @@ -38,6 +38,8 @@ #include #include +#include + namespace Utils { class FileName; } namespace QtSupport { class ProFileReader; } @@ -99,7 +101,6 @@ enum class Variable { uint qHash(Variable key, uint seed = 0); namespace Internal { -class QmakePriFileDocument; struct InternalParserNode; class QmakeEvalInput; @@ -152,6 +153,8 @@ public: static QSet recursiveEnumerate(const QString &folder); + void scheduleUpdate(); + protected: void setIncludedInExactParse(bool b); static QStringList varNames(ProjectExplorer::FileType type, QtSupport::ProFileReader *readerExact); @@ -176,9 +179,8 @@ protected: ChangeType change, Change mode = Change::Save); -private: - void scheduleUpdate(); +private: bool prepareForChange(); static bool ensureWriteableProFile(const QString &file); static QPair readProFile(const QString &file); @@ -205,7 +207,7 @@ private: Utils::FileName m_projectFilePath; QString m_projectDir; - Internal::QmakePriFileDocument *m_priFileDocument; + std::unique_ptr m_priFileDocument; // Memory is cheap... QMap> m_files; @@ -215,7 +217,6 @@ private: // managed by QmakeProFileNode friend class QmakeProjectManager::QmakeParserProFileNode; - friend class Internal::QmakePriFileDocument; // for scheduling updates on modified // internal temporary subtree representation friend struct Internal::InternalParserNode; }; @@ -298,6 +299,7 @@ public: QByteArray cxxDefines() const; enum AsyncUpdateDelay { ParseNow, ParseLater }; + using QmakeParserPriFileNode::scheduleUpdate; void scheduleUpdate(AsyncUpdateDelay delay); bool validParse() const;