From ef46c31d354c6a144aa750fe7efe6058c569522f Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Thu, 8 Apr 2010 16:07:23 +0200
Subject: [PATCH] Fixes: External permission changes are not recognized

Task-number: QTCREATORBUG-1077
---
 src/plugins/bineditor/imageviewer.h         | 2 --
 src/plugins/coreplugin/filemanager.cpp      | 1 +
 src/plugins/texteditor/basetextdocument.cpp | 5 ++++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/plugins/bineditor/imageviewer.h b/src/plugins/bineditor/imageviewer.h
index edaa9d86d37..ac1c502dec7 100644
--- a/src/plugins/bineditor/imageviewer.h
+++ b/src/plugins/bineditor/imageviewer.h
@@ -83,8 +83,6 @@ public:
     ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const;
     void reload(ReloadFlag flag, ChangeType type);
 
-    void checkPermissions() {}
-
     void setMimetype(const QString &mimetype) { m_mimeType = mimetype; emit changed(); }
     void setFileName(const QString &filename) { m_fileName = filename; emit changed(); }
 private:
diff --git a/src/plugins/coreplugin/filemanager.cpp b/src/plugins/coreplugin/filemanager.cpp
index 6d7b7ae6eed..6ec36b5257b 100644
--- a/src/plugins/coreplugin/filemanager.cpp
+++ b/src/plugins/coreplugin/filemanager.cpp
@@ -853,6 +853,7 @@ void FileManager::checkForReload()
         blockFileChange(it.key());
         it.key()->save(it.value());
         unblockFileChange(it.key());
+        it.key()->checkPermissions();
     }
 
     d->m_blockActivated = false;
diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index 2ab2fe9fbcc..d47e1a24415 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -145,12 +145,15 @@ bool BaseTextDocument::isModified() const
 
 void BaseTextDocument::checkPermissions()
 {
+    bool previousReadOnly = m_fileIsReadOnly;
     if (!m_fileName.isEmpty()) {
         const QFileInfo fi(m_fileName);
         m_fileIsReadOnly = !fi.isWritable();
     } else {
         m_fileIsReadOnly = false;
     }
+    if (previousReadOnly != m_fileIsReadOnly)
+        emit changed();
 }
 
 bool BaseTextDocument::open(const QString &fileName)
@@ -266,7 +269,7 @@ void BaseTextDocument::reload(ReloadFlag flag, ChangeType type)
     if (flag == FlagIgnore)
         return;
     if (type == TypePermissions) {
-        emit changed();
+        checkPermissions();
     } else {
         reload();
     }
-- 
GitLab