From 7e6f67dd9a177c56fdf190b9657294d73776863f Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Tue, 16 Jun 2009 15:39:01 +0200 Subject: Fixed range calculation for UiQualifiedId in the visitor for UiScriptBinding. --- src/declarative/qml/qmlscriptparser.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp index 6c2e3e0..fb7492d 100644 --- a/src/declarative/qml/qmlscriptparser.cpp +++ b/src/declarative/qml/qmlscriptparser.cpp @@ -628,6 +628,8 @@ bool ProcessAST::visit(AST::UiScriptBinding *node) node->statement); } + prop->location.range.length = prop->location.range.offset + prop->location.range.length - node->qualifiedId->identifierToken.offset; + prop->location.range.offset = node->qualifiedId->identifierToken.offset; Value *v = new Value; v->value = primitive; v->location = location(node->statement->firstSourceLocation(), -- cgit v0.12 From 59629ac728f2fdbc3047554d715e2f908b1844c4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 16 Jun 2009 15:43:46 +0200 Subject: Fixing qml for QWidget support (crash) QWidget deletes its children in its own constructor so we have to cleanup before explicitly Reviewed-by: Aaron Kennedy --- src/gui/kernel/qwidget.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index d5fdd93..74703bf 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -1372,6 +1372,12 @@ QWidget::~QWidget() // set all QPointers for this object to zero QObjectPrivate::clearGuards(this); + if(d->declarativeData) { + QDeclarativeData *dd = d->declarativeData; + d->declarativeData = 0; + dd->destroyed(this); + } + if (!d->children.isEmpty()) d->deleteChildren(); -- cgit v0.12 From 6f4779a7ac3dcfca23124f20bba6ab650e4a8a04 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 16 Jun 2009 15:45:33 +0200 Subject: Fixing QWidget support Reviewed-by: Kai Koehne --- src/declarative/qml/qmlvme.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp index ccf12b0..be09190 100644 --- a/src/declarative/qml/qmlvme.cpp +++ b/src/declarative/qml/qmlvme.cpp @@ -193,7 +193,17 @@ QObject *QmlVME::run(QStack &stack, QmlContext *ctxt, QmlCompiledComp } if (!stack.isEmpty()) { QObject *parent = stack.top(); - o->setParent(parent); + if (o->isWidgetType()) { + QWidget *widget = static_cast(o); + if (parent->isWidgetType()) { + QWidget *parentWidget = static_cast(parent); + widget->setParent(parentWidget); + } else { + // TODO: parent might be a layout + } + } else { + o->setParent(parent); + } } stack.push(o); } -- cgit v0.12