From 64697b6a39c873321d9f78907fd3a5204ea7ef45 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 7 Oct 2009 16:41:42 +1000 Subject: Remove some unneeded semicolons --- src/declarative/fx/qfxitem.h | 2 +- src/declarative/util/qmlstateoperations.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/fx/qfxitem.h b/src/declarative/fx/qfxitem.h index 30c522f..bde0c9e 100644 --- a/src/declarative/fx/qfxitem.h +++ b/src/declarative/fx/qfxitem.h @@ -93,7 +93,7 @@ class Q_DECLARATIVE_EXPORT QFxItem : public QGraphicsObject, public QmlParserSta Q_PROPERTY(QmlList* transform READ transform DESIGNABLE false FINAL) Q_PROPERTY(TransformOrigin transformOrigin READ transformOrigin WRITE setTransformOrigin) Q_PROPERTY(bool smooth READ smoothTransform WRITE setSmoothTransform) - Q_PROPERTY(QGraphicsEffect *effect READ graphicsEffect WRITE setGraphicsEffect); + Q_PROPERTY(QGraphicsEffect *effect READ graphicsEffect WRITE setGraphicsEffect) Q_ENUMS(TransformOrigin) Q_CLASSINFO("DefaultProperty", "data") diff --git a/src/declarative/util/qmlstateoperations.cpp b/src/declarative/util/qmlstateoperations.cpp index a9a5bd5..4810a92 100644 --- a/src/declarative/util/qmlstateoperations.cpp +++ b/src/declarative/util/qmlstateoperations.cpp @@ -189,7 +189,7 @@ QmlStateOperation::ActionList QmlParentChange::actions() class AccessibleFxItem : public QFxItem { Q_OBJECT - Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QFxItem); + Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QFxItem) public: int siblingIndex() { Q_D(QFxItem); -- cgit v0.12 From 83ebad552bfdb9ac057fbf49316ed5becf70426d Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 7 Oct 2009 16:42:51 +1000 Subject: Merge --- .../contacts/1_Drawing_and_Animation/1/RemoveButton.qml | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 examples/declarative/tutorials/contacts/1_Drawing_and_Animation/1/RemoveButton.qml diff --git a/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/1/RemoveButton.qml b/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/1/RemoveButton.qml deleted file mode 100644 index a8ac7fe..0000000 --- a/examples/declarative/tutorials/contacts/1_Drawing_and_Animation/1/RemoveButton.qml +++ /dev/null @@ -1,11 +0,0 @@ -import Qt 4.6 - -//! [0] -Rectangle { - id: removeButton - width: 30 - height: 30 - color: "red" - radius: 5 -} -//! [0] -- cgit v0.12 From 8d8089299507bbb4edbb94f21e29032a46bccc0a Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 9 Oct 2009 10:30:39 +1000 Subject: Make QML type registration work on Symbian --- src/declarative/qml/qml.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/declarative/qml/qml.h b/src/declarative/qml/qml.h index 23f2f1e..c437ef1 100644 --- a/src/declarative/qml/qml.h +++ b/src/declarative/qml/qml.h @@ -74,6 +74,24 @@ QT_MODULE(Declarative) QT_BEGIN_NAMESPACE +#if defined(Q_OS_SYMBIAN) +#define QML_DEFINE_INTERFACE(INTERFACE) \ + static int defineInterface##INTERFACE = qmlRegisterInterface(#INTERFACE); + +#define QML_DEFINE_EXTENDED_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, NAME, TYPE, EXTENSION) \ + static int registerExtended##TYPE = qmlRegisterExtendedType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, #NAME, #TYPE); + +#define QML_DEFINE_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, NAME, TYPE) \ + static int defineType##TYPE = qmlRegisterType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MIN_TO, #NAME, #TYPE); + +#define QML_DEFINE_EXTENDED_NOCREATE_TYPE(TYPE, EXTENSION) \ + static int registerExtendedNoCreate##TYPE = qmlRegisterExtendedType(#TYPE); + +#define QML_DEFINE_NOCREATE_TYPE(TYPE) \ + static int registerNoCreate##TYPE = qmlRegisterType(#TYPE); + +#else + #define QML_DEFINE_INTERFACE(INTERFACE) \ template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterInterface(#INTERFACE)); @@ -89,6 +107,8 @@ QT_BEGIN_NAMESPACE #define QML_DEFINE_NOCREATE_TYPE(TYPE) \ template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterType(#TYPE)); +#endif + class QmlContext; class QmlEngine; Q_DECLARATIVE_EXPORT void qmlExecuteDeferred(QObject *); -- cgit v0.12 From ba3ee12e8b7c73084ecfe8e045e4ca361df960d3 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Fri, 9 Oct 2009 10:33:39 +1000 Subject: More QML type registration on Symbian. --- src/declarative/qml/qmlcustomparser_p.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/declarative/qml/qmlcustomparser_p.h b/src/declarative/qml/qmlcustomparser_p.h index 5be0680..eb3e579 100644 --- a/src/declarative/qml/qmlcustomparser_p.h +++ b/src/declarative/qml/qmlcustomparser_p.h @@ -127,8 +127,14 @@ protected: private: QList exceptions; }; -#define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, NAME, TYPE, CUSTOMTYPE) \ + +#if defined(Q_OS_SYMBIAN) +# define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, NAME, TYPE, CUSTOMTYPE) \ + static int defineCustomType##NAME = qmlRegisterCustomType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, #NAME, #TYPE, new CUSTOMTYPE); +#else +# define QML_DEFINE_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, NAME, TYPE, CUSTOMTYPE) \ template<> QmlPrivate::InstanceType QmlPrivate::Define::instance(qmlRegisterCustomType(#URI, VERSION_MAJ, VERSION_MIN_FROM, VERSION_MAJ_TO, #NAME, #TYPE, new CUSTOMTYPE)); +#endif QT_END_NAMESPACE -- cgit v0.12 From d9286e5e0e0a6688960f04600dfaefa5f1247934 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Sat, 10 Oct 2009 19:11:26 +1000 Subject: Remove warning. --- src/declarative/qml/qmlinfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qmlinfo.cpp b/src/declarative/qml/qmlinfo.cpp index bae1682..7d7f3b8 100644 --- a/src/declarative/qml/qmlinfo.cpp +++ b/src/declarative/qml/qmlinfo.cpp @@ -88,7 +88,7 @@ QmlInfo::QmlInfo(QObject *object) if (ddata->outerContext) { location += ddata->outerContext->baseUrl().toString(); } else { - location += "unknown"; + location += QLatin1String("unknown"); } location += QLatin1String(":"); location += QString::number(ddata->lineNumber); -- cgit v0.12 From f410aa58f93b27a5ba1b82e2f3a87d14338e22a4 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Wed, 14 Oct 2009 12:21:04 +0200 Subject: Don't rewrite expression statements in loops. --- src/declarative/qml/qmlrewrite.cpp | 72 ++++++++++++++++++++++++++++++++++++-- src/declarative/qml/qmlrewrite_p.h | 22 ++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qmlrewrite.cpp b/src/declarative/qml/qmlrewrite.cpp index a41b571..19b88cc 100644 --- a/src/declarative/qml/qmlrewrite.cpp +++ b/src/declarative/qml/qmlrewrite.cpp @@ -111,12 +111,80 @@ bool RewriteBinding::visit(AST::Block *ast) bool RewriteBinding::visit(AST::ExpressionStatement *ast) { - unsigned startOfExpressionStatement = ast->firstSourceLocation().begin() - _position; - _writer->replace(startOfExpressionStatement, 0, QLatin1String("return ")); + if (_loopStack.isEmpty()) { + unsigned startOfExpressionStatement = ast->firstSourceLocation().begin() - _position; + _writer->replace(startOfExpressionStatement, 0, QLatin1String("return ")); + } return false; } +bool RewriteBinding::visit(AST::DoWhileStatement *ast) +{ + _loopStack.append(ast); + return true; +} + +void RewriteBinding::endVisit(AST::DoWhileStatement *) +{ + _loopStack.removeLast(); +} + +bool RewriteBinding::visit(AST::WhileStatement *ast) +{ + _loopStack.append(ast); + return true; +} + +void RewriteBinding::endVisit(AST::WhileStatement *) +{ + _loopStack.removeLast(); +} + +bool RewriteBinding::visit(AST::ForStatement *ast) +{ + _loopStack.append(ast); + return true; +} + +void RewriteBinding::endVisit(AST::ForStatement *) +{ + _loopStack.removeLast(); +} + +bool RewriteBinding::visit(AST::LocalForStatement *ast) +{ + _loopStack.append(ast); + return true; +} + +void RewriteBinding::endVisit(AST::LocalForStatement *) +{ + _loopStack.removeLast(); +} + +bool RewriteBinding::visit(AST::ForEachStatement *ast) +{ + _loopStack.append(ast); + return true; +} + +void RewriteBinding::endVisit(AST::ForEachStatement *) +{ + _loopStack.removeLast(); +} + +bool RewriteBinding::visit(AST::LocalForEachStatement *ast) +{ + _loopStack.append(ast); + return true; +} + +void RewriteBinding::endVisit(AST::LocalForEachStatement *) +{ + _loopStack.removeLast(); +} + } // namespace QmlRewrite QT_END_NAMESPACE diff --git a/src/declarative/qml/qmlrewrite_p.h b/src/declarative/qml/qmlrewrite_p.h index b6fe017..449b219 100644 --- a/src/declarative/qml/qmlrewrite_p.h +++ b/src/declarative/qml/qmlrewrite_p.h @@ -76,8 +76,30 @@ protected: void accept(AST::Node *node); QString rewrite(QString code, unsigned position, AST::Statement *node); + virtual bool visit(AST::Block *ast); virtual bool visit(AST::ExpressionStatement *ast); + + virtual bool visit(AST::DoWhileStatement *ast); + virtual void endVisit(AST::DoWhileStatement *ast); + + virtual bool visit(AST::WhileStatement *ast); + virtual void endVisit(AST::WhileStatement *ast); + + virtual bool visit(AST::ForStatement *ast); + virtual void endVisit(AST::ForStatement *ast); + + virtual bool visit(AST::LocalForStatement *ast); + virtual void endVisit(AST::LocalForStatement *ast); + + virtual bool visit(AST::ForEachStatement *ast); + virtual void endVisit(AST::ForEachStatement *ast); + + virtual bool visit(AST::LocalForEachStatement *ast); + virtual void endVisit(AST::LocalForEachStatement *ast); + +private: + QList _loopStack; }; } // namespace QmlRewrite -- cgit v0.12 From bea38f654ee042946f45e3bdb628c02225a650b9 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 15 Oct 2009 13:17:50 +1000 Subject: Make tests 'pass' for qfxtextedit and qfxtextinput One test is acutally XFAIL instead of PASS, because what it is 'testing' hasn't been implemented yet. --- tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp | 2 ++ tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp b/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp index 7ab598f..1433bf2 100644 --- a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp +++ b/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp @@ -467,6 +467,7 @@ void tst_qfxtextedit::navigation() QmlView *canvas = createView(SRCDIR "/data/navigation.qml"); canvas->execute(); canvas->show(); + canvas->setFocus(); QVERIFY(canvas->root() != 0); @@ -474,6 +475,7 @@ void tst_qfxtextedit::navigation() QVERIFY(input != 0); QTRY_VERIFY(input->hasFocus() == true); + QEXPECT_FAIL("", "Depends on QT-2236", Abort); simulateKey(canvas, Qt::Key_Left); QVERIFY(input->hasFocus() == false); simulateKey(canvas, Qt::Key_Right); diff --git a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp index bd0b9c3..81b4ac8 100644 --- a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp +++ b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp @@ -310,6 +310,7 @@ void tst_qfxtextinput::navigation() QmlView *canvas = createView(SRCDIR "/data/navigation.qml"); canvas->execute(); canvas->show(); + canvas->setFocus(); QVERIFY(canvas->root() != 0); -- cgit v0.12 From 2e1b1d35127c66a20645b65ae293299c5a67c4e9 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 13:25:52 +1000 Subject: Fix (was creating lower-case). --- tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp index b68d9bf..3dedb79 100644 --- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp +++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp @@ -126,14 +126,14 @@ void tst_qmllanguage::initTestCase() // For utf-8 locale, this will be data/I18nType??????????.qml where ?????????? is 5 8-bit characters, UTF-8 encoded QFile in(TEST_FILE(QLatin1String("I18nType30.qml")).toLocalFile()); QVERIFY(in.open(QIODevice::ReadOnly)); - QFile out(TEST_FILE(QString::fromUtf8("I18nType\303\241\303\242\303\243\303\244\303\245.qml")).toLocalFile()); + QFile out(TEST_FILE(QString::fromUtf8("I18nType\303\201\303\242\303\243\303\244\303\245.qml")).toLocalFile()); QVERIFY(out.open(QIODevice::WriteOnly)); out.write(in.readAll()); } void tst_qmllanguage::cleanupTestCase() { - QVERIFY(QFile::remove(TEST_FILE(QString::fromUtf8("I18nType\303\241\303\242\303\243\303\244\303\245.qml")).toLocalFile())); + QVERIFY(QFile::remove(TEST_FILE(QString::fromUtf8("I18nType\303\201\303\242\303\243\303\244\303\245.qml")).toLocalFile())); } void tst_qmllanguage::errors_data() -- cgit v0.12 From 14f7463ceb008269a50d7108b983c6be5c34c8b0 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 13:50:52 +1000 Subject: Unicode namespace fix. (no bug reported) --- src/declarative/qml/qmlengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index f0ecf1d..528e8c9 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -1099,7 +1099,7 @@ public: int slash = type.indexOf('/'); if (slash >= 0) { while (!s) { - s = set.value(QString::fromLatin1(type.left(slash))); + s = set.value(QString::fromUtf8(type.left(slash))); int nslash = type.indexOf('/',slash+1); if (nslash > 0) slash = nslash; -- cgit v0.12 From 5f24950397d078b74144b542c0eff6169aae68b3 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 13:55:09 +1000 Subject: Test Unicode namespace --- tests/auto/declarative/qmllanguage/data/i18nNameSpace.qml | 5 +++++ tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp | 1 + 2 files changed, 6 insertions(+) create mode 100644 tests/auto/declarative/qmllanguage/data/i18nNameSpace.qml diff --git a/tests/auto/declarative/qmllanguage/data/i18nNameSpace.qml b/tests/auto/declarative/qmllanguage/data/i18nNameSpace.qml new file mode 100644 index 0000000..c0b2f94 --- /dev/null +++ b/tests/auto/declarative/qmllanguage/data/i18nNameSpace.qml @@ -0,0 +1,5 @@ +import Test 1.0 as Áâãäå + +Áâãäå.MyTypeObject { + stringProperty: "Test áâãäå: 40" +} diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp index 3dedb79..8d4ae65 100644 --- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp +++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp @@ -711,6 +711,7 @@ void tst_qmllanguage::i18n_data() QTest::newRow("i18nDeclaredPropertyUse") << "i18nDeclaredPropertyUse.qml" << QString::fromUtf8("Test \303\241\303\242\303\243\303\244\303\245: 15"); QTest::newRow("i18nScript") << "i18nScript.qml" << QString::fromUtf8("Test \303\241\303\242\303\243\303\244\303\245: 20"); QTest::newRow("i18nType") << "i18nType.qml" << QString::fromUtf8("Test \303\241\303\242\303\243\303\244\303\245: 30"); + QTest::newRow("i18nNameSpace") << "i18nNameSpace.qml" << QString::fromUtf8("Test \303\241\303\242\303\243\303\244\303\245: 40"); } void tst_qmllanguage::i18n() -- cgit v0.12 From 25f5008d6bc6788e68e34f24af196f12de052567 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 15 Oct 2009 13:39:25 +1000 Subject: Add cursorRect function to QFxTextInput similar to the cursorRect in QFxTextEdit --- src/declarative/fx/qfxtextinput.cpp | 12 ++++++++++++ src/declarative/fx/qfxtextinput.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/declarative/fx/qfxtextinput.cpp b/src/declarative/fx/qfxtextinput.cpp index f5bf911..c694133 100644 --- a/src/declarative/fx/qfxtextinput.cpp +++ b/src/declarative/fx/qfxtextinput.cpp @@ -289,6 +289,18 @@ void QFxTextInput::setCursorPosition(int cp) } /*! + \internal + + Returns a Rect which encompasses the cursor, but which may be larger than is + required. Ignores custom cursor delegates. +*/ +QRect QFxTextInput::cursorRect() const +{ + Q_D(const QFxTextInput); + return d->control->cursorRect(); +} + +/*! \qmlproperty int TextInput::selectionStart The cursor position before the first character in the current selection. diff --git a/src/declarative/fx/qfxtextinput.h b/src/declarative/fx/qfxtextinput.h index d5d0450..2540d41 100644 --- a/src/declarative/fx/qfxtextinput.h +++ b/src/declarative/fx/qfxtextinput.h @@ -131,6 +131,8 @@ public: int cursorPosition() const; void setCursorPosition(int cp); + QRect cursorRect() const; + int selectionStart() const; void setSelectionStart(int); -- cgit v0.12 From 0f97a4fbcab5972f47a8a6cc3b501446df94bedb Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 15 Oct 2009 14:07:24 +1000 Subject: Add cursorDelegate test to QFxTextInput autotests Also cleaned up the QFxTextEdit version, and fixed a bug the new test uncovered. --- src/declarative/fx/qfxtextinput.cpp | 14 ++++++------ .../declarative/qfxtextedit/tst_qfxtextedit.cpp | 6 +++--- .../declarative/qfxtextinput/tst_qfxtextinput.cpp | 25 +++++++++++++++++++++- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/declarative/fx/qfxtextinput.cpp b/src/declarative/fx/qfxtextinput.cpp index c694133..e9ddd3f 100644 --- a/src/declarative/fx/qfxtextinput.cpp +++ b/src/declarative/fx/qfxtextinput.cpp @@ -501,17 +501,19 @@ void QFxTextInput::setCursorDelegate(QmlComponent* c) { Q_D(QFxTextInput); d->cursorComponent = c; - d->startCreatingCursor(); + if(!c){ + //note that the components are owned by something else + disconnect(d->control, SIGNAL(cursorPositionChanged(int, int)), + this, SLOT(moveCursor())); + delete d->cursorItem; + }else{ + d->startCreatingCursor(); + } } void QFxTextInputPrivate::startCreatingCursor() { Q_Q(QFxTextInput); - if(!cursorComponent){ - q->disconnect(control, SIGNAL(cursorPositionChanged(int, int)), - q, SLOT(moveCursor())); - return; - } q->connect(control, SIGNAL(cursorPositionChanged(int, int)), q, SLOT(moveCursor())); if(cursorComponent->isReady()){ diff --git a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp b/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp index 1433bf2..f78e564 100644 --- a/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp +++ b/tests/auto/declarative/qfxtextedit/tst_qfxtextedit.cpp @@ -433,10 +433,10 @@ void tst_qfxtextedit::selection() void tst_qfxtextedit::cursorDelegate() { - QmlView* view = new QmlView(0); - view->show(); - view->setUrl(QUrl("data/cursorTest.qml")); + QmlView* view = createView(SRCDIR "/data/cursorTest.qml"); view->execute(); + view->show(); + view->setFocus(); QFxTextEdit *textEditObject = view->root()->findChild("textEditObject"); QVERIFY(textEditObject != 0); QVERIFY(textEditObject->findChild("cursorInstance")); diff --git a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp index 81b4ac8..069574c 100644 --- a/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp +++ b/tests/auto/declarative/qfxtextinput/tst_qfxtextinput.cpp @@ -330,7 +330,30 @@ void tst_qfxtextinput::navigation() void tst_qfxtextinput::cursorDelegate() { - //TODO:Get the QFxTextEdit test passing first + QmlView* view = createView(SRCDIR "/data/cursorTest.qml"); + view->execute(); + view->show(); + view->setFocus(); + QFxTextInput *textInputObject = view->root()->findChild("textInputObject"); + QVERIFY(textInputObject != 0); + QVERIFY(textInputObject->findChild("cursorInstance")); + //Test Delegate gets created + textInputObject->setFocus(true); + QFxItem* delegateObject = textInputObject->findChild("cursorInstance"); + QVERIFY(delegateObject); + //Test Delegate gets moved + for(int i=0; i<= textInputObject->text().length(); i++){ + textInputObject->setCursorPosition(i); + //+5 is because the TextInput cursorRect is just a 10xHeight area centered on cursor position + QCOMPARE(textInputObject->cursorRect().x() + 5, qRound(delegateObject->x())); + QCOMPARE(textInputObject->cursorRect().y(), qRound(delegateObject->y())); + } + textInputObject->setCursorPosition(0); + QCOMPARE(textInputObject->cursorRect().x()+5, qRound(delegateObject->x())); + QCOMPARE(textInputObject->cursorRect().y(), qRound(delegateObject->y())); + //Test Delegate gets deleted + textInputObject->setCursorDelegate(0); + QVERIFY(!textInputObject->findChild("cursorInstance")); } void tst_qfxtextinput::simulateKey(QmlView *view, int key) -- cgit v0.12 From 343535d7cbae16c02517664ce0d363e9834bd74d Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 15 Oct 2009 14:16:42 +1000 Subject: Use Q_GLOBAL_STATIC for global static. --- src/declarative/qml/qmlcompiler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp index c744509..e2fd7cb 100644 --- a/src/declarative/qml/qmlcompiler.cpp +++ b/src/declarative/qml/qmlcompiler.cpp @@ -2039,7 +2039,7 @@ bool QmlCompiler::mergeDynamicMetaProperties(QmlParser::Object *obj) return true; } -static QAtomicInt classIndexCounter; +Q_GLOBAL_STATIC(QAtomicInt, classIndexCounter) bool QmlCompiler::buildDynamicMeta(QmlParser::Object *obj, DynamicMetaMode mode) { @@ -2058,7 +2058,7 @@ bool QmlCompiler::buildDynamicMeta(QmlParser::Object *obj, DynamicMetaMode mode) QByteArray newClassName = obj->metatype->className(); newClassName.append("_QML_"); - int idx = classIndexCounter.fetchAndAddRelaxed(1); + int idx = classIndexCounter()->fetchAndAddRelaxed(1); newClassName.append(QByteArray::number(idx)); QMetaObjectBuilder builder; -- cgit v0.12 From 5ab4ccf0e0d3618e799dcfc82bd7fcf3fd560e78 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 14:45:49 +1000 Subject: Fix for when multiple tests share a data director. --- tests/auto/declarative/visual/tst_visual.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/visual/tst_visual.cpp b/tests/auto/declarative/visual/tst_visual.cpp index 367166d..cb32085 100644 --- a/tests/auto/declarative/visual/tst_visual.cpp +++ b/tests/auto/declarative/visual/tst_visual.cpp @@ -112,7 +112,7 @@ QString tst_visual::toTestScript(const QString &file, Mode mode) QString("data"); QString testname = file.mid(index + 1, file.length() - index - 5); - if (platformsuffix && (mode == UpdatePlatformVisuals || QDir(testdata+QLatin1String(platformsuffix)).exists())) { + if (platformsuffix && (mode == UpdatePlatformVisuals || QFile::exists(testdata+QLatin1String(platformsuffix)+QDir::separator()+testname))) { QString platformdir = testdata + QLatin1String(platformsuffix); if (mode == UpdatePlatformVisuals) { Q_ASSERT(QDir().mkpath(platformdir)); -- cgit v0.12 From e61b7c6d8194ce42eb0021c4b59788d42c04ec0e Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 14:46:13 +1000 Subject: Multilength strings test. --- .../declarative/visual/qfxtext/elide/multilength.qml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/auto/declarative/visual/qfxtext/elide/multilength.qml diff --git a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml b/tests/auto/declarative/visual/qfxtext/elide/multilength.qml new file mode 100644 index 0000000..3382524 --- /dev/null +++ b/tests/auto/declarative/visual/qfxtext/elide/multilength.qml @@ -0,0 +1,20 @@ +import Qt 4.6 + +Rectangle { + width: 500 + height: 50 + color: "lightBlue" + Rectangle { + width: MyText.width + height: MyText.height + color: "white" + anchors.centerIn: parent + Text { + id: MyText + width: NumberAnimation { from: 500; to: 0; running: true; repeat: true; duration: 1000 } + elide: "ElideRight" + text: "aaaaaaa bbbbbbb ccccccc\x9Caaaaa bbbbb ccccc\x9Caaa bbb ccc\x9Ca b c" + text: "Brevity is the soul of wit, and tediousness the limbs and outward flourishes.\x9CBrevity is a great charm of eloquence.\x9CBe concise!" + } + } +} -- cgit v0.12 From 8fc45851858d748732b340705c26413ee7754291 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 15:00:11 +1000 Subject: Final can be longer. --- tests/auto/declarative/visual/qfxtext/elide/multilength.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml b/tests/auto/declarative/visual/qfxtext/elide/multilength.qml index 3382524..6cd37b4 100644 --- a/tests/auto/declarative/visual/qfxtext/elide/multilength.qml +++ b/tests/auto/declarative/visual/qfxtext/elide/multilength.qml @@ -14,7 +14,7 @@ Rectangle { width: NumberAnimation { from: 500; to: 0; running: true; repeat: true; duration: 1000 } elide: "ElideRight" text: "aaaaaaa bbbbbbb ccccccc\x9Caaaaa bbbbb ccccc\x9Caaa bbb ccc\x9Ca b c" - text: "Brevity is the soul of wit, and tediousness the limbs and outward flourishes.\x9CBrevity is a great charm of eloquence.\x9CBe concise!" + text: "Brevity is the soul of wit, and tediousness the limbs and outward flourishes.\x9CBrevity is a great charm of eloquence.\x9CBe concise!\x9CSHHHHHHHHHHHHHHHHHHHHHHHHHHHH" } } } -- cgit v0.12 From 0a0456bda6d730242267dec7dd6861702bab3877 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 15 Oct 2009 15:18:14 +1000 Subject: Fix more compiler warnings. --- src/declarative/debugger/qmldebugclient.cpp | 2 +- src/declarative/fx/qfxlistview.cpp | 2 +- src/declarative/fx/qfxtextinput_p.h | 2 +- src/declarative/qml/qmlinfo.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/declarative/debugger/qmldebugclient.cpp b/src/declarative/debugger/qmldebugclient.cpp index d13de57..3171808 100644 --- a/src/declarative/debugger/qmldebugclient.cpp +++ b/src/declarative/debugger/qmldebugclient.cpp @@ -104,7 +104,7 @@ bool QmlDebugConnection::isConnected() const class QmlDebugClientPrivate : public QObjectPrivate { - Q_DECLARE_PUBLIC(QmlDebugClient); + Q_DECLARE_PUBLIC(QmlDebugClient) public: QmlDebugClientPrivate(); diff --git a/src/declarative/fx/qfxlistview.cpp b/src/declarative/fx/qfxlistview.cpp index 604d16b..4fb0ec1 100644 --- a/src/declarative/fx/qfxlistview.cpp +++ b/src/declarative/fx/qfxlistview.cpp @@ -166,7 +166,7 @@ public: class QFxListViewPrivate : public QFxFlickablePrivate { - Q_DECLARE_PUBLIC(QFxListView); + Q_DECLARE_PUBLIC(QFxListView) public: QFxListViewPrivate() diff --git a/src/declarative/fx/qfxtextinput_p.h b/src/declarative/fx/qfxtextinput_p.h index a2b45bb..3978be4 100644 --- a/src/declarative/fx/qfxtextinput_p.h +++ b/src/declarative/fx/qfxtextinput_p.h @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE class QFxTextInputPrivate : public QFxPaintedItemPrivate { - Q_DECLARE_PUBLIC(QFxTextInput); + Q_DECLARE_PUBLIC(QFxTextInput) public: QFxTextInputPrivate() : control(new QLineControl(QString())), color((QRgb)0), style(QFxText::Normal), diff --git a/src/declarative/qml/qmlinfo.cpp b/src/declarative/qml/qmlinfo.cpp index 862d6ba..e68deae 100644 --- a/src/declarative/qml/qmlinfo.cpp +++ b/src/declarative/qml/qmlinfo.cpp @@ -77,7 +77,7 @@ void qmlInfo(const QString& msg, QObject* object) { QString pos = QLatin1String("QML"); if (object) { - pos += " "; + pos += QLatin1String(" "); pos += QLatin1String(object->metaObject()->className()); } QmlDeclarativeData *ddata = QmlDeclarativeData::get(object); -- cgit v0.12 From db695ff137e53f5285f5bb90f1a50281c27a4281 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 15 Oct 2009 16:29:57 +1000 Subject: doc --- src/declarative/fx/qfxtext.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/declarative/fx/qfxtext.cpp b/src/declarative/fx/qfxtext.cpp index c26ed2c..4d02f0d 100644 --- a/src/declarative/fx/qfxtext.cpp +++ b/src/declarative/fx/qfxtext.cpp @@ -427,9 +427,13 @@ void QFxText::setTextFormat(TextFormat format) This property cannot be used with wrap enabled or with rich text. - Eliding can be ElideNone, ElideLeft, ElideMiddle, or ElideRight. + Eliding can be ElideNone (the default), ElideLeft, ElideMiddle, or ElideRight. - ElideNone is the default. + If the text is a multi-length string, and the mode is not ElideNone, + the first string that fits will be used, otherwise the last will be elided. + + Multi-length strings are ordered from longest to shortest, separated by the + Unicode "String Terminator" character U009C (write this in QML with "\\x9C"). */ Qt::TextElideMode QFxText::elideMode() const { -- cgit v0.12 From 7cc04115db6f9fa2d79d02d32cff38e4ecd8c52b Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 15 Oct 2009 17:09:38 +1000 Subject: Some improvements to loader --- examples/declarative/loader/Browser.qml | 58 ++++++++++++++++++---------- examples/declarative/loader/loader.pro | 9 +++++ examples/declarative/loader/main.cpp | 42 +++++++++++++++----- src/declarative/extra/qmlfolderlistmodel.cpp | 9 +++++ src/declarative/extra/qmlfolderlistmodel.h | 3 ++ 5 files changed, 90 insertions(+), 31 deletions(-) diff --git a/examples/declarative/loader/Browser.qml b/examples/declarative/loader/Browser.qml index 5f972f1..9eedd4e 100644 --- a/examples/declarative/loader/Browser.qml +++ b/examples/declarative/loader/Browser.qml @@ -2,13 +2,14 @@ import Qt 4.6 Rectangle { id: root + property bool keyPressed: false width: parent.width height: parent.height - color: palette.base + color: palette.window FolderListModel { id: folders nameFilters: [ "*.qml" ] -// folder: "E:" + folder: "E:" } SystemPalette { id: palette; colorGroup: Qt.Active } @@ -25,7 +26,7 @@ Rectangle { } } width: root.width - height: 32 + height: 48 color: "transparent" Rectangle { id: highlight; visible: false @@ -36,15 +37,15 @@ Rectangle { } } Item { - width: 32; height: 32 + width: 46; height: 46 Image { source: "images/fileopen.png"; anchors.centerIn: parent; visible: folders.isFolder(index)} } Text { id: nameText anchors.fill: parent; verticalAlignment: "AlignVCenter" - text: fileName; anchors.leftMargin: 32 - font.pointSize: 10 - color: palette.windowText + text: fileName; anchors.leftMargin: 48 + font.pixelSize: 32 + color: wrapper.isCurrentItem ? palette.highlightedText : palette.text } MouseRegion { id: mouseRegion @@ -62,13 +63,6 @@ Rectangle { } } - Script { - function up(path) { - var pos = path.toString().lastIndexOf("/"); - return path.toString().substring(0, pos); - } - } - ListView { id: view anchors.top: titleBar.bottom @@ -77,37 +71,59 @@ Rectangle { anchors.bottom: parent.bottom model: folders delegate: folderDelegate - highlight: Rectangle { color: "#FFFBAF" } + highlight: Rectangle { color: palette.highlight; visible: root.keyPressed } clip: true focus: true + pressDelay: 100 + Keys.onPressed: { - if (event.key == Qt.Key_Return || event.key == Qt.Key_Select) { + root.keyPressed = true; + if (event.key == Qt.Key_Return || event.key == Qt.Key_Select || event.key == Qt.Key_Right) { view.currentItem.launch(); event.accepted = true; } } + Keys.onLeftPressed: folders.folder = up(folders.folder) } Rectangle { id: titleBar width: parent.width - height: 32 - color: palette.button; border.color: palette.mid + height: 48 + color: palette.lighter(palette.window); border.color: palette.mid Rectangle { id: upButton - width: 30 + width: 48 height: titleBar.height border.color: palette.mid; color: "transparent" - MouseRegion { anchors.fill: parent; onClicked: folders.folder = up(folders.folder) } + + Script { + function up(path) { + var pos = path.toString().lastIndexOf("/"); + return path.toString().substring(0, pos); + } + } + Image { anchors.centerIn: parent; source: "images/up.png" } + MouseRegion { id: upRegion; anchors.fill: parent + onClicked: if (folders.parentFolder != "") folders.folder = folders.parentFolder + } + states: [ + State { + name: "pressed" + when: upRegion.pressed + PropertyChanges { target: upButton; color: palette.highlightedText } + } + ] } Text { anchors.left: upButton.right; anchors.right: parent.right; height: parent.height anchors.leftMargin: 4; anchors.rightMargin: 4 - text: folders.folder; color: palette.buttonText + text: folders.folder; color: palette.text elide: "ElideLeft"; horizontalAlignment: "AlignRight"; verticalAlignment: "AlignVCenter" + font.pixelSize: 32 } } } diff --git a/examples/declarative/loader/loader.pro b/examples/declarative/loader/loader.pro index 089eaff..9b03b8f 100644 --- a/examples/declarative/loader/loader.pro +++ b/examples/declarative/loader/loader.pro @@ -7,3 +7,12 @@ target.path = $$[QT_INSTALL_EXAMPLES]/declarative/loader sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS loader.pro sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/loader INSTALLS += target sources + +symbian { +# TARGET.UID3 = + include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) + TARGET.EPOCHEAPSIZE = 100000 20000000 + HEADERS += $$QT_SOURCE_TREE/examples/network/ftp/sym_iap_util.h + LIBS += -lesock -lconnmon -linsock + TARGET.CAPABILITY = NetworkServices +} diff --git a/examples/declarative/loader/main.cpp b/examples/declarative/loader/main.cpp index fbae5f1..0993814 100644 --- a/examples/declarative/loader/main.cpp +++ b/examples/declarative/loader/main.cpp @@ -15,6 +15,15 @@ #include #include #include +#include + +#if defined (Q_OS_SYMBIAN) +#define SYMBIAN_NETWORK_INIT +#endif + +#if defined (SYMBIAN_NETWORK_INIT) +#include "sym_iap_util.h" +#endif QmlView *canvas = 0; @@ -30,13 +39,11 @@ public: setLayout(layout); #ifdef Q_OS_SYMBIAN QAction *closeAction = new QAction("Close", this); - closeAction->setSoftKeyRole(QAction::BackSoftKey); + closeAction->setSoftKeyRole(QAction::NegativeSoftKey); connect(closeAction, SIGNAL(triggered()), this, SLOT(close())); - - QList softKeys; - softKeys.append(closeAction); - setSoftKeys(softKeys); + addAction(closeAction); #endif + connect(logText, SIGNAL(textChanged()), this, SIGNAL(textChanged())); } void append(const QString &text) { @@ -50,6 +57,9 @@ public: return logger; } +signals: + void textChanged(); + private: QPlainTextEdit *logText; }; @@ -112,7 +122,7 @@ public: } } - canvas->setUrl(fileName); + canvas->setUrl(url); canvas->execute(); } @@ -124,8 +134,9 @@ class MainWindow : public QMainWindow { Q_OBJECT public: - MainWindow() : QMainWindow() {} - + MainWindow() : QMainWindow() + { + } public slots: void toggleFullScreen() @@ -149,6 +160,13 @@ public slots: Logger::instance()->show(); #endif } + + void enableNetwork() + { +#if defined(SYMBIAN_NETWORK_INIT) + qt_SetDefaultIap(); +#endif + } }; class ConfiguredNetworkAccessManager : public QNetworkAccessManager { @@ -185,8 +203,6 @@ int main(int argc, char *argv[]) canvas->setFocusPolicy(Qt::StrongFocus); canvas->engine()->setNetworkAccessManager(new ConfiguredNetworkAccessManager); - mw->setCentralWidget(canvas); - QMenuBar *mb = mw->menuBar(); QAction *showLogAction = new QAction("View Log...", mw); mb->addAction(showLogAction); @@ -194,6 +210,11 @@ int main(int argc, char *argv[]) QAction *toggleFSAction = new QAction("Fullscreen", mw); mb->addAction(toggleFSAction); QObject::connect(toggleFSAction, SIGNAL(triggered()), mw, SLOT(toggleFullScreen())); +#if defined(SYMBIAN_NETWORK_INIT) + QAction *enableNetworkAction = new QAction("Enable Network", mw); + mb->addAction(enableNetworkAction); + QObject::connect(enableNetworkAction, SIGNAL(triggered()), mw, SLOT(enableNetwork())); +#endif QmlContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("qmlLauncher", launcher); @@ -205,6 +226,7 @@ int main(int argc, char *argv[]) mw->show(); #endif canvas->execute(); + mw->setCentralWidget(canvas); return app.exec(); } diff --git a/src/declarative/extra/qmlfolderlistmodel.cpp b/src/declarative/extra/qmlfolderlistmodel.cpp index bdea03f..4a7c2f1 100644 --- a/src/declarative/extra/qmlfolderlistmodel.cpp +++ b/src/declarative/extra/qmlfolderlistmodel.cpp @@ -195,6 +195,15 @@ void QmlFolderListModel::setFolder(const QString &folder) } } +QString QmlFolderListModel::parentFolder() const +{ + Q_D(const QmlFolderListModel); + int pos = d->folder.lastIndexOf('/'); + if (pos == -1) + return QString(); + return d->folder.left(pos); +} + /*! \qmlproperty list FolderListModel::nameFilters diff --git a/src/declarative/extra/qmlfolderlistmodel.h b/src/declarative/extra/qmlfolderlistmodel.h index 24a3ac6..6bb1c4b 100644 --- a/src/declarative/extra/qmlfolderlistmodel.h +++ b/src/declarative/extra/qmlfolderlistmodel.h @@ -61,6 +61,7 @@ class Q_DECLARATIVE_EXPORT QmlFolderListModel : public QListModelInterface, publ Q_INTERFACES(QmlParserStatus) Q_PROPERTY(QString folder READ folder WRITE setFolder NOTIFY folderChanged) + Q_PROPERTY(QString parentFolder READ parentFolder NOTIFY folderChanged) Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters) Q_PROPERTY(SortField sortField READ sortField WRITE setSortField) Q_PROPERTY(bool sortReversed READ sortReversed WRITE setSortReversed) @@ -77,6 +78,8 @@ public: QString folder() const; void setFolder(const QString &folder); + QString parentFolder() const; + QStringList nameFilters() const; void setNameFilters(const QStringList &filters); -- cgit v0.12 From 2967e68f9a3bae4f5a2865ac901b08d8b6f0f0f1 Mon Sep 17 00:00:00 2001 From: Roberto Raggi Date: Thu, 15 Oct 2009 10:18:09 +0200 Subject: Simplified the bindings rewriter. The rewriter needs to know if an ExpressionStatement is part of a loop and an integer is definitely enough for that. --- src/declarative/qml/qmlrewrite.cpp | 27 ++++++++++++++------------- src/declarative/qml/qmlrewrite_p.h | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/declarative/qml/qmlrewrite.cpp b/src/declarative/qml/qmlrewrite.cpp index 19b88cc..43b2529 100644 --- a/src/declarative/qml/qmlrewrite.cpp +++ b/src/declarative/qml/qmlrewrite.cpp @@ -71,6 +71,7 @@ QString RewriteBinding::rewrite(QString code, unsigned position, TextWriter w; _writer = &w; _position = position; + _inLoop = 0; accept(node); @@ -111,7 +112,7 @@ bool RewriteBinding::visit(AST::Block *ast) bool RewriteBinding::visit(AST::ExpressionStatement *ast) { - if (_loopStack.isEmpty()) { + if (! _inLoop) { unsigned startOfExpressionStatement = ast->firstSourceLocation().begin() - _position; _writer->replace(startOfExpressionStatement, 0, QLatin1String("return ")); } @@ -121,68 +122,68 @@ bool RewriteBinding::visit(AST::ExpressionStatement *ast) bool RewriteBinding::visit(AST::DoWhileStatement *ast) { - _loopStack.append(ast); + ++_inLoop; return true; } void RewriteBinding::endVisit(AST::DoWhileStatement *) { - _loopStack.removeLast(); + --_inLoop; } bool RewriteBinding::visit(AST::WhileStatement *ast) { - _loopStack.append(ast); + ++_inLoop; return true; } void RewriteBinding::endVisit(AST::WhileStatement *) { - _loopStack.removeLast(); + --_inLoop; } bool RewriteBinding::visit(AST::ForStatement *ast) { - _loopStack.append(ast); + ++_inLoop; return true; } void RewriteBinding::endVisit(AST::ForStatement *) { - _loopStack.removeLast(); + --_inLoop; } bool RewriteBinding::visit(AST::LocalForStatement *ast) { - _loopStack.append(ast); + ++_inLoop; return true; } void RewriteBinding::endVisit(AST::LocalForStatement *) { - _loopStack.removeLast(); + --_inLoop; } bool RewriteBinding::visit(AST::ForEachStatement *ast) { - _loopStack.append(ast); + ++_inLoop; return true; } void RewriteBinding::endVisit(AST::ForEachStatement *) { - _loopStack.removeLast(); + --_inLoop; } bool RewriteBinding::visit(AST::LocalForEachStatement *ast) { - _loopStack.append(ast); + ++_inLoop; return true; } void RewriteBinding::endVisit(AST::LocalForEachStatement *) { - _loopStack.removeLast(); + --_inLoop; } } // namespace QmlRewrite diff --git a/src/declarative/qml/qmlrewrite_p.h b/src/declarative/qml/qmlrewrite_p.h index 449b219..59057d5 100644 --- a/src/declarative/qml/qmlrewrite_p.h +++ b/src/declarative/qml/qmlrewrite_p.h @@ -99,7 +99,7 @@ protected: virtual void endVisit(AST::LocalForEachStatement *ast); private: - QList _loopStack; + int _inLoop; }; } // namespace QmlRewrite -- cgit v0.12 From 2eb67032ea81aa105a854644f337ad5377c2994e Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 15 Oct 2009 18:28:03 +1000 Subject: Fix dynamic example Had some accidental global vars Task-number: One of the QT-2270s --- examples/declarative/dynamic/dynamic.qml | 8 +++++--- src/declarative/qml/qmlobjectscriptclass.cpp | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/declarative/dynamic/dynamic.qml b/examples/declarative/dynamic/dynamic.qml index 66fdf87..2c6a8e0 100644 --- a/examples/declarative/dynamic/dynamic.qml +++ b/examples/declarative/dynamic/dynamic.qml @@ -8,6 +8,7 @@ Rectangle { Script { source: "dynamic.js" } property bool extendStars: false + property var fourthBox: undefined Item { id: targetItem; x: 100; y: 100; } Item { id: targetItem2; x: 0; y: 300; } @@ -20,7 +21,7 @@ Rectangle { MouseRegion { anchors.fill: parent - onClicked: { a = createWithComponent(); } + onClicked: { var a = createWithComponent(); } } } @@ -47,8 +48,8 @@ Rectangle { MouseRegion { anchors.fill: parent onClicked: { - if (fourthBox == null) { - a = createQml(targetItem2); + if (fourthBox == null || fourthBox == undefined) { + var a = createQml(targetItem2); if (a != null) { a.parent = targetItem2;//BUG: this should happen automatically fourthBox = a; @@ -68,6 +69,7 @@ Rectangle { Particles { x: 0 y: 0 + z: 10 count: 20 lifeSpan: 500 width: 100 diff --git a/src/declarative/qml/qmlobjectscriptclass.cpp b/src/declarative/qml/qmlobjectscriptclass.cpp index 122db51..ae2cfcc 100644 --- a/src/declarative/qml/qmlobjectscriptclass.cpp +++ b/src/declarative/qml/qmlobjectscriptclass.cpp @@ -250,6 +250,7 @@ void QmlObjectScriptClass::setProperty(QObject *obj, Q_ASSERT(lastData); QmlEnginePrivate *enginePriv = QmlEnginePrivate::get(engine); + Q_ASSERT(enginePriv->currentExpression); // ### Can well known types be optimized? QVariant v = QmlScriptClass::toVariant(engine, value); -- cgit v0.12