diff --git a/src/plugins/bineditor/imageviewer.h b/src/plugins/bineditor/imageviewer.h
index edaa9d86d37c1464edec48c8f18297ab3e5d161e..ac1c502dec7ae68bb0e18799c7e8ed44044f0827 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 6d7b7ae6eed4463b72ecdc45e261c3ca6b18b9b3..6ec36b5257b7c258fb48c5ece4bb46db157e3c56 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 2ab2fe9fbcc09b194a8a00bf7bcfbefa842d4d85..d47e1a24415a9e8bd073f6092e637514517559b4 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();
     }