forked from qt-creator/qt-creator
VCS[git]: Limit text size to be displayed.
in VCSBaseEditor and BaseTextEditor::createNew to the size used for limiting file size. Reviewed-by: Robert Loehning <robert.loehning@nokia.com> Task-number: QTCREATORBUG-1847
This commit is contained in:
@@ -1080,7 +1080,7 @@ IEditor *EditorManager::createEditor(const QString &editorId,
|
|||||||
mimeType = m_d->m_core->mimeDatabase()->findByType(QLatin1String("text/plain"));
|
mimeType = m_d->m_core->mimeDatabase()->findByType(QLatin1String("text/plain"));
|
||||||
}
|
}
|
||||||
// open text files > 48 MB in binary editor
|
// open text files > 48 MB in binary editor
|
||||||
if (fileInfo.size() > qint64(3) << 24 && mimeType.type().startsWith(QLatin1String("text")))
|
if (fileInfo.size() > maxTextFileSize() && mimeType.type().startsWith(QLatin1String("text")))
|
||||||
mimeType = m_d->m_core->mimeDatabase()->findByType(QLatin1String("application/octet-stream"));
|
mimeType = m_d->m_core->mimeDatabase()->findByType(QLatin1String("application/octet-stream"));
|
||||||
factories = editorFactories(mimeType, true);
|
factories = editorFactories(mimeType, true);
|
||||||
} else {
|
} else {
|
||||||
@@ -2013,5 +2013,10 @@ void EditorManager::gotoOtherSplit()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qint64 EditorManager::maxTextFileSize()
|
||||||
|
{
|
||||||
|
return (qint64(3) << 24);
|
||||||
|
}
|
||||||
//===================EditorClosingCoreListener======================
|
//===================EditorClosingCoreListener======================
|
||||||
|
|
||||||
|
|||||||
@@ -199,6 +199,8 @@ public:
|
|||||||
QWidget *parent,
|
QWidget *parent,
|
||||||
bool displaySaveAsButton = false);
|
bool displaySaveAsButton = false);
|
||||||
|
|
||||||
|
static qint64 maxTextFileSize();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void currentEditorChanged(Core::IEditor *editor);
|
void currentEditorChanged(Core::IEditor *editor);
|
||||||
void editorCreated(Core::IEditor *editor, const QString &fileName);
|
void editorCreated(Core::IEditor *editor, const QString &fileName);
|
||||||
|
|||||||
@@ -573,8 +573,19 @@ void BaseTextEditor::triggerQuickFix()
|
|||||||
emit requestQuickFix(editableInterface());
|
emit requestQuickFix(editableInterface());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString BaseTextEditor::msgTextTooLarge(quint64 size)
|
||||||
|
{
|
||||||
|
return tr("The text is too large to be displayed (%1 MB).").
|
||||||
|
arg(size >> 20);
|
||||||
|
}
|
||||||
|
|
||||||
bool BaseTextEditor::createNew(const QString &contents)
|
bool BaseTextEditor::createNew(const QString &contents)
|
||||||
{
|
{
|
||||||
|
if (contents.size() > Core::EditorManager::maxTextFileSize()) {
|
||||||
|
setPlainText(msgTextTooLarge(contents.size()));
|
||||||
|
document()->setModified(false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
setPlainText(contents);
|
setPlainText(contents);
|
||||||
document()->setModified(false);
|
document()->setModified(false);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -294,6 +294,8 @@ protected:
|
|||||||
bool canInsertFromMimeData(const QMimeData *source) const;
|
bool canInsertFromMimeData(const QMimeData *source) const;
|
||||||
void insertFromMimeData(const QMimeData *source);
|
void insertFromMimeData(const QMimeData *source);
|
||||||
|
|
||||||
|
static QString msgTextTooLarge(quint64 size);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void maybeSelectLine();
|
void maybeSelectLine();
|
||||||
|
|
||||||
|
|||||||
@@ -627,7 +627,11 @@ void VCSBaseEditor::jumpToChangeFromDiff(QTextCursor cursor)
|
|||||||
|
|
||||||
void VCSBaseEditor::setPlainTextData(const QByteArray &data)
|
void VCSBaseEditor::setPlainTextData(const QByteArray &data)
|
||||||
{
|
{
|
||||||
setPlainText(codec()->toUnicode(data));
|
if (data.size() > Core::EditorManager::maxTextFileSize()) {
|
||||||
|
setPlainText(msgTextTooLarge(data.size()));
|
||||||
|
} else {
|
||||||
|
setPlainText(codec()->toUnicode(data));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VCSBaseEditor::setFontSettings(const TextEditor::FontSettings &fs)
|
void VCSBaseEditor::setFontSettings(const TextEditor::FontSettings &fs)
|
||||||
|
|||||||
Reference in New Issue
Block a user