aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@digia.com>2014-01-06 12:51:56 +0100
committerMarco Bubke <marco.bubke@digia.com>2014-01-06 14:42:22 +0100
commitf97df3e9708cd641e3ff43366f4a4b4a0badc73f (patch)
tree91c2e5c90332215aba3b367d5d509639a7b706af /src/plugins/qmldesigner/designercore/rewritertransaction.cpp
parent721feaf5fe23909d040d492523b13f58682f7163 (diff)
QmlDesigner: Add RewriterTransaction tracing framework
Change-Id: I6c152e128e0a1b1d4450bbba81e47d072aac3038 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'src/plugins/qmldesigner/designercore/rewritertransaction.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/rewritertransaction.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
index 91d8e0e223..417d4fde7f 100644
--- a/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
+++ b/src/plugins/qmldesigner/designercore/rewritertransaction.cpp
@@ -35,13 +35,29 @@
namespace QmlDesigner {
+
+QList<QByteArray> RewriterTransaction::m_identifierList;
+bool RewriterTransaction::m_activeIdentifier = !qgetenv("QML_DESIGNER_TRACE_REWRITER_TRANSACTION").isEmpty();
+
RewriterTransaction::RewriterTransaction() : m_valid(false)
{
}
-RewriterTransaction::RewriterTransaction(AbstractView *_view) : m_view(_view), m_valid(true)
+RewriterTransaction::RewriterTransaction(AbstractView *_view, const QByteArray &identifier)
+ : m_view(_view),
+ m_identifier(identifier),
+ m_valid(true)
{
Q_ASSERT(view());
+
+ static int identifierNumber = 0;
+ m_identifierNumber = identifierNumber++;
+
+ if (m_activeIdentifier) {
+ qDebug() << "Begin RewriterTransaction:" << m_identifier << m_identifierNumber;
+ m_identifierList.append(m_identifier + QByteArrayLiteral("-") + QByteArray::number(m_identifierNumber));
+ }
+
view()->emitRewriterBeginTransaction();
}
@@ -60,6 +76,12 @@ void RewriterTransaction::commit()
if (m_valid) {
m_valid = false;
view()->emitRewriterEndTransaction();
+
+ if (m_activeIdentifier) {
+ qDebug() << "Commit RewriterTransaction:" << m_identifier << m_identifierNumber;
+ bool success = m_identifierList.removeOne(m_identifier + QByteArrayLiteral("-") + QByteArray::number(m_identifierNumber));
+ Q_ASSERT(success);
+ }
}
}
@@ -70,6 +92,11 @@ void RewriterTransaction::rollback()
m_valid = false;
view()->emitRewriterEndTransaction();
QmlDesignerPlugin::instance()->currentDesignDocument()->undo();
+
+ if (m_activeIdentifier) {
+ qDebug() << "Rollback RewriterTransaction:" << m_identifier << m_identifierNumber;
+ m_identifierList.removeOne(m_identifier + QByteArrayLiteral("-") + QByteArray::number(m_identifierNumber));
+ }
}
}
@@ -84,6 +111,8 @@ RewriterTransaction::RewriterTransaction(const RewriterTransaction &other)
if (&other != this) {
m_valid = other.m_valid;
m_view = other.m_view;
+ m_identifier = other.m_identifier;
+ m_identifierNumber = other.m_identifierNumber;
other.m_valid = false;
}
}
@@ -93,6 +122,8 @@ RewriterTransaction& RewriterTransaction::operator=(const RewriterTransaction &o
if (!m_valid && (&other != this)) {
m_valid = other.m_valid;
m_view = other.m_view;
+ m_identifier = other.m_identifier;
+ m_identifierNumber = other.m_identifierNumber;
other.m_valid = false;
}