From 68073bbcde2d1b12d36f0c58aab1fc20f02ab967 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Fri, 18 Jun 2010 13:31:50 +0200 Subject: qdoc: Added a workaround for QML/Qt class name clashes. Reviewed-by: Trust Me --- tools/qdoc3/codemarker.cpp | 12 +++++++++++- tools/qdoc3/cppcodeparser.cpp | 7 ++++++- tools/qdoc3/node.cpp | 13 ++++++++++++- tools/qdoc3/node.h | 6 +++--- tools/qdoc3/pagegenerator.cpp | 3 ++- tools/qdoc3/tree.cpp | 10 +++++++--- 6 files changed, 41 insertions(+), 10 deletions(-) diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp index 818a91f..33ceaf5 100644 --- a/tools/qdoc3/codemarker.cpp +++ b/tools/qdoc3/codemarker.cpp @@ -257,6 +257,7 @@ QString CodeMarker::typified(const QString &string) QString CodeMarker::taggedNode(const Node* node) { QString tag; + QString name = node->name(); switch (node->type()) { case Node::Namespace: @@ -277,11 +278,20 @@ QString CodeMarker::taggedNode(const Node* node) case Node::Property: tag = QLatin1String("@property"); break; +#ifdef QDOC_QML + case Node::Fake: + if (node->subType() == Node::QmlClass) { + if (node->name().startsWith(QLatin1String("QML:"))) + name = name.mid(4); // remove the "QML:" prefix + } + tag = QLatin1String("@property"); + break; +#endif default: tag = QLatin1String("@unknown"); break; } - return QLatin1Char('<') + tag + QLatin1Char('>') + protect(node->name()) + return QLatin1Char('<') + tag + QLatin1Char('>') + protect(name) + QLatin1String("'); } diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index 13678af..caee30b 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -728,7 +728,10 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc, if (n) classNode = static_cast(n); } - return new QmlClassNode(tre->root(), names[0], classNode); + if (names[0].startsWith("Q")) + return new QmlClassNode(tre->root(), QLatin1String("QML:")+names[0], classNode); + else + return new QmlClassNode(tre->root(), names[0], classNode); } else if (command == COMMAND_QMLBASICTYPE) { #if 0 @@ -752,6 +755,8 @@ Node *CppCodeParser::processTopicCommand(const Doc& doc, QString type; QmlClassNode* qmlClass = 0; if (splitQmlMethodArg(doc,arg,type,element)) { + if (element.startsWith(QLatin1String("Q"))) + element = QLatin1String("QML:") + element; Node* n = tre->findNode(QStringList(element),Node::Fake); if (n && n->subType() == Node::QmlClass) { qmlClass = static_cast(n); diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 4664e9d..6a87639 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -871,6 +871,14 @@ FakeNode::FakeNode(InnerNode *parent, const QString& name, SubType subtype) } /*! + Returns the fake node's title. This is used for the page title. +*/ +QString FakeNode::title() const +{ + return tle; +} + +/*! Returns the fake node's full title, which is usually just title(), but for some SubType values is different from title() @@ -1324,7 +1332,10 @@ QmlClassNode::QmlClassNode(InnerNode *parent, const ClassNode* cn) : FakeNode(parent, name, QmlClass), cnode(cn) { - setTitle((qmlOnly ? "" : "QML ") + name + " Element"); + if (name.startsWith(QLatin1String("QML:"))) + setTitle((qmlOnly ? QLatin1String("") : QLatin1String("QML ")) + name.mid(4) + QLatin1String(" Element")); + else + setTitle((qmlOnly ? QLatin1String("") : QLatin1String("QML ")) + name + QLatin1String(" Element")); } /*! diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index 523394d..90295ee 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -362,9 +362,9 @@ class FakeNode : public InnerNode void addGroupMember(Node *node) { gr.append(node); } SubType subType() const { return sub; } - QString title() const { return tle; } - QString fullTitle() const; - QString subTitle() const; + virtual QString title() const; + virtual QString fullTitle() const; + virtual QString subTitle() const; const NodeList &groupMembers() const { return gr; } virtual QString nameForLists() const { return title(); } diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp index cd364ef..a187c2e 100644 --- a/tools/qdoc3/pagegenerator.cpp +++ b/tools/qdoc3/pagegenerator.cpp @@ -209,7 +209,8 @@ QString PageGenerator::fileBase(const Node *node) const */ if ((p->subType() == Node::QmlClass) || (p->subType() == Node::QmlBasicType)) { - base.prepend("qml-"); + if (!base.startsWith(QLatin1String("QML:"))) + base.prepend("qml-"); } #endif if (!pp || pp->name().isEmpty() || pp->type() == Node::Fake) diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp index 31bbf54..d31de4d 100644 --- a/tools/qdoc3/tree.cpp +++ b/tools/qdoc3/tree.cpp @@ -1952,9 +1952,13 @@ QString Tree::fullDocumentLocation(const Node *node) const else if (node->type() == Node::Fake) { #ifdef QDOC_QML if ((node->subType() == Node::QmlClass) || - (node->subType() == Node::QmlBasicType)) - return "qml-" + node->fileBase() + ".html"; - else + (node->subType() == Node::QmlBasicType)) { + QString fb = node->fileBase(); + if (fb.startsWith(QLatin1String("QML:"))) + return node->fileBase() + ".html"; + else + return "qml-" + node->fileBase() + ".html"; + } else #endif parentName = node->fileBase() + ".html"; } -- cgit v0.12 From 5b71c12c8ddb60bdc740fe7e3034cc5189d63f7e Mon Sep 17 00:00:00 2001 From: David Boddie Date: Fri, 18 Jun 2010 13:36:56 +0200 Subject: Doc: Changed links to explicitly refer to QML objects. Reviewed-by: Trust Me --- src/declarative/qml/qdeclarativeengine.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 5c4d229..86053c4 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -183,11 +183,11 @@ data types. This is primarily useful when setting the properties of an item when the property has one of the following types: \list -\o \c color - use \l{Qt::rgba()}{Qt.rgba()}, \l{Qt::hsla()}{Qt.hsla()}, \l{Qt::darker()}{Qt.darker()}, \l{Qt::lighter()}{Qt.lighter()} or \l{Qt::tint()}{Qt.tint()} -\o \c rect - use \l{Qt::rect()}{Qt.rect()} -\o \c point - use \l{Qt::point()}{Qt.point()} -\o \c size - use \l{Qt::size()}{Qt.size()} -\o \c vector3d - use \l{Qt::vector3d()}{Qt.vector3d()} +\o \c color - use \l{QML:Qt::rgba()}{Qt.rgba()}, \l{QML:Qt::hsla()}{Qt.hsla()}, \l{QML:Qt::darker()}{Qt.darker()}, \l{QML:Qt::lighter()}{Qt.lighter()} or \l{QML:Qt::tint()}{Qt.tint()} +\o \c rect - use \l{QML:Qt::rect()}{Qt.rect()} +\o \c point - use \l{QML:Qt::point()}{Qt.point()} +\o \c size - use \l{QML:Qt::size()}{Qt.size()} +\o \c vector3d - use \l{QML:Qt::vector3d()}{Qt.vector3d()} \endlist There are also string based constructors for these types. See \l{qdeclarativebasictypes.html}{QML Basic Types} for more information. @@ -197,12 +197,12 @@ There are also string based constructors for these types. See \l{qdeclarativebas The Qt object contains several functions for formatting dates and times. \list - \o \l{Qt::formatDateTime}{string Qt.formatDateTime(datetime date, variant format)} - \o \l{Qt::formatDate}{string Qt.formatDate(datetime date, variant format)} - \o \l{Qt::formatTime}{string Qt.formatTime(datetime date, variant format)} + \o \l{QML:Qt::formatDateTime}{string Qt.formatDateTime(datetime date, variant format)} + \o \l{QML:Qt::formatDate}{string Qt.formatDate(datetime date, variant format)} + \o \l{QML:Qt::formatTime}{string Qt.formatTime(datetime date, variant format)} \endlist -The format specification is described at \l{Qt::formatDateTime}{Qt.formatDateTime}. +The format specification is described at \l{QML:Qt::formatDateTime}{Qt.formatDateTime}. \section1 Dynamic Object Creation @@ -211,8 +211,8 @@ items from files or strings. See \l{Dynamic Object Management} for an overview of their use. \list - \o \l{Qt::createComponent()}{object Qt.createComponent(url)} - \o \l{Qt::createQmlObject()}{object Qt.createQmlObject(string qml, object parent, string filepath)} + \o \l{QML:Qt::createComponent()}{object Qt.createComponent(url)} + \o \l{QML:Qt::createQmlObject()}{object Qt.createQmlObject(string qml, object parent, string filepath)} \endlist */ -- cgit v0.12 From ba76a029b9e6970ff5785ebfc65fa9e5b50ddb17 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Fri, 18 Jun 2010 15:26:48 +0200 Subject: Doc: Fixed links in the QML documentation. Reviewed-by: Trust Me --- doc/src/declarative/basictypes.qdoc | 16 ++++++++-------- doc/src/declarative/dynamicobjects.qdoc | 14 +++++++------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc index 87dab81..4beee08 100644 --- a/doc/src/declarative/basictypes.qdoc +++ b/doc/src/declarative/basictypes.qdoc @@ -171,8 +171,8 @@ Rectangle { color: "#800000FF" } \endqml - Or with the \l{Qt::rgba()}{Qt.rgba()}, \l{Qt::hsla()}{Qt.hsla()}, \l{Qt::darker()}{Qt.darker()}, - \l{Qt::lighter()}{Qt.lighter()} or \l{Qt::tint()}{Qt.tint()} functions: + Or with the \l{QML:Qt::rgba()}{Qt.rgba()}, \l{QML:Qt::hsla()}{Qt.hsla()}, \l{QML:Qt::darker()}{Qt.darker()}, + \l{QML:Qt::lighter()}{Qt.lighter()} or \l{QML:Qt::tint()}{Qt.tint()} functions: \qml Rectangle { color: Qt.rgba(255, 0, 0, 1) } @@ -195,7 +195,7 @@ CustomObject { myPointProperty: "0,20" } \endqml - Or use the \l{Qt::point()}{Qt.point()} function: + Or use the \l{QML:Qt::point()}{Qt.point()} function: \qml CustomObject { myPointProperty: Qt.point(0, 20) } @@ -227,7 +227,7 @@ LayoutItem { preferredSize: "150x50" } \endqml - Or use the \l{Qt::size()}{Qt.size()} function: + Or use the \l{QML:Qt::size()}{Qt.size()} function: \qml LayoutItem { preferredSize: Qt.size(150, 50) } @@ -260,7 +260,7 @@ CustomObject { myRectProperty: "50,50,100x100" } \endqml - Or use the \l{Qt::rect()}{Qt.rect()} function: + Or use the \l{QML:Qt::rect()}{Qt.rect()} function: \qml CustomObject { myRectProperty: Qt.rect(50, 50, 100, 100) } @@ -283,7 +283,7 @@ \endqml To read a date value returned from a C++ extension class, use - \l{Qt::formatDate()}{Qt.formatDate()} and \l{Qt::formatDateTime()}{Qt.formatDateTime()}. + \l{QML:Qt::formatDate()}{Qt.formatDate()} and \l{QML:Qt::formatDateTime()}{Qt.formatDateTime()}. \sa {QML Basic Types} */ @@ -302,7 +302,7 @@ \endqml To read a time value returned from a C++ extension class, use - \l{Qt::formatTime()}{Qt.formatTime()} and \l{Qt::formatDateTime()}{Qt.formatDateTime()}. + \l{QML:Qt::formatTime()}{Qt.formatTime()} and \l{QML:Qt::formatDateTime()}{Qt.formatDateTime()}. \sa {QML Basic Types} */ @@ -400,7 +400,7 @@ Rotation { angle: 60; axis: "0,1,0" } \endqml - or with the \l{Qt::vector3d()}{Qt.vector3d()} function: + or with the \l{QML:Qt::vector3d()}{Qt.vector3d()} function: \qml Rotation { angle: 60; axis: Qt.vector3d(0, 1, 0) } diff --git a/doc/src/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc index 5e606f4..edce3f2 100644 --- a/doc/src/declarative/dynamicobjects.qdoc +++ b/doc/src/declarative/dynamicobjects.qdoc @@ -56,15 +56,15 @@ application, and there are no C++ components involved. \section1 Creating Objects Dynamically There are two ways to create objects dynamically from JavaScript. You can either call -\l {Qt::createComponent()}{Qt.createComponent()} to create -a component which instantiates items, or use \l{Qt::createQmlObject()}{Qt.createQmlObject()} +\l {QML:Qt::createComponent()}{Qt.createComponent()} to create +a component which instantiates items, or use \l{QML:Qt::createQmlObject()}{Qt.createQmlObject()} to create an item from a string of QML. Creating a component is better if you have a predefined item, and you want to create dynamic instances of that item; creating an item from a string of QML is useful when the item QML itself is generated at runtime. If you have a component specified in a QML file, you can dynamically load it with -the \l {Qt::createComponent()}{Qt.createComponent()} function on the \l{QML Global Object}. +the \l {QML:Qt::createComponent()}{Qt.createComponent()} function on the \l{QML Global Object}. This function takes the URL of the QML file as its only argument and returns a component object which can be used to create and load that QML file. @@ -98,10 +98,10 @@ in \c main.qml). After creating an item, you must set its parent to an item with Otherwise your dynamically created item will not appear in the scene. When using files with relative paths, the path should -be relative to the file where \l {Qt::createComponent()}{Qt.createComponent()} is executed. +be relative to the file where \l {QML:Qt::createComponent()}{Qt.createComponent()} is executed. If the QML component does not exist until runtime, you can create a QML item from -a string of QML using the \l{Qt::createQmlObject()}{Qt.createQmlObject()} function, as in the following example: +a string of QML using the \l{QML:Qt::createQmlObject()}{Qt.createQmlObject()} function, as in the following example: \snippet doc/src/snippets/declarative/createQmlObject.qml 0 @@ -121,9 +121,9 @@ the bindings in the dynamic item will no longer work. The actual creation context depends on how an item is created: \list -\o If \l {Qt::createComponent()}{Qt.createComponent()} is used, the creation context +\o If \l {QML:Qt::createComponent()}{Qt.createComponent()} is used, the creation context is the QDeclarativeContext in which this method is called -\o If \l{Qt::createQmlObject()}{Qt.createQmlObject()} +\o If \l{QML:Qt::createQmlObject()}{Qt.createQmlObject()} if called, it is the context of the item used as the second argument to this method \o If a \c {Component{}} item is defined and \l {Component::createObject()}{createObject()} is called on that item, it is the context in which the \c Component is defined -- cgit v0.12 From 318e1b3a78bc7114bacdce8bec019228d8ecab19 Mon Sep 17 00:00:00 2001 From: David Boddie Date: Wed, 23 Jun 2010 14:58:01 +0200 Subject: Doc: Fixed whitespace issues and added missing files to lists. Reviewed-by: Trust Me --- tools/qdoc3/test/qt-build-docs.qdocconf | 76 +++++++++++++-------------- tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf | 67 +++++++++++++---------- tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf | 14 ++++- 3 files changed, 90 insertions(+), 67 deletions(-) diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf index 09cbc45..140b81f 100644 --- a/tools/qdoc3/test/qt-build-docs.qdocconf +++ b/tools/qdoc3/test/qt-build-docs.qdocconf @@ -22,43 +22,43 @@ qhp.Qt.indexTitle = Qt Reference Documentation # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML qhp.Qt.extraFiles = index.html \ - images/bg_l.png \ - images/bg_l_blank.png \ - images/bg_r.png \ - images/box_bg.png \ - images/breadcrumb.png \ - images/bullet_gt.png \ - images/bullet_dn.png \ - images/bullet_sq.png \ - images/bullet_up.png \ - images/feedbackground.png \ - images/horBar.png \ - images/page.png \ - images/page_bg.png \ - images/sprites-combined.png \ - images/arrow-down.png \ - images/spinner.gif \ - images/stylesheet-coffee-plastique.png \ - images/taskmenuextension-example.png \ - images/coloreditorfactoryimage.png \ - images/dynamiclayouts-example.png \ - scripts/functions.js \ - scripts/jquery.js \ - scripts/shBrushCpp.js \ - scripts/shCore.js \ - scripts/shLegacy.js \ - scripts/narrow.js \ - scripts/superfish.js \ - style/shCore.css \ - style/shThemeDefault.css \ - style/narrow.css \ - style/superfish.css \ - style/superfish_skin.css \ - style/OfflineStyle.css \ - style/style_ie6.css \ - style/style_ie7.css \ - style/style_ie8.css \ - style/style.css + images/bg_l.png \ + images/bg_l_blank.png \ + images/bg_r.png \ + images/box_bg.png \ + images/breadcrumb.png \ + images/bullet_gt.png \ + images/bullet_dn.png \ + images/bullet_sq.png \ + images/bullet_up.png \ + images/feedbackground.png \ + images/horBar.png \ + images/page.png \ + images/page_bg.png \ + images/sprites-combined.png \ + images/arrow-down.png \ + images/spinner.gif \ + images/stylesheet-coffee-plastique.png \ + images/taskmenuextension-example.png \ + images/coloreditorfactoryimage.png \ + images/dynamiclayouts-example.png \ + scripts/functions.js \ + scripts/jquery.js \ + scripts/shBrushCpp.js \ + scripts/shCore.js \ + scripts/shLegacy.js \ + scripts/narrow.js \ + scripts/superfish.js \ + style/shCore.css \ + style/shThemeDefault.css \ + style/narrow.css \ + style/superfish.css \ + style/superfish_skin.css \ + style/OfflineStyle.css \ + style/style_ie6.css \ + style/style_ie7.css \ + style/style_ie8.css \ + style/style.css @@ -141,7 +141,7 @@ exampledirs = $QT_SOURCE_TREE/doc/src \ imagedirs = $QT_SOURCE_TREE/doc/src/images \ $QT_SOURCE_TREE/examples \ $QT_SOURCE_TREE/doc/src/declarative/pics \ - $QT_SOURCE_TREE/doc/src/template/images + $QT_SOURCE_TREE/doc/src/template/images outputdir = $QT_BUILD_TREE/doc/html tagfile = $QT_BUILD_TREE/doc/html/qt.tags base = file:$QT_BUILD_TREE/doc/html diff --git a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf index e517b33..7701cae 100644 --- a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf +++ b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf @@ -30,33 +30,43 @@ qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML qhp.Qt.extraFiles = index.html \ - images/bg_l.png \ - images/bg_l_blank.png \ - images/bg_r.png \ - images/box_bg.png \ - images/breadcrumb.png \ - images/bullet_gt.png \ - images/bullet_dn.png \ - images/bullet_sq.png \ - images/bullet_up.png \ - images/feedbackground.png \ - images/horBar.png \ - images/page.png \ - images/page_bg.png \ - images/sprites-combined.png \ - images/arrow-down.png \ - images/spinner.gif \ - images/stylesheet-coffee-plastique.png \ - images/taskmenuextension-example.png \ - images/coloreditorfactoryimage.png \ - images/dynamiclayouts-example.png \ - scripts/functions.js \ - scripts/jquery.js \ - style/OfflineStyle.css \ - style/style_ie6.css \ - style/style_ie7.css \ - style/style_ie8.css \ - style/style.css + images/bg_l.png \ + images/bg_l_blank.png \ + images/bg_r.png \ + images/box_bg.png \ + images/breadcrumb.png \ + images/bullet_gt.png \ + images/bullet_dn.png \ + images/bullet_sq.png \ + images/bullet_up.png \ + images/feedbackground.png \ + images/horBar.png \ + images/page.png \ + images/page_bg.png \ + images/sprites-combined.png \ + images/arrow-down.png \ + images/spinner.gif \ + images/stylesheet-coffee-plastique.png \ + images/taskmenuextension-example.png \ + images/coloreditorfactoryimage.png \ + images/dynamiclayouts-example.png \ + scripts/functions.js \ + scripts/jquery.js \ + scripts/shBrushCpp.js \ + scripts/shCore.js \ + scripts/shLegacy.js \ + scripts/narrow.js \ + scripts/superfish.js \ + style/shCore.css \ + style/shThemeDefault.css \ + style/narrow.css \ + style/superfish.css \ + style/superfish_skin.css \ + style/OfflineStyle.css \ + style/style_ie6.css \ + style/style_ie7.css \ + style/style_ie8.css \ + style/style.css language = Cpp @@ -102,7 +112,8 @@ exampledirs = $QT_SOURCE_TREE/doc/src \ imagedirs = $QT_SOURCE_TREE/doc/src/ja_JP/images \ $QT_SOURCE_TREE/doc/src/images \ $QT_SOURCE_TREE/examples \ - $QT_SOURCE_TREE/doc/src/template/images + $QT_SOURCE_TREE/doc/src/declarative/pics \ + $QT_SOURCE_TREE/doc/src/template/images outputdir = $QT_BUILD_TREE/doc/html_ja_JP tagfile = $QT_BUILD_TREE/doc/html_ja_JP/qt.tags base = file:$QT_BUILD_TREE/doc/html_ja_JP diff --git a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf index 909a2d4..be459d8 100644 --- a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf +++ b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf @@ -52,6 +52,17 @@ qhp.Qt.extraFiles = index.html \ images/dynamiclayouts-example.png \ scripts/functions.js \ scripts/jquery.js \ + scripts/shBrushCpp.js \ + scripts/shCore.js \ + scripts/shLegacy.js \ + scripts/narrow.js \ + scripts/superfish.js \ + style/shCore.css \ + style/shThemeDefault.css \ + style/narrow.css \ + style/superfish.css \ + style/superfish_skin.css \ + style/OfflineStyle.css \ style/style_ie6.css \ style/style_ie7.css \ style/style_ie8.css \ @@ -99,7 +110,8 @@ exampledirs = $QT_SOURCE_TREE/doc/src \ $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs imagedirs = $QT_SOURCE_TREE/doc/src/images \ $QT_SOURCE_TREE/examples \ - $QT_SOURCE_TREE/doc/src/template/images + $QT_SOURCE_TREE/doc/src/declarative/pics \ + $QT_SOURCE_TREE/doc/src/template/images outputdir = $QT_BUILD_TREE/doc/html_zh_CN tagfile = $QT_BUILD_TREE/doc/html_zh_CN/qt.tags base = file:$QT_BUILD_TREE/doc/html_zh_CN -- cgit v0.12 From 2e84a4d227818df8f4aa52e0e709cc161d25b528 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Mon, 28 Jun 2010 10:18:07 +0200 Subject: Updated JavaScriptCore from /home/khansen/dev/qtwebkit-qtscript-integration to javascriptcore-snapshot-28062010 ( f483443ccd7d21f2a57a794c4d00a63505d2f5d9 ) Revert our workaround for Mac OS VM tags issue, since it was fixed properly in r57583 (cherry-picked in 528ffd602cc5a501713cd768df0cf6870a36ddad) --- src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp | 8 ++------ src/3rdparty/javascriptcore/VERSION | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp index eafcc23..24873c8 100644 --- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp +++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp @@ -217,9 +217,7 @@ void Heap::destroy() NEVER_INLINE CollectorBlock* Heap::allocateBlock() { - // Disable the use of vm_map for the Qt build on Darwin, because when compiled on 10.4 - // it crashes on 10.5 -#if OS(DARWIN) && !PLATFORM(QT) +#if OS(DARWIN) vm_address_t address = 0; vm_map(current_task(), &address, BLOCK_SIZE, BLOCK_OFFSET_MASK, VM_FLAGS_ANYWHERE | VM_TAG_FOR_COLLECTOR_MEMORY, MEMORY_OBJECT_NULL, 0, FALSE, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_DEFAULT); #elif OS(SYMBIAN) @@ -315,9 +313,7 @@ NEVER_INLINE void Heap::freeBlock(size_t block) NEVER_INLINE void Heap::freeBlockPtr(CollectorBlock* block) { - // Disable the use of vm_deallocate for the Qt build on Darwin, because when compiled on 10.4 - // it crashes on 10.5 -#if OS(DARWIN) && !PLATFORM(QT) +#if OS(DARWIN) vm_deallocate(current_task(), reinterpret_cast(block), BLOCK_SIZE); #elif OS(SYMBIAN) userChunk->Free(reinterpret_cast(block)); diff --git a/src/3rdparty/javascriptcore/VERSION b/src/3rdparty/javascriptcore/VERSION index daecc37..4e01d20 100644 --- a/src/3rdparty/javascriptcore/VERSION +++ b/src/3rdparty/javascriptcore/VERSION @@ -4,8 +4,8 @@ This is a snapshot of JavaScriptCore from The commit imported was from the - javascriptcore-snapshot-16062010 branch/tag + javascriptcore-snapshot-28062010 branch/tag and has the sha1 checksum - 8b2d3443afca194f8ac50a63151dc9d19a150582 + f483443ccd7d21f2a57a794c4d00a63505d2f5d9 -- cgit v0.12 From 5b90f7c27e7e4a95c75421fa42345b3268707794 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Mon, 28 Jun 2010 11:43:01 +0200 Subject: doc: update the ECMAScript reference Added functions introduced in the 5th edition that are supported by JavaScriptCore, most notably the JSON object and "Array extras" (map, filter, etc.). Task-number: QTBUG-11735 --- doc/src/scripting/ecmascript.qdoc | 50 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/doc/src/scripting/ecmascript.qdoc b/doc/src/scripting/ecmascript.qdoc index 4497a0b..508bf3b 100644 --- a/doc/src/scripting/ecmascript.qdoc +++ b/doc/src/scripting/ecmascript.qdoc @@ -30,8 +30,9 @@ \title ECMAScript Reference \brief A list of objects, functions and properties supported by QtScript. - This reference contains a list of objects, functions and - properties supported by QtScript. + This reference contains a list of built-in objects, functions and + properties supported by QtScript. For a detailed description, see + the \l{ECMA-262} specification. \tableofcontents @@ -43,7 +44,6 @@ \o NaN \o Infinity \o undefined - \o Math \endlist \section2 Function Properties @@ -80,10 +80,33 @@ \o URIError \endlist + \section2 Other Properties + + \list + \o Math + \o JSON + \endlist + \section1 Object Objects + \section2 Object Constructor + + \section3 Function Properties + + \list + \o getPrototypeOf(O) + \o getOwnPropertyDescriptor(O, P) + \o getOwnPropertyNames(O) + \o create(O [, Properties]) + \o defineProperty(O, P, Attributes) + \o defineProperties(O, Properties) + \o keys(O) + \endlist + \section2 Object Prototype Object + \section3 Function Properties + \list \o toString() \o toLocaleString() @@ -124,6 +147,15 @@ \o sort(comparefn) \o splice(start, deleteCount[, item1 [, item2 [, ...]]]) \o unshift([item1 [, item2 [, ...]]]) + \o indexOf(searchElement [, fromIndex]) + \o lastIndexOf(searchElement [, fromIndex]) + \o every(callbackfn [, thisArg]) + \o some(callbackfn [, thisArg]) + \o forEach(callbackfn [, thisArg]) + \o map(callbackfn [, thisArg]) + \o filter(callbackfn [, thisArg]) + \o reduce(callbackfn [, initialValue]) + \o reduceRight(callbackfn [, initialValue]) \endlist \section1 String Objects @@ -151,6 +183,7 @@ \o toLocaleLowerCase() \o toUpperCase() \o toLocaleUpperCase() + \o trim() \endlist \section1 Boolean Objects @@ -264,6 +297,8 @@ \o setFullYear(year [, month [, date]]) \o setUTCFullYear(year [, month [, date]]) \o toUTCString() + \o toISOString() + \o toJSON() \endlist \section1 RegExp Objects @@ -295,4 +330,13 @@ \o toString() \endlist + \section1 The JSON Object + + \section2 Function Properties + + \list + \o parse(text [, reviver]) + \o stringify(value [, replacer [, space]]) + \endlist + */ -- cgit v0.12 From 94e7b873ed5c04d4850a9e36970906113f12cd55 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 28 Jun 2010 13:00:56 +0200 Subject: Don't load ciphers and system certificates for QSslSocket::supportsSsl() Loading these uses about 1 MB of memory and can be be deferred until it's actually needed. Reviewed-by: Peter Hartmann --- src/network/ssl/qsslsocket.cpp | 2 +- src/network/ssl/qsslsocket_openssl.cpp | 50 +++++++++++++++++++++++++++------- src/network/ssl/qsslsocket_p.h | 10 ++++++- 3 files changed, 50 insertions(+), 12 deletions(-) diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index a8c602a..f85fa84 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -1556,7 +1556,7 @@ QList QSslSocket::sslErrors() const */ bool QSslSocket::supportsSsl() { - return QSslSocketPrivate::ensureInitialized(); + return QSslSocketPrivate::supportsSsl(); } /*! diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 9bd93a2..fa26fe8 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -72,6 +72,9 @@ QT_BEGIN_NAMESPACE +bool QSslSocketPrivate::s_libraryLoaded = false; +bool QSslSocketPrivate::s_loadedCiphersAndCerts = false; + // Useful defines #define SSL_ERRORSTR() QString::fromLocal8Bit(q_ERR_error_string(q_ERR_get_error(), NULL)) @@ -398,19 +401,24 @@ void QSslSocketPrivate::deinitialize() /*! \internal - Declared static in QSslSocketPrivate, makes sure the SSL libraries have - been initialized. + Does the minimum amount of initialization to determine whether SSL + is supported or not. */ -bool QSslSocketPrivate::ensureInitialized() + +bool QSslSocketPrivate::supportsSsl() +{ + return ensureLibraryLoaded(); +} + +bool QSslSocketPrivate::ensureLibraryLoaded() { if (!q_resolveOpenSslSymbols()) return false; // Check if the library itself needs to be initialized. QMutexLocker locker(openssl_locks()->initLock()); - static int q_initialized = false; - if (!q_initialized) { - q_initialized = true; + if (!s_libraryLoaded) { + s_libraryLoaded = true; // Initialize OpenSSL. q_CRYPTO_set_id_callback(id_function); @@ -447,10 +455,33 @@ bool QSslSocketPrivate::ensureInitialized() if (!attempts) return false; } - - resetDefaultCiphers(); - setDefaultCaCertificates(systemCaCertificates()); } + return true; +} + +void QSslSocketPrivate::ensureCiphersAndCertsLoaded() +{ + if (s_loadedCiphersAndCerts) + return; + s_loadedCiphersAndCerts = true; + + resetDefaultCiphers(); + setDefaultCaCertificates(systemCaCertificates()); +} + +/*! + \internal + + Declared static in QSslSocketPrivate, makes sure the SSL libraries have + been initialized. +*/ + +void QSslSocketPrivate::ensureInitialized() +{ + if (!supportsSsl()) + return; + + ensureCiphersAndCertsLoaded(); //load symbols needed to receive certificates from system store #if defined(Q_OS_MAC) @@ -481,7 +512,6 @@ bool QSslSocketPrivate::ensureInitialized() qWarning("could not load crypt32 library"); // should never happen } #endif - return true; } /*! diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h index d3c3858..09775bc 100644 --- a/src/network/ssl/qsslsocket_p.h +++ b/src/network/ssl/qsslsocket_p.h @@ -108,7 +108,8 @@ public: // that was used for connecting to. QString verificationPeerName; - static bool ensureInitialized(); + static bool supportsSsl(); + static void ensureInitialized(); static void deinitialize(); static QList defaultCiphers(); static QList supportedCiphers(); @@ -154,6 +155,13 @@ public: virtual void disconnectFromHost() = 0; virtual void disconnected() = 0; virtual QSslCipher sessionCipher() const = 0; + +private: + static bool ensureLibraryLoaded(); + static void ensureCiphersAndCertsLoaded(); + + static bool s_libraryLoaded; + static bool s_loadedCiphersAndCerts; }; QT_END_NAMESPACE -- cgit v0.12