From 61bafe34074e80a281f6ebc8321337591103eba5 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 26 Apr 2016 15:50:34 +0200 Subject: [PATCH] QmlDesigner: keep warnings for later showing Change-Id: I5f9c51480a1d0276a356737ab1f91a8f76443c5a Reviewed-by: Thomas Hartmann --- .../components/integration/designdocument.cpp | 17 ++++++++++++----- .../components/integration/designdocument.h | 6 ++++-- .../designercore/include/rewriterview.h | 5 ++++- .../designercore/model/rewriterview.cpp | 15 +++++++++++++-- .../designercore/model/texttomodelmerger.cpp | 2 +- src/plugins/qmldesigner/qmldesignerplugin.cpp | 4 ++-- 6 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/plugins/qmldesigner/components/integration/designdocument.cpp b/src/plugins/qmldesigner/components/integration/designdocument.cpp index a3e9f2ef820..ff78a696f0e 100644 --- a/src/plugins/qmldesigner/components/integration/designdocument.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocument.cpp @@ -163,15 +163,22 @@ Model* DesignDocument::createInFileComponentModel() return model; } -/*! - Returns any errors that happened when parsing the latest qml file. - */ -QList DesignDocument::qmlSyntaxErrors() const +QList DesignDocument::qmlParseWarnings() const +{ + return m_rewriterView->warnings(); +} + +bool DesignDocument::hasQmlParseWarnings() const +{ + return currentModel()->rewriterView() && !currentModel()->rewriterView()->warnings().isEmpty(); +} + +QList DesignDocument::qmlParseErrors() const { return m_rewriterView->errors(); } -bool DesignDocument::hasQmlSyntaxErrors() const +bool DesignDocument::hasQmlParseErrors() const { return currentModel()->rewriterView() && !currentModel()->rewriterView()->errors().isEmpty(); } diff --git a/src/plugins/qmldesigner/components/integration/designdocument.h b/src/plugins/qmldesigner/components/integration/designdocument.h index 6be1021069a..8e8e18ecb4f 100644 --- a/src/plugins/qmldesigner/components/integration/designdocument.h +++ b/src/plugins/qmldesigner/components/integration/designdocument.h @@ -77,8 +77,10 @@ public: Model *documentModel() const; QString contextHelpId() const; - QList qmlSyntaxErrors() const; - bool hasQmlSyntaxErrors() const; + QList qmlParseWarnings() const; + bool hasQmlParseWarnings() const; + QList qmlParseErrors() const; + bool hasQmlParseErrors() const; RewriterView *rewriterView() const; diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 1bcc4ffccb7..3a295467185 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -143,9 +143,11 @@ public: Internal::ModelNodePositionStorage *positionStorage() const { return m_positionStorage; } + QList warnings() const; QList errors() const; - void clearErrors(); + void clearErrorAndWarnings(); void setErrors(const QList &errors); + void setWarnings(const QList &warnings); void addError(const RewriterError &error); void enterErrorState(const QString &errorMessage); @@ -206,6 +208,7 @@ private: //variables QScopedPointer m_textToModelMerger; TextModifier *m_textModifier; QList m_errors; + QList m_warnings; int transactionLevel; RewriterTransaction m_removeDefaultPropertyTransaction; QString m_rewritingErrorMessage; diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 51ffd854eba..8b886e513c5 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -440,7 +440,7 @@ void RewriterView::applyChanges() if (modelToTextMerger()->hasNoPendingChanges()) return; // quick exit: nothing to be done. - clearErrors(); + clearErrorAndWarnings(); if (inErrorState()) { const QString content = textModifierContent(); @@ -474,17 +474,28 @@ void RewriterView::applyChanges() } } +QList RewriterView::warnings() const +{ + return m_warnings; +} + QList RewriterView::errors() const { return m_errors; } -void RewriterView::clearErrors() +void RewriterView::clearErrorAndWarnings() { m_errors.clear(); + m_warnings.clear(); emit errorsChanged(m_errors); } +void RewriterView::setWarnings(const QList &warnings) +{ + m_warnings = warnings; +} + void RewriterView::setErrors(const QList &errors) { m_errors = errors; diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index b1750aaede2..fe565b5b2d2 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -943,7 +943,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH ModelNode modelRootNode = m_rewriterView->rootModelNode(); syncNode(modelRootNode, astRootNode, &ctxt, differenceHandler); m_rewriterView->positionStorage()->cleanupInvalidOffsets(); - m_rewriterView->clearErrors(); + m_rewriterView->clearErrorAndWarnings(); setActive(false); return true; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index 473c585520f..e676cb29b65 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -233,7 +233,7 @@ void QmlDesignerPlugin::hideDesigner() { if (currentDesignDocument() && currentModel() - && !currentDesignDocument()->hasQmlSyntaxErrors()) + && !currentDesignDocument()->hasQmlParseErrors()) jumpTextCursorToSelectedModelNode(); @@ -316,7 +316,7 @@ void QmlDesignerPlugin::activateAutoSynchronization() viewManager().attachComponentView(); viewManager().attachViewsExceptRewriterAndComponetView(); - QList errors = currentDesignDocument()->qmlSyntaxErrors(); + QList errors = currentDesignDocument()->qmlParseErrors(); if (errors.isEmpty()) { selectModelNodeUnderTextCursor(); data->mainWidget->enableWidgets();