OSDN Git Service

filemanager: fix regression when trying to save read-only file
authorFawzi Mohamed <fawzi.mohamed@nokia.com>
Mon, 1 Aug 2011 12:58:33 +0000 (14:58 +0200)
committerFawzi Mohamed <fawzi.mohamed@nokia.com>
Mon, 1 Aug 2011 16:51:41 +0000 (18:51 +0200)
When saving a read-only file, a dialog should appear with
Make Writable / Save As / Cancel should open.
Avoids relying on permission error to detect read-only files as
qfsfileengine_unix.cpp treats errno == EACCESS as a QFile::OpenError.

Change-Id: Icdffdc4617c8ef2b58d58aeedbb2b454d0da9465
Task-Number: QTCREATORBUG-5066
Reviewed-on: http://codereview.qt.nokia.com/2442
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
src/plugins/coreplugin/filemanager.cpp

index caabbec..5621994 100644 (file)
@@ -628,8 +628,7 @@ bool FileManager::saveFile(IFile *file, const QString &fileName, bool *isReadOnl
         if (isReadOnly) {
             QFile ofi(effName);
             // Check whether the existing file is writable
-            if (ofi.exists() && !ofi.open(QIODevice::ReadWrite)
-                && ofi.error() == QFile::PermissionsError) {
+            if (!ofi.open(QIODevice::ReadWrite) && ofi.open(QIODevice::ReadOnly)) {
                 *isReadOnly = true;
                 goto out;
             }