forked from qt-creator/qt-creator
QmlDesigner: Auxiliary data auto-fold
- Made TextEditorWidget::restoreState() virtual - Added function to fold qml Auxiliary Data - Extended settings page to fit the new option Task: QDS-1667 Change-Id: Id1256fcc72a67ac822888d5fd2e23d6076349573 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "qmljsquickfixassist.h"
|
||||
#include "qmloutlinemodel.h"
|
||||
#include "quicktoolbar.h"
|
||||
#include "qmljseditingsettingspage.h"
|
||||
|
||||
#include <qmljs/qmljsbind.h>
|
||||
#include <qmljs/qmljsevaluate.h>
|
||||
@@ -158,6 +159,24 @@ void QmlJSEditorWidget::finalizeInitialization()
|
||||
createToolBar();
|
||||
}
|
||||
|
||||
bool QmlJSEditorWidget::restoreState(const QByteArray &state)
|
||||
{
|
||||
QStringList qmlTypes { QmlJSTools::Constants::QML_MIMETYPE,
|
||||
QmlJSTools::Constants::QBS_MIMETYPE,
|
||||
QmlJSTools::Constants::QMLTYPES_MIMETYPE,
|
||||
QmlJSTools::Constants::QMLUI_MIMETYPE };
|
||||
|
||||
if (QmlJsEditingSettings::get().foldAuxData() && qmlTypes.contains(textDocument()->mimeType())) {
|
||||
int version = 0;
|
||||
QDataStream stream(state);
|
||||
stream >> version;
|
||||
if (version < 1)
|
||||
foldAuxiliaryData();
|
||||
}
|
||||
|
||||
return TextEditorWidget::restoreState(state);
|
||||
}
|
||||
|
||||
QModelIndex QmlJSEditorWidget::outlineModelIndex()
|
||||
{
|
||||
if (!m_outlineModelIndex.isValid()) {
|
||||
@@ -217,6 +236,27 @@ void QmlJSEditorWidget::updateCodeWarnings(Document::Ptr doc)
|
||||
}
|
||||
}
|
||||
|
||||
void QmlJSEditorWidget::foldAuxiliaryData()
|
||||
{
|
||||
QTextDocument *doc = document();
|
||||
auto documentLayout = qobject_cast<TextDocumentLayout*>(doc->documentLayout());
|
||||
QTC_ASSERT(documentLayout, return);
|
||||
QTextBlock block = doc->lastBlock();
|
||||
|
||||
while (block.isValid() && block.isVisible()) {
|
||||
if (TextDocumentLayout::canFold(block) && block.next().isVisible()) {
|
||||
const QString trimmedText = block.text().trimmed();
|
||||
if (trimmedText.startsWith("/*##^##")) {
|
||||
TextDocumentLayout::doFoldOrUnfold(block, false);
|
||||
documentLayout->requestUpdate();
|
||||
documentLayout->emitDocumentSizeChanged();
|
||||
break;
|
||||
}
|
||||
}
|
||||
block = block.previous();
|
||||
}
|
||||
}
|
||||
|
||||
void QmlJSEditorWidget::modificationChanged(bool changed)
|
||||
{
|
||||
if (!changed && m_modelManager)
|
||||
|
||||
Reference in New Issue
Block a user