diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-11-16 03:58:41 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-11-16 03:58:41 (GMT) |
commit | 43d7624e7e8212a265e06d31ad254f9491512625 (patch) | |
tree | 9b21a3d6674915211c42722159a5da5d4659c559 /src | |
parent | d5a981b987eeac7bce9520ef6a3c45c5bb3e2d48 (diff) | |
parent | 86f89023b52e00d155d6b14762f1a99a70d67e60 (diff) | |
download | Qt-43d7624e7e8212a265e06d31ad254f9491512625.zip Qt-43d7624e7e8212a265e06d31ad254f9491512625.tar.gz Qt-43d7624e7e8212a265e06d31ad254f9491512625.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/declarative.pro | 4 | ||||
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicstext.cpp | 3 | ||||
-rw-r--r-- | src/declarative/qml/qmlengine.cpp | 16 | ||||
-rw-r--r-- | src/declarative/qml/qmlxmlhttprequest.cpp | 47 | ||||
-rw-r--r-- | src/declarative/util/qmlstate.cpp | 7 |
5 files changed, 46 insertions, 31 deletions
diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index 62ae289..da8434f 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -9,8 +9,8 @@ solaris-cc*:QMAKE_CXXFLAGS_RELEASE -= -O2 unix:QMAKE_PKGCONFIG_REQUIRES = QtCore QtGui QtXml -QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors -LIBS += -lgcov +# QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage -fno-elide-constructors +# LIBS += -lgcov INCLUDEPATH += ../../include/QtDeclarative diff --git a/src/declarative/graphicsitems/qmlgraphicstext.cpp b/src/declarative/graphicsitems/qmlgraphicstext.cpp index 504eb2a..d0aec8d 100644 --- a/src/declarative/graphicsitems/qmlgraphicstext.cpp +++ b/src/declarative/graphicsitems/qmlgraphicstext.cpp @@ -50,6 +50,7 @@ #include <QTextCursor> #include <QGraphicsSceneMouseEvent> #include <QPainter> +#include <qmath.h> QT_BEGIN_NAMESPACE QML_DEFINE_TYPE(Qt,4,6,Text,QmlGraphicsText) @@ -600,7 +601,7 @@ QSize QmlGraphicsTextPrivate::setupTextLayout(QTextLayout *layout) line.setPosition(QPointF(0, height)); height += int(line.height()); } - return QSize((int)widthUsed, height); + return QSize(qCeil(widthUsed), height); } QPixmap QmlGraphicsTextPrivate::wrappedTextImage(bool drawStyle) diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index b6f3bde..66d4990 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -427,22 +427,16 @@ QmlContext *QmlEngine::contextForObject(const QObject *object) */ void QmlEngine::setContextForObject(QObject *object, QmlContext *context) { - QObjectPrivate *priv = QObjectPrivate::get(object); - - QmlDeclarativeData *data = - static_cast<QmlDeclarativeData *>(priv->declarativeData); + if (!object || !context) + return; - if (data && data->context) { + QmlDeclarativeData *data = QmlDeclarativeData::get(object, true); + if (data->context) { qWarning("QmlEngine::setContextForObject(): Object already has a QmlContext"); return; } - if (!data) { - priv->declarativeData = new QmlDeclarativeData(context); - } else { - data->context = context; - } - + data->context = context; context->d_func()->contextObjects.append(object); } diff --git a/src/declarative/qml/qmlxmlhttprequest.cpp b/src/declarative/qml/qmlxmlhttprequest.cpp index 87c0994..642c6de 100644 --- a/src/declarative/qml/qmlxmlhttprequest.cpp +++ b/src/declarative/qml/qmlxmlhttprequest.cpp @@ -91,16 +91,16 @@ namespace { -class NodeImpl : public QmlRefCount +class DocumentImpl; +class NodeImpl { public: - NodeImpl() : type(Element), parent(0) {} + NodeImpl() : type(Element), document(0), parent(0) {} virtual ~NodeImpl() { - if (parent) D(parent); for (int ii = 0; ii < children.count(); ++ii) - D(children.at(ii)); + delete children.at(ii); for (int ii = 0; ii < attributes.count(); ++ii) - D(attributes.at(ii)); + delete attributes.at(ii); } // These numbers are copied from the Node IDL definition @@ -125,18 +125,22 @@ public: QString data; + void addref(); + void release(); + + DocumentImpl *document; NodeImpl *parent; QList<NodeImpl *> children; QList<NodeImpl *> attributes; }; -class DocumentImpl : public NodeImpl +class DocumentImpl : public QmlRefCount, public NodeImpl { public: DocumentImpl() : root(0) { type = Document; } virtual ~DocumentImpl() { - if (root) D(root); + if (root) delete root; } QString version; @@ -144,6 +148,9 @@ public: bool isStandalone; NodeImpl *root; + + void addref() { QmlRefCount::addref(); } + void release() { QmlRefCount::release(); } }; class NamedNodeMap @@ -312,6 +319,16 @@ Q_DECLARE_METATYPE(Node); Q_DECLARE_METATYPE(NodeList); Q_DECLARE_METATYPE(NamedNodeMap); +void NodeImpl::addref() +{ + A(document); +} + +void NodeImpl::release() +{ + D(document); +} + QScriptValue Node::nodeName(QScriptContext *context, QScriptEngine *engine) { Node node = qscriptvalue_cast<Node>(context->thisObject()); @@ -616,6 +633,7 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data) case QXmlStreamReader::StartDocument: Q_ASSERT(!document); document = new DocumentImpl; + document->document = document; document->version = reader.documentVersion().toString(); document->encoding = reader.documentEncoding().toString(); document->isStandalone = reader.isStandaloneDocument(); @@ -626,25 +644,25 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data) { Q_ASSERT(document); NodeImpl *node = new NodeImpl; + node->document = document; node->namespaceUri = reader.namespaceUri().toString(); node->name = reader.name().toString(); if (nodeStack.isEmpty()) { document->root = node; } else { node->parent = nodeStack.top(); - A(node->parent); node->parent->children.append(node); } nodeStack.append(node); foreach (const QXmlStreamAttribute &a, reader.attributes()) { NodeImpl *attr = new NodeImpl; + attr->document = document; attr->type = NodeImpl::Attr; attr->namespaceUri = a.namespaceUri().toString(); attr->name = a.name().toString(); attr->data = a.value().toString(); attr->parent = node; - A(attr->parent); node->attributes.append(attr); } } @@ -655,9 +673,9 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data) case QXmlStreamReader::Characters: { NodeImpl *node = new NodeImpl; + node->document = document; node->type = reader.isCDATA()?NodeImpl::CDATA:NodeImpl::Text; node->parent = nodeStack.top(); - A(node->parent); node->parent->children.append(node); node->data = reader.text().toString(); } @@ -827,8 +845,7 @@ NamedNodeMapClass::QueryFlags NamedNodeMapClass::queryProperty(const QScriptValu return 0; NamedNodeMap map = qscriptvalue_cast<NamedNodeMap>(object.data()); - if (map.isNull()) - return 0; + Q_ASSERT(!map.isNull()); bool ok = false; QString nameString = name.toString(); @@ -1307,7 +1324,7 @@ static QScriptValue qmlxmlhttprequest_setRequestHeader(QScriptContext *context, THROW_REFERENCE("Not an XMLHttpRequest object"); if (context->argumentCount() != 2) - THROW_SYNTAX("Incorrect argument count"); + THROW_DOM(SYNTAX_ERR, "Incorrect argument count"); if (request->readyState() != QmlXMLHttpRequest::Opened || @@ -1388,7 +1405,7 @@ static QScriptValue qmlxmlhttprequest_getResponseHeader(QScriptContext *context, THROW_REFERENCE("Not an XMLHttpRequest object"); if (context->argumentCount() != 1) - THROW_SYNTAX("Incorrect argument count"); + THROW_DOM(SYNTAX_ERR, "Incorrect argument count"); if (request->readyState() != QmlXMLHttpRequest::Loading && request->readyState() != QmlXMLHttpRequest::Done && @@ -1408,7 +1425,7 @@ static QScriptValue qmlxmlhttprequest_getAllResponseHeaders(QScriptContext *cont THROW_REFERENCE("Not an XMLHttpRequest object"); if (context->argumentCount() != 0) - THROW_SYNTAX("Incorrect argument count"); + THROW_DOM(SYNTAX_ERR, "Incorrect argument count"); if (request->readyState() != QmlXMLHttpRequest::Loading && request->readyState() != QmlXMLHttpRequest::Done && diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp index 7cc548f..1f5dbad 100644 --- a/src/declarative/util/qmlstate.cpp +++ b/src/declarative/util/qmlstate.cpp @@ -433,8 +433,11 @@ void QmlState::apply(QmlStateGroup *group, QmlTransition *trans, QmlState *rever // Output for debugging if (stateChangeDebug()) { foreach(const Action &action, applyList) { - qWarning() << " Action:" << action.property.object() - << action.property.name() << action.toValue; + if (action.event) + qWarning() << " Action event:" << action.event; + else + qWarning() << " Action:" << action.property.object() + << action.property.name() << action.toValue; } } |