summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-11-16 03:58:41 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-11-16 03:58:41 (GMT)
commit43d7624e7e8212a265e06d31ad254f9491512625 (patch)
tree9b21a3d6674915211c42722159a5da5d4659c559 /src
parentd5a981b987eeac7bce9520ef6a3c45c5bb3e2d48 (diff)
parent86f89023b52e00d155d6b14762f1a99a70d67e60 (diff)
downloadQt-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.pro4
-rw-r--r--src/declarative/graphicsitems/qmlgraphicstext.cpp3
-rw-r--r--src/declarative/qml/qmlengine.cpp16
-rw-r--r--src/declarative/qml/qmlxmlhttprequest.cpp47
-rw-r--r--src/declarative/util/qmlstate.cpp7
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;
}
}