From fb3cc11494ce30e24f9d041d54182d051e3058c1 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Tue, 18 May 2010 13:48:57 +0200
Subject: [PATCH] Make .pro files writeable if needed.

Task-Nr: QTCREATORBUG-765
---
 src/plugins/qt4projectmanager/qt4nodes.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index 9db7a03b4a4..62ff1b721bc 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;
     {
-- 
GitLab