forked from qt-creator/qt-creator
IDocument: Simplify permission changes
Take care of handling file permission changes centrally. TextDocument had its own, caching implementation of tracking the backing file's read-only state. Move that into IDocument directly. IDocument::reload with a permission-only change is not a very interesting case, but every subclass needed to add handling of it. Instead, remove TypePermission from the file-change types, and handle it separately via the now unified checkPermissions() implementation. IDocument::reloadBehavior already was never called with TypePermission. Change-Id: I321d47ba6193bc878efa9bb50ba7a739fa492745 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -322,31 +322,20 @@ public:
|
||||
: m_widget->isModified();
|
||||
}
|
||||
|
||||
bool isFileReadOnly() const override {
|
||||
const FilePath fn = filePath();
|
||||
if (fn.isEmpty())
|
||||
return false;
|
||||
return !fn.toFileInfo().isWritable();
|
||||
}
|
||||
|
||||
bool isSaveAsAllowed() const override { return true; }
|
||||
|
||||
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override
|
||||
{
|
||||
Q_UNUSED(type)
|
||||
if (flag == FlagIgnore)
|
||||
return true;
|
||||
if (type == TypePermissions) {
|
||||
emit changed();
|
||||
} else {
|
||||
emit aboutToReload();
|
||||
int cPos = m_widget->cursorPosition();
|
||||
m_widget->clear();
|
||||
const bool success = (openImpl(errorString, filePath().toString()) == OpenResult::Success);
|
||||
m_widget->setCursorPosition(cPos);
|
||||
emit reloadFinished(success);
|
||||
return success;
|
||||
}
|
||||
return true;
|
||||
emit aboutToReload();
|
||||
int cPos = m_widget->cursorPosition();
|
||||
m_widget->clear();
|
||||
const bool success = (openImpl(errorString, filePath().toString()) == OpenResult::Success);
|
||||
m_widget->setCursorPosition(cPos);
|
||||
emit reloadFinished(success);
|
||||
return success;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user