From 9410a812b9ae045c69d9d015e814f43f8d12da02 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 Jun 2016 16:09:59 +0200 Subject: [PATCH] QmlDesigner: Allow to disable semantic checks in transaction The semantic checks are slow and sometimes we knoe that they are not required. Change-Id: I43cae131e4c5f47d2a61d34975913dd8cb6370fc Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/rewritertransaction.cpp | 11 +++++++++++ .../qmldesigner/designercore/rewritertransaction.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp index bb1429eaec2..ff3a07223dc 100644 --- a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp +++ b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp @@ -72,12 +72,23 @@ bool RewriterTransaction::isValid() const return m_valid; } +void RewriterTransaction::ignoreSemanticChecks() +{ + m_ignoreSemanticChecks = true; +} + void RewriterTransaction::commit() { if (m_valid) { m_valid = false; + bool oldSemanticChecks = view()->rewriterView()->checkSemanticErrors(); + if (m_ignoreSemanticChecks) + view()->rewriterView()->setCheckSemanticErrors(false); + view()->emitRewriterEndTransaction(); + view()->rewriterView()->setCheckSemanticErrors(oldSemanticChecks); + if (m_activeIdentifier) { qDebug() << "Commit RewriterTransaction:" << m_identifier << m_identifierNumber; bool success = m_identifierList.removeOne(m_identifier + QByteArrayLiteral("-") + QByteArray::number(m_identifierNumber)); diff --git a/src/plugins/qmldesigner/designercore/rewritertransaction.h b/src/plugins/qmldesigner/designercore/rewritertransaction.h index 213b9e56180..87e50c53fe4 100644 --- a/src/plugins/qmldesigner/designercore/rewritertransaction.h +++ b/src/plugins/qmldesigner/designercore/rewritertransaction.h @@ -46,6 +46,8 @@ public: bool isValid() const; + void ignoreSemanticChecks(); + protected: AbstractView *view(); private: @@ -55,6 +57,7 @@ private: int m_identifierNumber; static QList m_identifierList; static bool m_activeIdentifier; + bool m_ignoreSemanticChecks = false; }; } //QmlDesigner