diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 9db7a03b4a453c35fe8a1542490327948a14ac76..62ff1b721bcce5652ca4f1bb6104fd7b8ebdaeff 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -690,6 +690,23 @@ void Qt4PriFileNode::changeFiles(const FileType fileType, if (!saveModifiedEditors()) return; + // Ensure that the file is not read only + QFileInfo fi(m_projectFilePath); + if (!fi.isWritable()) { + // Try via vcs manager + Core::VCSManager *vcsManager = Core::ICore::instance()->vcsManager(); + Core::IVersionControl *versionControl = vcsManager->findVersionControlForDirectory(fi.absolutePath()); + if (!versionControl || versionControl->vcsOpen(m_projectFilePath)) { + bool makeWritable = QFile::setPermissions(m_projectFilePath, fi.permissions() | QFile::WriteUser); + if (!makeWritable) { + QMessageBox::warning(Core::ICore::instance()->mainWindow(), + tr("Failed!"), + tr("Could not write project file %1.").arg(m_projectFilePath)); + return; + } + } + } + QStringList lines; ProFile *includeFile; {