aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativebinding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qdeclarativebinding.cpp')
-rw-r--r--src/declarative/qml/qdeclarativebinding.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/declarative/qml/qdeclarativebinding.cpp b/src/declarative/qml/qdeclarativebinding.cpp
index fbfba6d8d3..84b49e10a8 100644
--- a/src/declarative/qml/qdeclarativebinding.cpp
+++ b/src/declarative/qml/qdeclarativebinding.cpp
@@ -48,6 +48,7 @@
#include "qdeclarativecompiler_p.h"
#include "qdeclarativedata_p.h"
#include <private/qdeclarativedebugtrace_p.h>
+#include <private/qdeclarativetrace_p.h>
#include <QVariant>
#include <QtCore/qdebug.h>
@@ -215,7 +216,7 @@ void QDeclarativeBindingPrivate::refresh()
}
QDeclarativeBindingPrivate::QDeclarativeBindingPrivate()
-: updating(false), enabled(false)
+: updating(false), enabled(false), columnNumber(0)
{
}
@@ -239,7 +240,7 @@ QDeclarativeBinding::createBinding(Identifier id, QObject *obj, QDeclarativeCont
typeData = engine->typeLoader.get(ctxtdata->url);
cdata = typeData->compiledData();
}
- QDeclarativeBinding *rv = cdata ? new QDeclarativeBinding(cdata->primitives.at(id), true, obj, ctxtdata, url, lineNumber, parent) : 0;
+ QDeclarativeBinding *rv = cdata ? new QDeclarativeBinding(cdata->primitives.at(id), true, obj, ctxtdata, url, lineNumber, 0, parent) : 0;
if (cdata)
cdata->release();
if (typeData)
@@ -265,11 +266,15 @@ QDeclarativeBinding::QDeclarativeBinding(const QString &str, QObject *obj, QDecl
QDeclarativeBinding::QDeclarativeBinding(const QString &str, bool isRewritten, QObject *obj,
QDeclarativeContextData *ctxt,
- const QString &url, int lineNumber, QObject *parent)
+ const QString &url, int lineNumber, int columnNumber,
+ QObject *parent)
: QDeclarativeExpression(ctxt, obj, str, isRewritten, url, lineNumber, *new QDeclarativeBindingPrivate)
{
+ Q_D(QDeclarativeBinding);
+
setParent(parent);
setNotifyOnValueChanged(true);
+ d->columnNumber = columnNumber;
}
/*!
@@ -351,6 +356,11 @@ void QDeclarativeBinding::update(QDeclarativePropertyPrivate::WriteFlags flags)
if (!d->enabled || !d->context() || !d->context()->isValid())
return;
+ QDeclarativeTrace trace("General Binding Update");
+ trace.addDetail("URL", d->url);
+ trace.addDetail("Line", d->line);
+ trace.addDetail("Column", d->columnNumber);
+
if (!d->updating) {
QDeclarativeBindingProfiler prof(this);
d->updating = true;
@@ -379,6 +389,8 @@ void QDeclarativeBinding::update(QDeclarativePropertyPrivate::WriteFlags flags)
v8::Context::Scope scope(ep->v8engine()->context());
v8::Local<v8::Value> result = d->v8value(0, &isUndefined);
+ trace.event("writing binding result");
+
bool needsErrorData = false;
if (!watcher.wasDeleted() && !d->error.isValid())
needsErrorData = !QDeclarativePropertyPrivate::writeBinding(d->property, d, result,