From 317e2c9199da58879b083b5561a69612ae0a4a41 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 30 Jun 2010 12:09:05 +0200 Subject: SSL backend: correct ordering of root CA certificates in the store Some CAs have several root certificates with the same SubjectInfo, but different expiration date. This means that OpenSSL needs to choose the valid root certificate over the expired ones when verifying a certificate chain. Apparently, the certs added to the store first are the ones that get used first, so we add the expired ones at the end. Reviewed-by: Thiago Macieira Task-number: QTBUG-11664 --- src/network/ssl/qsslsocket_openssl.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index fa26fe8..30428ff 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -299,8 +299,20 @@ init_context: } // Add all our CAs to this store. - foreach (const QSslCertificate &caCertificate, q->caCertificates()) + QList expiredCerts; + foreach (const QSslCertificate &caCertificate, q->caCertificates()) { + // add expired certs later, so that the + // valid ones are used before the expired ones + if (! caCertificate.isValid()) { + expiredCerts.append(caCertificate); + } else { + q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); + } + } + // now add the expired certs + foreach (const QSslCertificate &caCertificate, expiredCerts) { q_X509_STORE_add_cert(ctx->cert_store, (X509 *)caCertificate.handle()); + } // Register a custom callback to get all verification errors. X509_STORE_set_verify_cb_func(ctx->cert_store, q_X509Callback); @@ -597,7 +609,7 @@ QList QSslSocketPrivate::systemCaCertificates() if(!pc) break; QByteArray der((const char *)(pc->pbCertEncoded), static_cast(pc->cbCertEncoded)); - QSslCertificate cert(der,QSsl::Der); + QSslCertificate cert(der, QSsl::Der); systemCerts.append(cert); } ptrCertCloseStore(hSystemStore, 0); -- cgit v0.12 From 08e2c776bf2ce6976276bcdcce342ae8c4675565 Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Wed, 9 Jun 2010 13:08:32 +0200 Subject: Fix regression in popup behavior on Windows Popups without a parent would unintentionally deactivate their parents following af7d2b2127d. In order to avoid this, we do not activate popups when there is an active application window. System tray popups are still activated. Reviewed-by: denis Task-number: QTBUG-11061 --- src/gui/kernel/qwidget_win.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index 9c65aa0..0f05c6b 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -1167,7 +1167,7 @@ void QWidgetPrivate::show_sys() // This is to resolve the problem where popups are opened from the // system tray and not being implicitly activated if (q->windowType() == Qt::Popup && - (!q->parentWidget() || !q->parentWidget()->isActiveWindow())) + !q->parentWidget() && !qApp->activeWindow()) q->activateWindow(); } -- cgit v0.12 From 8577353b2a5155600e672955e7c6a61e9e9519ca Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig Date: Fri, 11 Jun 2010 12:53:07 +0200 Subject: Fixed size hint for combo box on windows When you use larger fonts or DPI on windows, the combobox can calculate a size hint that results of text eliding on items. This fix removes some duplicate code in Vista style and adds a dpi dependant size hint for XP style. Task-number: QTBUG-7552 Reviewed-by: richard --- src/gui/styles/qwindowsvistastyle.cpp | 25 +------------------------ src/gui/styles/qwindowsxpstyle.cpp | 4 +++- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/src/gui/styles/qwindowsvistastyle.cpp b/src/gui/styles/qwindowsvistastyle.cpp index 67a7b85..8511592 100644 --- a/src/gui/styles/qwindowsvistastyle.cpp +++ b/src/gui/styles/qwindowsvistastyle.cpp @@ -1926,30 +1926,7 @@ QSize QWindowsVistaStyle::sizeFromContents(ContentsType type, const QStyleOption return QWindowsStyle::sizeFromContents(type, option, size, widget); QSize sz(size); - - QSize newSize = QWindowsXPStyle::sizeFromContents(type, option, size, widget); switch (type) { - case CT_LineEdit: - case CT_ComboBox: - { - HTHEME theme = pOpenThemeData(0, L"Button"); - MARGINS borderSize; - if (theme) { - int result = pGetThemeMargins(theme, - NULL, - BP_PUSHBUTTON, - PBS_NORMAL, - TMT_CONTENTMARGINS, - NULL, - &borderSize); - if (result == S_OK) { - sz += QSize(borderSize.cxLeftWidth + borderSize.cxRightWidth - 2, - borderSize.cyBottomHeight + borderSize.cyTopHeight - 2); - } - sz += QSize(23, 0); //arrow button - } - } - return sz; case CT_MenuItem: sz = QWindowsXPStyle::sizeFromContents(type, option, size, widget); int minimumHeight; @@ -1990,7 +1967,7 @@ QSize QWindowsVistaStyle::sizeFromContents(ContentsType type, const QStyleOption default: break; } - return newSize; + return QWindowsXPStyle::sizeFromContents(type, option, size, widget); } /*! diff --git a/src/gui/styles/qwindowsxpstyle.cpp b/src/gui/styles/qwindowsxpstyle.cpp index efb1224..8743807 100644 --- a/src/gui/styles/qwindowsxpstyle.cpp +++ b/src/gui/styles/qwindowsxpstyle.cpp @@ -3678,7 +3678,9 @@ QSize QWindowsXPStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt sz += QSize(borderSize.cxLeftWidth + borderSize.cxRightWidth - 2, borderSize.cyBottomHeight + borderSize.cyTopHeight - 2); } - sz += QSize(23, 0); //arrow button + const int textMargins = 2*(proxy()->pixelMetric(PM_FocusFrameHMargin) + 1); + sz += QSize(qMax(pixelMetric(QStyle::PM_ScrollBarExtent, option, widget) + + textMargins, 23), 0); //arrow button } } break; -- cgit v0.12 From 9ff84982005a1a0fd5cbc1b014f4eac3c03b52be Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Wed, 16 Jun 2010 12:18:40 +0200 Subject: Fix autoScroll implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The scrolling should not be calculated inside the paint event, this leads to some incorrect behaviour. It is now calculated separately when needed. Patch actually written by Alexis, and I reviewed it. Task-number: QTBUG-11127 Reviewed-by: Alexis Ménard (cherry picked from commit bc4c5a2d9c5d3841948bc4443f2229d8d6ec0e95) --- .../graphicsitems/qdeclarativetextinput.cpp | 88 +++++++++++++--------- .../graphicsitems/qdeclarativetextinput_p_p.h | 1 + .../tst_qdeclarativetextinput.cpp | 1 - 3 files changed, 54 insertions(+), 36 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index 633c01e..624a5aa 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -100,6 +100,7 @@ void QDeclarativeTextInput::setText(const QString &s) if(s == text()) return; d->control->setText(s); + d->updateHorizontalScroll(); //emit textChanged(); } @@ -337,6 +338,7 @@ void QDeclarativeTextInput::setHAlign(HAlignment align) return; d->hAlign = align; updateRect(); + d->updateHorizontalScroll(); emit horizontalAlignmentChanged(d->hAlign); } @@ -554,7 +556,9 @@ void QDeclarativeTextInput::setAutoScroll(bool b) return; d->autoScroll = b; - + d->updateHorizontalScroll(); + //We need to repaint so that the scrolling is taking into account. + updateSize(true); emit autoScrollChanged(d->autoScroll); } @@ -836,6 +840,7 @@ void QDeclarativeTextInput::moveCursor() Q_D(QDeclarativeTextInput); if(!d->cursorItem) return; + d->updateHorizontalScroll(); d->cursorItem->setX(d->control->cursorToX() - d->hscroll); } @@ -845,7 +850,6 @@ void QDeclarativeTextInput::moveCursor() QRectF QDeclarativeTextInput::positionToRectangle(int x) const { Q_D(const QDeclarativeTextInput); - QFontMetrics fm = QFontMetrics(d->font); return QRectF(d->control->cursorToX(x)-d->hscroll, 0.0, d->control->cursorWidth(), @@ -1012,61 +1016,73 @@ void QDeclarativeTextInput::geometryChanged(const QRectF &newGeometry, QDeclarativePaintedItem::geometryChanged(newGeometry, oldGeometry); } -void QDeclarativeTextInput::drawContents(QPainter *p, const QRect &r) +void QDeclarativeTextInputPrivate::updateHorizontalScroll() { - Q_D(QDeclarativeTextInput); - p->setRenderHint(QPainter::TextAntialiasing, true); - p->save(); - p->setPen(QPen(d->color)); - int flags = QLineControl::DrawText; - if(!isReadOnly() && d->cursorVisible && !d->cursorItem) - flags |= QLineControl::DrawCursor; - if (d->control->hasSelectedText()) - flags |= QLineControl::DrawSelections; - QPoint offset = QPoint(0,0); - QFontMetrics fm = QFontMetrics(d->font); - int cix = qRound(d->control->cursorToX()); - QRect br(boundingRect().toRect()); + Q_Q(QDeclarativeTextInput); + QFontMetrics fm = QFontMetrics(font); + int cix = qRound(control->cursorToX()); + QRect br(q->boundingRect().toRect()); //###Is this using bearing appropriately? int minLB = qMax(0, -fm.minLeftBearing()); int minRB = qMax(0, -fm.minRightBearing()); - int widthUsed = qRound(d->control->naturalTextWidth()) + 1 + minRB; - if (d->autoScroll) { + int widthUsed = qRound(control->naturalTextWidth()) + 1 + minRB; + if (autoScroll) { if ((minLB + widthUsed) <= br.width()) { // text fits in br; use hscroll for alignment - switch (d->hAlign & ~(Qt::AlignAbsolute|Qt::AlignVertical_Mask)) { + switch (hAlign & ~(Qt::AlignAbsolute|Qt::AlignVertical_Mask)) { case Qt::AlignRight: - d->hscroll = widthUsed - br.width() + 1; + hscroll = widthUsed - br.width() + 1; break; case Qt::AlignHCenter: - d->hscroll = (widthUsed - br.width()) / 2; + hscroll = (widthUsed - br.width()) / 2; break; default: // Left - d->hscroll = 0; + hscroll = 0; break; } - d->hscroll -= minLB; - } else if (cix - d->hscroll >= br.width()) { + hscroll -= minLB; + } else if (cix - hscroll >= br.width()) { // text doesn't fit, cursor is to the right of br (scroll right) - d->hscroll = cix - br.width() + 1; - } else if (cix - d->hscroll < 0 && d->hscroll < widthUsed) { + hscroll = cix - br.width() + 1; + } else if (cix - hscroll < 0 && hscroll < widthUsed) { // text doesn't fit, cursor is to the left of br (scroll left) - d->hscroll = cix; - } else if (widthUsed - d->hscroll < br.width()) { + hscroll = cix; + } else if (widthUsed - hscroll < br.width()) { // text doesn't fit, text document is to the left of br; align // right - d->hscroll = widthUsed - br.width() + 1; + hscroll = widthUsed - br.width() + 1; + } + } else { + if(hAlign == QDeclarativeTextInput::AlignRight){ + hscroll = q->width() - widthUsed; + }else if(hAlign == QDeclarativeTextInput::AlignHCenter){ + hscroll = (q->width() - widthUsed) / 2; + } else { + hscroll = 0; } + hscroll -= minLB; + } +} + +void QDeclarativeTextInput::drawContents(QPainter *p, const QRect &r) +{ + Q_D(QDeclarativeTextInput); + p->setRenderHint(QPainter::TextAntialiasing, true); + p->save(); + p->setPen(QPen(d->color)); + int flags = QLineControl::DrawText; + if(!isReadOnly() && d->cursorVisible && !d->cursorItem) + flags |= QLineControl::DrawCursor; + if (d->control->hasSelectedText()) + flags |= QLineControl::DrawSelections; + QPoint offset = QPoint(0,0); + QFontMetrics fm = QFontMetrics(d->font); + QRect br(boundingRect().toRect()); + if (d->autoScroll) { // the y offset is there to keep the baseline constant in case we have script changes in the text. offset = br.topLeft() - QPoint(d->hscroll, d->control->ascent() - fm.ascent()); } else { - if(d->hAlign == AlignRight){ - d->hscroll = width() - widthUsed; - }else if(d->hAlign == AlignHCenter){ - d->hscroll = (width() - widthUsed) / 2; - } - d->hscroll -= minLB; offset = QPoint(d->hscroll, 0); } d->control->draw(p, offset, r, flags); @@ -1236,6 +1252,7 @@ void QDeclarativeTextInput::moveCursorSelection(int position) { Q_D(QDeclarativeTextInput); d->control->moveCursor(position, true); + d->updateHorizontalScroll(); } /*! @@ -1426,6 +1443,7 @@ void QDeclarativeTextInput::selectionChanged() void QDeclarativeTextInput::q_textChanged() { Q_D(QDeclarativeTextInput); + d->updateHorizontalScroll(); updateSize(); emit textChanged(); if(hasAcceptableInput() != d->oldValidity){ diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h index 6865147..8b74bcc 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h @@ -99,6 +99,7 @@ public: void init(); void startCreatingCursor(); void focusChanged(bool hasFocus); + void updateHorizontalScroll(); QLineControl* control; diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 3143580..a55b42e 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -396,7 +396,6 @@ void tst_qdeclarativetextinput::positionAt() #endif // Check without autoscroll... - QEXPECT_FAIL("", "QTBUG-11127", Abort); textinputObject->setAutoScroll(false); pos = textinputObject->positionAt(textinputObject->width()/2); diff = abs(fm.width(textinputObject->text().left(pos))-textinputObject->width()/2); -- cgit v0.12 From 46e8e2afc6b351b1024f94f5146814bfe866607e Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Wed, 16 Jun 2010 12:10:03 +0200 Subject: Fixed infinite recursion when drawing very large painter paths. Task-number: QTBUG-11291 Reviewed-by: Gunnar (cherry picked from commit 7619c210217c85ef6e8d3571cce5d1272b1cb437) --- src/gui/painting/qoutlinemapper.cpp | 8 ++++++-- src/gui/painting/qoutlinemapper_p.h | 4 +++- src/gui/painting/qpaintengine_raster.cpp | 11 +++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/gui/painting/qoutlinemapper.cpp b/src/gui/painting/qoutlinemapper.cpp index 1b01960..6038a2a 100644 --- a/src/gui/painting/qoutlinemapper.cpp +++ b/src/gui/painting/qoutlinemapper.cpp @@ -234,12 +234,12 @@ void QOutlineMapper::endOutline() // Check for out of dev bounds... - const bool do_clip = (controlPointRect.left() < -QT_RASTER_COORD_LIMIT + const bool do_clip = !m_in_clip_elements && ((controlPointRect.left() < -QT_RASTER_COORD_LIMIT || controlPointRect.right() > QT_RASTER_COORD_LIMIT || controlPointRect.top() < -QT_RASTER_COORD_LIMIT || controlPointRect.bottom() > QT_RASTER_COORD_LIMIT || controlPointRect.width() > QT_RASTER_COORD_LIMIT - || controlPointRect.height() > QT_RASTER_COORD_LIMIT); + || controlPointRect.height() > QT_RASTER_COORD_LIMIT)); if (do_clip) { clipElements(elements, elementTypes(), element_count); @@ -353,6 +353,8 @@ void QOutlineMapper::clipElements(const QPointF *elements, // instead of going through convenience functionallity, but since // this part of code hardly every used, it shouldn't matter. + m_in_clip_elements = true; + QPainterPath path; if (types) { for (int i=0; ioutlineMapper->m_clip_rect = d->deviceRect.adjusted(-10, -10, 10, 10); - - // This is the upp - QRect bounds(-QT_RASTER_COORD_LIMIT, -QT_RASTER_COORD_LIMIT, - QT_RASTER_COORD_LIMIT*2 - 1, QT_RASTER_COORD_LIMIT * 2 - 1); - d->outlineMapper->m_clip_rect = bounds.intersected(d->outlineMapper->m_clip_rect); + d->outlineMapper->m_clip_rect = d->deviceRect; + if (d->outlineMapper->m_clip_rect.width() > QT_RASTER_COORD_LIMIT) + d->outlineMapper->m_clip_rect.setWidth(QT_RASTER_COORD_LIMIT); + if (d->outlineMapper->m_clip_rect.height() > QT_RASTER_COORD_LIMIT) + d->outlineMapper->m_clip_rect.setHeight(QT_RASTER_COORD_LIMIT); d->rasterizer->setClipRect(d->deviceRect); -- cgit v0.12 From 7b1822dad8091e69a5c0eafb489444d2b7552a5e Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 17 Jun 2010 10:26:13 +1000 Subject: clearFocus() shouldn't mess with focus if it doesn't have focus removing an item from the view caused the focus to change even if the removed item didn't have focus. Task-number: QTBUG-11341 Reviewed-by: Yoann Lopes (cherry picked from commit 7a577ff67388413a882435c5cbd1ad6d1fa8393d) --- src/gui/graphicsview/qgraphicsitem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 8042c46..c9176d1 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -3277,7 +3277,8 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim */ void QGraphicsItem::clearFocus() { - d_ptr->clearFocusHelper(/* giveFocusToParent = */ true); + if (hasFocus()) + d_ptr->clearFocusHelper(/* giveFocusToParent = */ true); } /*! -- cgit v0.12 From ef6d2ab56754eac8d65bc7a1c851a840f129fa87 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 16 Jun 2010 16:33:19 +1000 Subject: Stopping a flick resulted in the next click being consumed. Task-number: QTBUG-11390 (cherry picked from commit cfbca0bd925b76fff533dc093c67ad72dbd73de5) --- src/declarative/graphicsitems/qdeclarativeflickable.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index fdc1444..6dfd4d9 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -1214,6 +1214,7 @@ bool QDeclarativeFlickable::sendMouseEvent(QGraphicsSceneMouseEvent *event) default: break; } + stealThisEvent = d->stealMouse; // Update stealThisEvent and grabber in case changed by function calls above grabber = qobject_cast(s->mouseGrabberItem()); if (grabber && stealThisEvent && !grabber->keepMouseGrab() && grabber != this) { d->clearDelayedPress(); -- cgit v0.12 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 65f2273f43bfca718ee51e8d491c76ef830238f7 Mon Sep 17 00:00:00 2001 From: Aleksandar Sasha Babic Date: Fri, 18 Jun 2010 17:24:18 +0200 Subject: Debug prints and another attempt to fix QTBUG-8687 for N8. --- src/network/kernel/qhostinfo_unix.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp index df98d5d..79f4b9b 100644 --- a/src/network/kernel/qhostinfo_unix.cpp +++ b/src/network/kernel/qhostinfo_unix.cpp @@ -208,12 +208,19 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) #ifdef Q_ADDRCONFIG hints.ai_flags = Q_ADDRCONFIG; #endif +#ifdef Q_OS_SYMBIAN + qDebug() << "Setting flags: 'hints.ai_flags &= AI_V4MAPPED | AI_ALL'"; +#endif int result = getaddrinfo(aceHostname.constData(), 0, &hints, &res); # ifdef Q_ADDRCONFIG if (result == EAI_BADFLAGS) { // if the lookup failed with AI_ADDRCONFIG set, try again without it hints.ai_flags = 0; +#ifdef Q_OS_SYMBIAN + qDebug() << "Setting flags: 'hints.ai_flags &= AI_V4MAPPED | AI_ALL'"; + hints.ai_flags &= AI_V4MAPPED | AI_ALL; +#endif result = getaddrinfo(aceHostname.constData(), 0, &hints, &res); } # endif @@ -222,6 +229,8 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) addrinfo *node = res; QList addresses; while (node) { + qDebug() << "getaddrinfo node: flags:" << node->ai_flags << "family:" << node->ai_family << "ai_socktype:" << node->ai_socktype << "ai_protocol:" << node->ai_protocol << "ai_addrlen:" << node->ai_addrlen; + if (node->ai_family == AF_INET) { QHostAddress addr; addr.setAddress(ntohl(((sockaddr_in *) node->ai_addr)->sin_addr.s_addr)); -- cgit v0.12 From 2ee850be142dbdc47ba9611c94cd9bd47792a67a Mon Sep 17 00:00:00 2001 From: Aleksandar Sasha Babic Date: Fri, 18 Jun 2010 17:25:56 +0200 Subject: Fix QTBUG-8687. The fix is based on 9897aece975e0a4a77e0cc6b8590305baba1fccb. Task-number: QTBUG-8687 Reviewed-by: TrustMe --- src/network/kernel/qhostinfo_unix.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp index 79f4b9b..9139816 100644 --- a/src/network/kernel/qhostinfo_unix.cpp +++ b/src/network/kernel/qhostinfo_unix.cpp @@ -209,7 +209,9 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) hints.ai_flags = Q_ADDRCONFIG; #endif #ifdef Q_OS_SYMBIAN - qDebug() << "Setting flags: 'hints.ai_flags &= AI_V4MAPPED | AI_ALL'"; +# ifdef QHOSTINFO_DEBUG + qDebug() << "Setting flags: 'hints.ai_flags &= AI_V4MAPPED | AI_ALL'"; +# endif #endif int result = getaddrinfo(aceHostname.constData(), 0, &hints, &res); @@ -218,7 +220,9 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) // if the lookup failed with AI_ADDRCONFIG set, try again without it hints.ai_flags = 0; #ifdef Q_OS_SYMBIAN +# ifdef QHOSTINFO_DEBUG qDebug() << "Setting flags: 'hints.ai_flags &= AI_V4MAPPED | AI_ALL'"; +# endif hints.ai_flags &= AI_V4MAPPED | AI_ALL; #endif result = getaddrinfo(aceHostname.constData(), 0, &hints, &res); @@ -229,8 +233,9 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName) addrinfo *node = res; QList addresses; while (node) { - qDebug() << "getaddrinfo node: flags:" << node->ai_flags << "family:" << node->ai_family << "ai_socktype:" << node->ai_socktype << "ai_protocol:" << node->ai_protocol << "ai_addrlen:" << node->ai_addrlen; - +#ifdef QHOSTINFO_DEBUG + qDebug() << "getaddrinfo node: flags:" << node->ai_flags << "family:" << node->ai_family << "ai_socktype:" << node->ai_socktype << "ai_protocol:" << node->ai_protocol << "ai_addrlen:" << node->ai_addrlen; +#endif if (node->ai_family == AF_INET) { QHostAddress addr; addr.setAddress(ntohl(((sockaddr_in *) node->ai_addr)->sin_addr.s_addr)); -- cgit v0.12 From 074aaf9901567c9c66eeca20514c78419e2016bb Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Sun, 20 Jun 2010 13:08:22 +0200 Subject: Updated WebKit from /home/shausman/src/webkit/trunk to qtwebkit/qtwebkit-4.6 ( be1a105be93d7fcbe36d93d0827dc6e98b55de0c ) Changes in WebKit/qt since the last update: * https://bugs.webkit.org/show_bug.cgi?id=40567 -- [Qt] QtWebKit crashes while initializing flash plugin 10.1.53.64. --- src/3rdparty/webkit/VERSION | 2 +- src/3rdparty/webkit/WebCore/ChangeLog | 13 ++++++++++++ .../webkit/WebCore/plugins/qt/PluginPackageQt.cpp | 23 ++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 482982d..1b8e789 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -8,4 +8,4 @@ The commit imported was from the and has the sha1 checksum - a13977ce2aba31808a046cddc082a84dc316d78b + be1a105be93d7fcbe36d93d0827dc6e98b55de0c diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index 63af196..8a75d6b 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,16 @@ +2010-06-16 Dawit Alemayehu + + Reviewed by Simon Hausmann. + + [Qt] QtWebKit crashes while initializing flash plugin 10.1.53.64. + https://bugs.webkit.org/show_bug.cgi?id=40567 + + Avoid preventable crashes by ensuring gtk_init() is called in the + flash viewer plugins before calling NP_Initialize. + + * plugins/qt/PluginPackageQt.cpp: + (WebCore::PluginPackage::load): + 2010-06-10 Raine Makelainen Reviewed by Kenneth Rohde Christiansen. diff --git a/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp b/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp index 8119924..4ff520b 100644 --- a/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp @@ -35,6 +35,8 @@ namespace WebCore { +typedef void gtkInitFunc(int *argc, char ***argv); + bool PluginPackage::fetchInfo() { if (!load()) @@ -109,6 +111,7 @@ bool PluginPackage::load() NP_InitializeFuncPtr NP_Initialize; NPError npErr; + gtkInitFunc* gtkInit; NP_Initialize = (NP_InitializeFuncPtr)m_module->resolve("NP_Initialize"); m_NPP_Shutdown = (NPP_ShutdownProcPtr)m_module->resolve("NP_Shutdown"); @@ -127,6 +130,26 @@ bool PluginPackage::load() m_browserFuncs.getvalue = staticPluginQuirkRequiresGtkToolKit_NPN_GetValue; } + // WORKAROUND: Prevent gtk based plugin crashes such as BR# 40567 by + // explicitly forcing the initializing of Gtk, i.e. calling gtk_init, + // whenver the symbol is present in the plugin library loaded above. + // Note that this workaround is based on code from the NSPluginClass ctor + // in KDE's kdebase/apps/nsplugins/viewer/nsplugin.cpp file. + gtkInit = (gtkInitFunc*)m_module->resolve("gtk_init"); + if (gtkInit) { + // Prevent gtk_init() from replacing the X error handlers, since the Gtk + // handlers abort when they receive an X error, thus killing the viewer. +#ifdef Q_WS_X11 + int (*old_error_handler)(Display*, XErrorEvent*) = XSetErrorHandler(0); + int (*old_io_error_handler)(Display*) = XSetIOErrorHandler(0); +#endif + gtkInit(0, 0); +#ifdef Q_WS_X11 + XSetErrorHandler(old_error_handler); + XSetIOErrorHandler(old_io_error_handler); +#endif + } + #if defined(XP_UNIX) npErr = NP_Initialize(&m_browserFuncs, &m_pluginFuncs); #else -- cgit v0.12 From 5c0462be41c7bad7a3e3ef08105fc1ca60d82e44 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Sun, 20 Jun 2010 22:12:43 +0200 Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to ab9a897b688e991a8405cf938dea9d6a2f1ac072 From Andreas Kling : * Unbreak _HB_OPEN_Get_Device() and Get_ValueRecord() --- src/3rdparty/harfbuzz/src/harfbuzz-gpos.c | 25 ++++++----------------- src/3rdparty/harfbuzz/src/harfbuzz-open-private.h | 2 +- src/3rdparty/harfbuzz/src/harfbuzz-open.c | 14 +------------ 3 files changed, 8 insertions(+), 33 deletions(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c index d71a85e..31b9ae1 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c @@ -500,34 +500,24 @@ static HB_Error Get_ValueRecord( GPOS_Instance* gpi, { /* pixel -> fractional pixel */ - if ( format & HB_GPOS_FORMAT_HAVE_DEVICE_TABLES ) - { - if ( ALLOC_ARRAY( vr->DeviceTables, 4, HB_Device ) ) - return error; - vr->DeviceTables[VR_X_ADVANCE_DEVICE] = 0; - vr->DeviceTables[VR_Y_ADVANCE_DEVICE] = 0; - vr->DeviceTables[VR_X_PLACEMENT_DEVICE] = 0; - vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] = 0; - } - if ( format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE ) { - _HB_OPEN_Get_Device( &vr->DeviceTables[VR_X_PLACEMENT_DEVICE], x_ppem, &pixel_value ); + _HB_OPEN_Get_Device( vr->DeviceTables[VR_X_PLACEMENT_DEVICE], x_ppem, &pixel_value ); gd->x_pos += pixel_value << 6; } if ( format & HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE ) { - _HB_OPEN_Get_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE], y_ppem, &pixel_value ); + _HB_OPEN_Get_Device( vr->DeviceTables[VR_Y_PLACEMENT_DEVICE], y_ppem, &pixel_value ); gd->y_pos += pixel_value << 6; } if ( format & HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE ) { - _HB_OPEN_Get_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE], x_ppem, &pixel_value ); + _HB_OPEN_Get_Device( vr->DeviceTables[VR_X_ADVANCE_DEVICE], x_ppem, &pixel_value ); gd->x_advance += pixel_value << 6; } if ( format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE ) { - _HB_OPEN_Get_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE], y_ppem, &pixel_value ); + _HB_OPEN_Get_Device( vr->DeviceTables[VR_Y_ADVANCE_DEVICE], y_ppem, &pixel_value ); gd->y_advance += pixel_value << 6; } } @@ -779,12 +769,9 @@ static HB_Error Get_Anchor( GPOS_Instance* gpi, case 3: if ( !gpi->dvi ) { - if ( ALLOC_ARRAY( an->af.af3.DeviceTables, 2, HB_Device ) ) - return error; - - _HB_OPEN_Get_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE], x_ppem, &pixel_value ); + _HB_OPEN_Get_Device( an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE], x_ppem, &pixel_value ); *x_value = pixel_value << 6; - _HB_OPEN_Get_Device( &an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE], y_ppem, &pixel_value ); + _HB_OPEN_Get_Device( an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE], y_ppem, &pixel_value ); *y_value = pixel_value << 6; } else diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h index 1f7b353..65ca453 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h +++ b/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h @@ -93,7 +93,7 @@ _HB_OPEN_Get_Class( HB_ClassDefinition* cd, HB_UShort* klass, HB_UShort* index ); HB_INTERNAL HB_Error -_HB_OPEN_Get_Device( HB_Device** d, +_HB_OPEN_Get_Device( HB_Device* d, HB_UShort size, HB_Short* value ); diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-open.c b/src/3rdparty/harfbuzz/src/harfbuzz-open.c index 255b7e6..adc6cec 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-open.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-open.c @@ -1399,21 +1399,11 @@ _HB_OPEN_Free_Device( HB_Device** d ) mask = 0x00FF */ HB_INTERNAL HB_Error -_HB_OPEN_Get_Device( HB_Device** device, +_HB_OPEN_Get_Device( HB_Device* d, HB_UShort size, HB_Short* value ) { - HB_Device* d; HB_UShort byte, bits, mask, f, s; - HB_Error error; - - if ( ALLOC( *device, sizeof(HB_Device)) ) - { - *device = 0; - return error; - } - - d = *device; f = d->DeltaFormat; @@ -1436,8 +1426,6 @@ _HB_OPEN_Get_Device( HB_Device** device, else { *value = 0; - FREE( *device ); - *device = 0; return HB_Err_Not_Covered; } } -- cgit v0.12 From 3a9ca8ba50a63e564c15023f65cbac36d365d309 Mon Sep 17 00:00:00 2001 From: Aleksandar Sasha Babic Date: Mon, 21 Jun 2010 10:41:26 +0200 Subject: Fixing race condition in qeventdispatcher_symbian.cpp code path Fixing QT-3496. There was race condition for m_AOStatuses between external and QSelectThread. Task-number: QT-3496 Reviewed-by: TrustMe --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 101 ++++++++++++++---------- src/corelib/kernel/qeventdispatcher_symbian_p.h | 5 ++ 2 files changed, 66 insertions(+), 40 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index d00a623..75b7619 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -114,9 +114,13 @@ public: // is in select call if (m_selectCallMutex->tryLock()) { m_selectCallMutex->unlock(); + + //m_threadMutex->lock(); + //bHasThreadLock = true; return; } + char dummy = 0; qt_pipe_write(fd, &dummy, 1); @@ -405,11 +409,14 @@ void QSelectThread::run() FD_ZERO(&exceptionfds); int maxfd = 0; - maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Read, &readfds)); - maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Write, &writefds)); - maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Exception, &exceptionfds)); - maxfd = qMax(maxfd, m_pipeEnds[0]); - maxfd++; + { + QMutexLocker asoLocker(&m_AOStatusesMutex); + maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Read, &readfds)); + maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Write, &writefds)); + maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Exception, &exceptionfds)); + maxfd = qMax(maxfd, m_pipeEnds[0]); + maxfd++; + } FD_SET(m_pipeEnds[0], &readfds); @@ -454,40 +461,42 @@ void QSelectThread::run() FD_ZERO(&readfds); FD_ZERO(&writefds); FD_ZERO(&exceptionfds); - for (QHash::const_iterator i = m_AOStatuses.begin(); - i != m_AOStatuses.end(); ++i) { + { + QMutexLocker asoLocker(&m_AOStatusesMutex); + for (QHash::const_iterator i = m_AOStatuses.begin(); + i != m_AOStatuses.end(); ++i) { - fd_set onefds; - FD_ZERO(&onefds); - FD_SET(i.key()->socket(), &onefds); + fd_set onefds; + FD_ZERO(&onefds); + FD_SET(i.key()->socket(), &onefds); - fd_set excfds; - FD_ZERO(&excfds); - FD_SET(i.key()->socket(), &excfds); + fd_set excfds; + FD_ZERO(&excfds); + FD_SET(i.key()->socket(), &excfds); - maxfd = i.key()->socket() + 1; + maxfd = i.key()->socket() + 1; - struct timeval timeout; - timeout.tv_sec = 0; - timeout.tv_usec = 0; + struct timeval timeout; + timeout.tv_sec = 0; + timeout.tv_usec = 0; - ret = 0; + ret = 0; - if(i.key()->type() == QSocketNotifier::Read) { - ret = ::select(maxfd, &onefds, 0, &excfds, &timeout); - if(ret != 0) FD_SET(i.key()->socket(), &readfds); - } else if(i.key()->type() == QSocketNotifier::Write) { - ret = ::select(maxfd, 0, &onefds, &excfds, &timeout); - if(ret != 0) FD_SET(i.key()->socket(), &writefds); - } + if(i.key()->type() == QSocketNotifier::Read) { + ret = ::select(maxfd, &onefds, 0, &excfds, &timeout); + if(ret != 0) FD_SET(i.key()->socket(), &readfds); + } else if(i.key()->type() == QSocketNotifier::Write) { + ret = ::select(maxfd, 0, &onefds, &excfds, &timeout); + if(ret != 0) FD_SET(i.key()->socket(), &writefds); + } - } // end for - - // traversed all, so update - updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); - updateActivatedNotifiers(QSocketNotifier::Read, &readfds); - updateActivatedNotifiers(QSocketNotifier::Write, &writefds); + } // end for + // traversed all, so update + updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); + updateActivatedNotifiers(QSocketNotifier::Read, &readfds); + updateActivatedNotifiers(QSocketNotifier::Write, &writefds); + } break; case EINTR: // Should never occur on Symbian, but this is future proof! default: @@ -496,9 +505,12 @@ void QSelectThread::run() break; } } else { - updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); - updateActivatedNotifiers(QSocketNotifier::Read, &readfds); - updateActivatedNotifiers(QSocketNotifier::Write, &writefds); + { + QMutexLocker asoLocker(&m_AOStatusesMutex); + updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); + updateActivatedNotifiers(QSocketNotifier::Read, &readfds); + updateActivatedNotifiers(QSocketNotifier::Write, &writefds); + } } m_waitCond.wait(&m_mutex); @@ -517,11 +529,15 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta QMutexLocker locker(&m_grabberMutex); - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); - - Q_ASSERT(!m_AOStatuses.contains(notifier)); + { + // first do the thing + QMutexLocker aosLocker(&m_AOStatusesMutex); + Q_ASSERT(!m_AOStatuses.contains(notifier)); + m_AOStatuses.insert(notifier, status); + } - m_AOStatuses.insert(notifier, status); + // and now tell it to the others + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); m_waitCond.wakeAll(); } @@ -530,9 +546,14 @@ void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) { QMutexLocker locker(&m_grabberMutex); - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); + { + // first do the thing + QMutexLocker aosLocker(&m_AOStatusesMutex); + m_AOStatuses.remove(notifier); + } - m_AOStatuses.remove(notifier); + // and now tell it to the others + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); m_waitCond.wakeAll(); } diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h index 7021314..68d5833 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian_p.h +++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h @@ -231,6 +231,11 @@ private: // causes later in locking // of the thread in waitcond QMutex m_selectCallMutex; + + // Argh ... not again + // one more unprotected + // resource is m_AOStatuses + QMutex m_AOStatusesMutex; }; class Q_CORE_EXPORT CQtActiveScheduler : public CActiveScheduler -- cgit v0.12 From 5a549780710cfb2e5110b068dd93f5a8393b0a86 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Fri, 18 Jun 2010 16:01:54 +0200 Subject: Fix a possible crash with the EVR video renderer in windows This can happn when the component can be instanciated but not all the services are available on it. The code is now more robust. Reviewed-By: gabi (cherry picked from commit cf5971503ee1f7a5ce96758e33796dfdf48375bf) --- src/3rdparty/phonon/ds9/videorenderer_evr.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/3rdparty/phonon/ds9/videorenderer_evr.cpp b/src/3rdparty/phonon/ds9/videorenderer_evr.cpp index d23d9ce..de3f46f 100644 --- a/src/3rdparty/phonon/ds9/videorenderer_evr.cpp +++ b/src/3rdparty/phonon/ds9/videorenderer_evr.cpp @@ -43,14 +43,12 @@ namespace Phonon { //normally we should use IID_IMFGetService but this introduces another dependency //so here we simply define our own IId with the same value + ComPointer ret; ComPointer getService(filter, IID_IMFGetService); - Q_ASSERT(getService); - T *ptr = 0; - HRESULT hr = getService->GetService(guidService, riid, reinterpret_cast(&ptr)); - if (!SUCCEEDED(hr) || ptr == 0) - Q_ASSERT(!SUCCEEDED(hr) && ptr != 0); - ComPointer service(ptr); - return service; + if (getService) { + getService->GetService(guidService, riid, reinterpret_cast(ret.pparam())); + } + return ret; } VideoRendererEVR::~VideoRendererEVR() @@ -70,6 +68,10 @@ namespace Phonon } ComPointer filterControl = getService(m_filter, MR_VIDEO_RENDER_SERVICE, IID_IMFVideoDisplayControl); + if (!filterControl) { + m_filter = Filter(); //will release the interface + return; + } filterControl->SetVideoWindow(reinterpret_cast(target->winId())); filterControl->SetAspectRatioMode(MFVideoARMode_None); // We're in control of the size -- cgit v0.12 From 41e284f14ff0c8f9a0e0ca55c4b547dec0d9c09a Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 21 Jun 2010 14:18:00 +0200 Subject: Prevent warnings about EPOCROOT coming out when not on symbian When the pro file is processed with qmake and it EPOCROOT is not set then it will give out warnings. This is really only an issue when configure on X11 is ran because this runs qmake on all pro files anyway. So rather than confusing users about what this warning message means on a non Symbian platform, we just ensure that the pro file specifically only does anything useful on Symbian platforms. Reviewed-by: Gareth Stockwell --- src/plugins/phonon/mmf/mmf.pro | 250 ++++++++++++++++++++--------------------- 1 file changed, 125 insertions(+), 125 deletions(-) diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro index da41f18..7a6fdf8 100644 --- a/src/plugins/phonon/mmf/mmf.pro +++ b/src/plugins/phonon/mmf/mmf.pro @@ -1,127 +1,127 @@ # MMF Phonon backend - -QT += phonon -TARGET = phonon_mmf -PHONON_MMF_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/mmf - -# Uncomment the following line in order to use the CDrmPlayerUtility client -# API for audio playback, rather than CMdaAudioPlayerUtility. -#CONFIG += phonon_mmf_audio_drm - -phonon_mmf_audio_drm { - LIBS += -lDrmAudioPlayUtility - DEFINES += QT_PHONON_MMF_AUDIO_DRM -} else { - LIBS += -lmediaclientaudio -} - -# This is necessary because both epoc32/include and Phonon contain videoplayer.h. -# By making /epoc32/include the first SYSTEMINCLUDE, we ensure that -# '#include ' picks up the Symbian header, as intended. -PREPEND_INCLUDEPATH = /epoc32/include - -PREPEND_INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty - -INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE - -HEADERS += \ - $$PHONON_MMF_DIR/abstractaudioeffect.h \ - $$PHONON_MMF_DIR/abstractmediaplayer.h \ - $$PHONON_MMF_DIR/abstractplayer.h \ - $$PHONON_MMF_DIR/abstractvideooutput.h \ - $$PHONON_MMF_DIR/abstractvideoplayer.h \ - $$PHONON_MMF_DIR/audioequalizer.h \ - $$PHONON_MMF_DIR/audiooutput.h \ - $$PHONON_MMF_DIR/audioplayer.h \ - $$PHONON_MMF_DIR/backend.h \ - $$PHONON_MMF_DIR/bassboost.h \ - $$PHONON_MMF_DIR/defs.h \ - $$PHONON_MMF_DIR/dummyplayer.h \ - $$PHONON_MMF_DIR/effectfactory.h \ - $$PHONON_MMF_DIR/effectparameter.h \ - $$PHONON_MMF_DIR/environmentalreverb.h \ - $$PHONON_MMF_DIR/loudness.h \ - $$PHONON_MMF_DIR/mediaobject.h \ - $$PHONON_MMF_DIR/mmf_medianode.h \ - $$PHONON_MMF_DIR/stereowidening.h \ - $$PHONON_MMF_DIR/objectdump.h \ - $$PHONON_MMF_DIR/objectdump_symbian.h \ - $$PHONON_MMF_DIR/objecttree.h \ - $$PHONON_MMF_DIR/utils.h \ - $$PHONON_MMF_DIR/videowidget.h - -SOURCES += \ - $$PHONON_MMF_DIR/abstractaudioeffect.cpp \ - $$PHONON_MMF_DIR/abstractmediaplayer.cpp \ - $$PHONON_MMF_DIR/abstractplayer.cpp \ - $$PHONON_MMF_DIR/audioequalizer.cpp \ - $$PHONON_MMF_DIR/audiooutput.cpp \ - $$PHONON_MMF_DIR/audioplayer.cpp \ - $$PHONON_MMF_DIR/abstractvideooutput.cpp \ - $$PHONON_MMF_DIR/abstractvideoplayer.cpp \ - $$PHONON_MMF_DIR/backend.cpp \ - $$PHONON_MMF_DIR/bassboost.cpp \ - $$PHONON_MMF_DIR/dummyplayer.cpp \ - $$PHONON_MMF_DIR/effectfactory.cpp \ - $$PHONON_MMF_DIR/effectparameter.cpp \ - $$PHONON_MMF_DIR/environmentalreverb.cpp \ - $$PHONON_MMF_DIR/loudness.cpp \ - $$PHONON_MMF_DIR/mediaobject.cpp \ - $$PHONON_MMF_DIR/mmf_medianode.cpp \ - $$PHONON_MMF_DIR/stereowidening.cpp \ - $$PHONON_MMF_DIR/objectdump.cpp \ - $$PHONON_MMF_DIR/objectdump_symbian.cpp \ - $$PHONON_MMF_DIR/objecttree.cpp \ - $$PHONON_MMF_DIR/utils.cpp \ - $$PHONON_MMF_DIR/videowidget.cpp - -# Test for whether the build environment supports video rendering to graphics -# surfaces. -exists($${EPOCROOT}epoc32/include/platform/videoplayer2.h) { - HEADERS += \ - $$PHONON_MMF_DIR/videooutput_surface.h \ - $$PHONON_MMF_DIR/videoplayer_surface.h - SOURCES += \ - $$PHONON_MMF_DIR/videooutput_surface.cpp \ - $$PHONON_MMF_DIR/videoplayer_surface.cpp - DEFINES += PHONON_MMF_VIDEO_SURFACES -} else { - HEADERS += \ - $$PHONON_MMF_DIR/ancestormovemonitor.h \ - $$PHONON_MMF_DIR/videooutput_dsa.h \ - $$PHONON_MMF_DIR/videoplayer_dsa.h - SOURCES += \ - $$PHONON_MMF_DIR/ancestormovemonitor.cpp \ - $$PHONON_MMF_DIR/videooutput_dsa.cpp \ - $$PHONON_MMF_DIR/videoplayer_dsa.cpp \ +symbian { + QT += phonon + TARGET = phonon_mmf + PHONON_MMF_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/mmf + + # Uncomment the following line in order to use the CDrmPlayerUtility client + # API for audio playback, rather than CMdaAudioPlayerUtility. + #CONFIG += phonon_mmf_audio_drm + + phonon_mmf_audio_drm { + LIBS += -lDrmAudioPlayUtility + DEFINES += QT_PHONON_MMF_AUDIO_DRM + } else { + LIBS += -lmediaclientaudio + } + + # This is necessary because both epoc32/include and Phonon contain videoplayer.h. + # By making /epoc32/include the first SYSTEMINCLUDE, we ensure that + # '#include ' picks up the Symbian header, as intended. + PREPEND_INCLUDEPATH = /epoc32/include + + PREPEND_INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty + + INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE + + HEADERS += \ + $$PHONON_MMF_DIR/abstractaudioeffect.h \ + $$PHONON_MMF_DIR/abstractmediaplayer.h \ + $$PHONON_MMF_DIR/abstractplayer.h \ + $$PHONON_MMF_DIR/abstractvideooutput.h \ + $$PHONON_MMF_DIR/abstractvideoplayer.h \ + $$PHONON_MMF_DIR/audioequalizer.h \ + $$PHONON_MMF_DIR/audiooutput.h \ + $$PHONON_MMF_DIR/audioplayer.h \ + $$PHONON_MMF_DIR/backend.h \ + $$PHONON_MMF_DIR/bassboost.h \ + $$PHONON_MMF_DIR/defs.h \ + $$PHONON_MMF_DIR/dummyplayer.h \ + $$PHONON_MMF_DIR/effectfactory.h \ + $$PHONON_MMF_DIR/effectparameter.h \ + $$PHONON_MMF_DIR/environmentalreverb.h \ + $$PHONON_MMF_DIR/loudness.h \ + $$PHONON_MMF_DIR/mediaobject.h \ + $$PHONON_MMF_DIR/mmf_medianode.h \ + $$PHONON_MMF_DIR/stereowidening.h \ + $$PHONON_MMF_DIR/objectdump.h \ + $$PHONON_MMF_DIR/objectdump_symbian.h \ + $$PHONON_MMF_DIR/objecttree.h \ + $$PHONON_MMF_DIR/utils.h \ + $$PHONON_MMF_DIR/videowidget.h + + SOURCES += \ + $$PHONON_MMF_DIR/abstractaudioeffect.cpp \ + $$PHONON_MMF_DIR/abstractmediaplayer.cpp \ + $$PHONON_MMF_DIR/abstractplayer.cpp \ + $$PHONON_MMF_DIR/audioequalizer.cpp \ + $$PHONON_MMF_DIR/audiooutput.cpp \ + $$PHONON_MMF_DIR/audioplayer.cpp \ + $$PHONON_MMF_DIR/abstractvideooutput.cpp \ + $$PHONON_MMF_DIR/abstractvideoplayer.cpp \ + $$PHONON_MMF_DIR/backend.cpp \ + $$PHONON_MMF_DIR/bassboost.cpp \ + $$PHONON_MMF_DIR/dummyplayer.cpp \ + $$PHONON_MMF_DIR/effectfactory.cpp \ + $$PHONON_MMF_DIR/effectparameter.cpp \ + $$PHONON_MMF_DIR/environmentalreverb.cpp \ + $$PHONON_MMF_DIR/loudness.cpp \ + $$PHONON_MMF_DIR/mediaobject.cpp \ + $$PHONON_MMF_DIR/mmf_medianode.cpp \ + $$PHONON_MMF_DIR/stereowidening.cpp \ + $$PHONON_MMF_DIR/objectdump.cpp \ + $$PHONON_MMF_DIR/objectdump_symbian.cpp \ + $$PHONON_MMF_DIR/objecttree.cpp \ + $$PHONON_MMF_DIR/utils.cpp \ + $$PHONON_MMF_DIR/videowidget.cpp + + # Test for whether the build environment supports video rendering to graphics + # surfaces. + symbian:exists($${EPOCROOT}epoc32/include/platform/videoplayer2.h) { + HEADERS += \ + $$PHONON_MMF_DIR/videooutput_surface.h \ + $$PHONON_MMF_DIR/videoplayer_surface.h + SOURCES += \ + $$PHONON_MMF_DIR/videooutput_surface.cpp \ + $$PHONON_MMF_DIR/videoplayer_surface.cpp + DEFINES += PHONON_MMF_VIDEO_SURFACES + } else { + HEADERS += \ + $$PHONON_MMF_DIR/ancestormovemonitor.h \ + $$PHONON_MMF_DIR/videooutput_dsa.h \ + $$PHONON_MMF_DIR/videoplayer_dsa.h + SOURCES += \ + $$PHONON_MMF_DIR/ancestormovemonitor.cpp \ + $$PHONON_MMF_DIR/videooutput_dsa.cpp \ + $$PHONON_MMF_DIR/videoplayer_dsa.cpp \ + } + + LIBS += -lcone + LIBS += -lws32 + + # This is only needed for debug builds, but is always linked against. + LIBS += -lhal + + TARGET.CAPABILITY = all -tcb + + LIBS += -lmediaclientvideo # For CVideoPlayerUtility + LIBS += -lcone # For CCoeEnv + LIBS += -lws32 # For RWindow + LIBS += -lefsrv # For file server + LIBS += -lapgrfx -lapmime # For recognizer + LIBS += -lmmfcontrollerframework # For CMMFMetaDataEntry + LIBS += -lmediaclientaudiostream # For CMdaAudioOutputStream + + # These are for effects. + LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect + + # This is needed for having the .qtplugin file properly created on Symbian. + QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend + + target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend + INSTALLS += target + + include(../../qpluginbase.pri) + + TARGET.UID3=0x2001E629 } - -LIBS += -lcone -LIBS += -lws32 - -# This is only needed for debug builds, but is always linked against. -LIBS += -lhal - -TARGET.CAPABILITY = all -tcb - -LIBS += -lmediaclientvideo # For CVideoPlayerUtility -LIBS += -lcone # For CCoeEnv -LIBS += -lws32 # For RWindow -LIBS += -lefsrv # For file server -LIBS += -lapgrfx -lapmime # For recognizer -LIBS += -lmmfcontrollerframework # For CMMFMetaDataEntry -LIBS += -lmediaclientaudiostream # For CMdaAudioOutputStream - -# These are for effects. -LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect - -# This is needed for having the .qtplugin file properly created on Symbian. -QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend - -target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend -INSTALLS += target - -include(../../qpluginbase.pri) - -TARGET.UID3=0x2001E629 - -- cgit v0.12 From 569860f721a30d5caad8ea1b55a3220f7e7f3d56 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 21 Jun 2010 18:52:45 +0200 Subject: Fix null HB_Device** dereference on exit in Harfbuzz GPOS code Fix incorrect usage of _HB_OPEN_Free_Device() in CaretValue cleanup --- src/3rdparty/harfbuzz/src/harfbuzz-gdef.c | 2 +- src/3rdparty/harfbuzz/src/harfbuzz-gpos.c | 26 +++++++++++++---------- src/3rdparty/harfbuzz/src/harfbuzz-open-private.h | 2 +- src/3rdparty/harfbuzz/src/harfbuzz-open.c | 8 +++---- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gdef.c b/src/3rdparty/harfbuzz/src/harfbuzz-gdef.c index c0c6f2c..966b167 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gdef.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gdef.c @@ -462,7 +462,7 @@ static HB_Error Load_CaretValue( HB_CaretValue* cv, static void Free_CaretValue( HB_CaretValue* cv) { if ( cv->CaretValueFormat == 3 ) - _HB_OPEN_Free_Device( &cv->cvf.cvf3.Device ); + _HB_OPEN_Free_Device( cv->cvf.cvf3.Device ); } diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c index 31b9ae1..0236271 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c @@ -433,13 +433,16 @@ static HB_Error Load_ValueRecord( HB_ValueRecord* vr, return HB_Err_Ok; Fail1: - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE] ); + if ( vr->DeviceTables ) + _HB_OPEN_Free_Device( vr->DeviceTables[VR_Y_ADVANCE_DEVICE] ); Fail2: - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE] ); + if ( vr->DeviceTables ) + _HB_OPEN_Free_Device( vr->DeviceTables[VR_X_ADVANCE_DEVICE] ); Fail3: - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] ); + if ( vr->DeviceTables ) + _HB_OPEN_Free_Device( vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] ); FREE( vr->DeviceTables ); return error; @@ -450,13 +453,13 @@ static void Free_ValueRecord( HB_ValueRecord* vr, HB_UShort format ) { if ( format & HB_GPOS_FORMAT_HAVE_Y_ADVANCE_DEVICE ) - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_ADVANCE_DEVICE] ); + _HB_OPEN_Free_Device( vr->DeviceTables[VR_Y_ADVANCE_DEVICE] ); if ( format & HB_GPOS_FORMAT_HAVE_X_ADVANCE_DEVICE ) - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_X_ADVANCE_DEVICE] ); + _HB_OPEN_Free_Device( vr->DeviceTables[VR_X_ADVANCE_DEVICE] ); if ( format & HB_GPOS_FORMAT_HAVE_Y_PLACEMENT_DEVICE ) - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] ); + _HB_OPEN_Free_Device( vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] ); if ( format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE ) - _HB_OPEN_Free_Device( &vr->DeviceTables[VR_X_PLACEMENT_DEVICE] ); + _HB_OPEN_Free_Device( vr->DeviceTables[VR_X_PLACEMENT_DEVICE] ); FREE( vr->DeviceTables ); } @@ -688,7 +691,8 @@ static HB_Error Load_Anchor( HB_Anchor* an, return HB_Err_Ok; Fail: - _HB_OPEN_Free_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] ); + if ( an->af.af3.DeviceTables ) + _HB_OPEN_Free_Device( an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] ); FREE( an->af.af3.DeviceTables ); return error; @@ -697,10 +701,10 @@ Fail: static void Free_Anchor( HB_Anchor* an) { - if ( an->PosFormat == 3 ) + if ( an->PosFormat == 3 && an->af.af3.DeviceTables ) { - _HB_OPEN_Free_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] ); - _HB_OPEN_Free_Device( &an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE] ); + _HB_OPEN_Free_Device( an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] ); + _HB_OPEN_Free_Device( an->af.af3.DeviceTables[AF3_Y_DEVICE_TABLE] ); FREE( an->af.af3.DeviceTables ); } } diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h index 65ca453..f1ca278 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h +++ b/src/3rdparty/harfbuzz/src/harfbuzz-open-private.h @@ -79,7 +79,7 @@ HB_INTERNAL void _HB_OPEN_Free_LookupList( HB_LookupList* ll, HB_INTERNAL void _HB_OPEN_Free_Coverage( HB_Coverage* c ); HB_INTERNAL void _HB_OPEN_Free_ClassDefinition( HB_ClassDefinition* cd ); -HB_INTERNAL void _HB_OPEN_Free_Device( HB_Device** d ); +HB_INTERNAL void _HB_OPEN_Free_Device( HB_Device* d ); diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-open.c b/src/3rdparty/harfbuzz/src/harfbuzz-open.c index adc6cec..15cd2c1 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-open.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-open.c @@ -1353,12 +1353,12 @@ _HB_OPEN_Load_Device( HB_Device** device, HB_INTERNAL void -_HB_OPEN_Free_Device( HB_Device** d ) +_HB_OPEN_Free_Device( HB_Device* d ) { - if ( *d ) + if ( d ) { - FREE( (*d)->DeltaValue ); - FREE( *d ); + FREE( d->DeltaValue ); + FREE( d ); } } -- cgit v0.12 From b82ed43086aebb4698a8a52965eeb17349ef1d04 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Mon, 21 Jun 2010 15:11:59 +1000 Subject: Audio(osx); Fix audio format converters. Reviewed-by:Dmytro Poplavskiy --- src/multimedia/audio/qaudio_mac.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/multimedia/audio/qaudio_mac.cpp b/src/multimedia/audio/qaudio_mac.cpp index 14fee8b..4e17b52 100644 --- a/src/multimedia/audio/qaudio_mac.cpp +++ b/src/multimedia/audio/qaudio_mac.cpp @@ -68,11 +68,11 @@ QAudioFormat toQAudioFormat(AudioStreamBasicDescription const& sf) audioFormat.setChannels(sf.mChannelsPerFrame); audioFormat.setSampleSize(sf.mBitsPerChannel); audioFormat.setCodec(QString::fromLatin1("audio/pcm")); - audioFormat.setByteOrder(sf.mFormatFlags & kLinearPCMFormatFlagIsBigEndian != 0 ? QAudioFormat::BigEndian : QAudioFormat::LittleEndian); + audioFormat.setByteOrder((sf.mFormatFlags & kAudioFormatFlagIsBigEndian) != 0 ? QAudioFormat::BigEndian : QAudioFormat::LittleEndian); QAudioFormat::SampleType type = QAudioFormat::UnSignedInt; - if ((sf.mFormatFlags & kLinearPCMFormatFlagIsSignedInteger) != 0) + if ((sf.mFormatFlags & kAudioFormatFlagIsSignedInteger) != 0) type = QAudioFormat::SignedInt; - else if ((sf.mFormatFlags & kLinearPCMFormatFlagIsFloat) != 0) + else if ((sf.mFormatFlags & kAudioFormatFlagIsFloat) != 0) type = QAudioFormat::Float; audioFormat.setSampleType(type); @@ -99,6 +99,9 @@ AudioStreamBasicDescription toAudioStreamBasicDescription(QAudioFormat const& au case QAudioFormat::Unknown: default: break; } + if (audioFormat.byteOrder() == QAudioFormat::BigEndian) + sf.mFormatFlags |= kAudioFormatFlagIsBigEndian; + return sf; } -- cgit v0.12 From 66d02e4bde0a628978436217032abe555ed77fad Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Mon, 21 Jun 2010 15:18:32 +1000 Subject: Audio(osx); refactor input period conversion Reviewed-by:Dmytro Poplavskiy --- src/multimedia/audio/qaudioinput_mac_p.cpp | 49 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp index b99fe11..5897e75 100644 --- a/src/multimedia/audio/qaudioinput_mac_p.cpp +++ b/src/multimedia/audio/qaudioinput_mac_p.cpp @@ -210,6 +210,11 @@ public: return true; } + bool empty() const + { + return position == totalPackets; + } + private: UInt32 totalPackets; UInt32 position; @@ -275,36 +280,32 @@ public: if (m_audioConverter != 0) { QAudioPacketFeeder feeder(m_inputBufferList); - bool wecan = true; int copied = 0; - const int available = m_buffer->free(); - while (err == noErr && wecan) { + while (err == noErr && !feeder.empty()) { QAudioRingBuffer::Region region = m_buffer->acquireWriteRegion(available); - if (region.second > 0) { - AudioBufferList output; - output.mNumberBuffers = 1; - output.mBuffers[0].mNumberChannels = 1; - output.mBuffers[0].mDataByteSize = region.second; - output.mBuffers[0].mData = region.first; - - UInt32 packetSize = region.second / m_outputFormat.mBytesPerPacket; - err = AudioConverterFillComplexBuffer(m_audioConverter, - converterCallback, - &feeder, - &packetSize, - &output, - 0); - - region.second = output.mBuffers[0].mDataByteSize; - copied += region.second; + if (region.second == 0) + break; + + AudioBufferList output; + output.mNumberBuffers = 1; + output.mBuffers[0].mNumberChannels = 1; + output.mBuffers[0].mDataByteSize = region.second; + output.mBuffers[0].mData = region.first; + + UInt32 packetSize = region.second / m_outputFormat.mBytesPerPacket; + err = AudioConverterFillComplexBuffer(m_audioConverter, + converterCallback, + &feeder, + &packetSize, + &output, + 0); + region.second = output.mBuffers[0].mDataByteSize; + copied += region.second; - m_buffer->releaseWriteRegion(region); - } - else - wecan = false; + m_buffer->releaseWriteRegion(region); } framesRendered += copied / m_outputFormat.mBytesPerFrame; -- cgit v0.12 From 9c2bf58de3c014345a47013386a84e8a41cf609b Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Mon, 21 Jun 2010 14:22:38 +0100 Subject: Update 4.7-beta2 def files Task-number: QTBUG-11585 Reviewed-by: Trust Me (cherry picked from commit 09b770aee2a39e7445d5154e7b8ba3ccc249d55f) --- src/s60installs/bwins/QtCoreu.def | 1 + src/s60installs/bwins/QtDeclarativeu.def | 13 +++++++++++-- src/s60installs/bwins/QtGuiu.def | 7 +++++++ src/s60installs/eabi/QtCoreu.def | 2 ++ src/s60installs/eabi/QtDeclarativeu.def | 17 +++++++++++++---- src/s60installs/eabi/QtGuiu.def | 5 +++++ 6 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def index c6d7a2c..45caeb0 100644 --- a/src/s60installs/bwins/QtCoreu.def +++ b/src/s60installs/bwins/QtCoreu.def @@ -4479,4 +4479,5 @@ EXPORTS ?trUtf8@QEventDispatcherSymbian@@SA?AVQString@@PBD0@Z @ 4478 NONAME ; class QString QEventDispatcherSymbian::trUtf8(char const *, char const *) ?trUtf8@QEventDispatcherSymbian@@SA?AVQString@@PBD0H@Z @ 4479 NONAME ; class QString QEventDispatcherSymbian::trUtf8(char const *, char const *, int) ?staticMetaObject@QEventDispatcherSymbian@@2UQMetaObject@@B @ 4480 NONAME ; struct QMetaObject const QEventDispatcherSymbian::staticMetaObject + ?textDirection@QLocale@@QBE?AW4LayoutDirection@Qt@@XZ @ 4481 NONAME ; enum Qt::LayoutDirection QLocale::textDirection(void) const diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 2992cf6..0aac72b 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -4025,7 +4025,7 @@ EXPORTS ?get@QDeclarativeXmlListModel@@QBE?AVQScriptValue@@H@Z @ 4024 NONAME ; class QScriptValue QDeclarativeXmlListModel::get(int) const ?setScale@QDeclarativeParentChange@@QAEXVQDeclarativeScriptString@@@Z @ 4025 NONAME ; void QDeclarativeParentChange::setScale(class QDeclarativeScriptString) ?showInputPanelOnFocusChanged@QDeclarativeTextEdit@@IAEX_N@Z @ 4026 NONAME ABSENT ; void QDeclarativeTextEdit::showInputPanelOnFocusChanged(bool) - ?focusOutEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4027 NONAME ; void QDeclarativeTextInput::focusOutEvent(class QFocusEvent *) + ?focusOutEvent@QDeclarativeTextInput@@MAEXPAVQFocusEvent@@@Z @ 4027 NONAME ABSENT ; void QDeclarativeTextInput::focusOutEvent(class QFocusEvent *) ?height@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4028 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::height(void) const ?showInputPanelOnFocus@QDeclarativeTextEdit@@QBE_NXZ @ 4029 NONAME ABSENT ; bool QDeclarativeTextEdit::showInputPanelOnFocus(void) const ?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 4030 NONAME ; class QString QDeclarativeComponent::errorString(void) const @@ -4035,7 +4035,7 @@ EXPORTS ?rotation@QDeclarativeParentChange@@QBE?AVQDeclarativeScriptString@@XZ @ 4034 NONAME ; class QDeclarativeScriptString QDeclarativeParentChange::rotation(void) const ?paintedHeight@QDeclarativeTextEdit@@QBEMXZ @ 4035 NONAME ; float QDeclarativeTextEdit::paintedHeight(void) const ?paintedWidth@QDeclarativeTextEdit@@QBEMXZ @ 4036 NONAME ; float QDeclarativeTextEdit::paintedWidth(void) const - ?focusOutEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4037 NONAME ; void QDeclarativeTextEdit::focusOutEvent(class QFocusEvent *) + ?focusOutEvent@QDeclarativeTextEdit@@MAEXPAVQFocusEvent@@@Z @ 4037 NONAME ABSENT ; void QDeclarativeTextEdit::focusOutEvent(class QFocusEvent *) ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@AAVQDeclarativeExpressionPrivate@@@Z @ 4038 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &, class QDeclarativeExpressionPrivate &) ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 4039 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *) ?queryError@QDeclarativeXmlListModel@@AAEXPAXABVQString@@@Z @ 4040 NONAME ; void QDeclarativeXmlListModel::queryError(void *, class QString const &) @@ -4088,4 +4088,13 @@ EXPORTS ?positionToRectangle@QDeclarativeTextInput@@QBE?AVQRectF@@H@Z @ 4087 NONAME ; class QRectF QDeclarativeTextInput::positionToRectangle(int) const ?positionAt@QDeclarativeTextInput@@QBEHH@Z @ 4088 NONAME ; int QDeclarativeTextInput::positionAt(int) const ?selectWord@QDeclarativeTextEdit@@QAEXXZ @ 4089 NONAME ; void QDeclarativeTextEdit::selectWord(void) + ?setFooter@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 4090 NONAME ; void QDeclarativeGridView::setFooter(class QDeclarativeComponent *) + ?isNamed@QDeclarativeState@@QBE_NXZ @ 4091 NONAME ; bool QDeclarativeState::isNamed(void) const + ?initialSize@QDeclarativeView@@QBE?AVQSize@@XZ @ 4092 NONAME ; class QSize QDeclarativeView::initialSize(void) const + ?childAt@QDeclarativeItem@@QBEPAV1@MM@Z @ 4093 NONAME ; class QDeclarativeItem * QDeclarativeItem::childAt(float, float) const + ?footer@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 4094 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::footer(void) const + ?headerChanged@QDeclarativeGridView@@IAEXXZ @ 4095 NONAME ; void QDeclarativeGridView::headerChanged(void) + ?setHeader@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 4096 NONAME ; void QDeclarativeGridView::setHeader(class QDeclarativeComponent *) + ?header@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 4097 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::header(void) const + ?footerChanged@QDeclarativeGridView@@IAEXXZ @ 4098 NONAME ; void QDeclarativeGridView::footerChanged(void) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index 9b4ecc2..d439927 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -12813,4 +12813,11 @@ EXPORTS ?setVerticalMovementX@QTextCursor@@QAEXH@Z @ 12812 NONAME ; void QTextCursor::setVerticalMovementX(int) ?invertedAppearance@QProgressBar@@QBE_NXZ @ 12813 NONAME ; bool QProgressBar::invertedAppearance(void) const ?width@QFontMetrics@@QBEHABVQString@@HH@Z @ 12814 NONAME ; int QFontMetrics::width(class QString const &, int, int) const + ?aboutToDestroy@QWidgetPrivate@@UAEXXZ @ 12815 NONAME ; void QWidgetPrivate::aboutToDestroy(void) + ?setTextOption@QStaticText@@QAEXABVQTextOption@@@Z @ 12816 NONAME ; void QStaticText::setTextOption(class QTextOption const &) + ?pointInsideRectAndMask@QWidgetPrivate@@QBE_NABVQPoint@@@Z @ 12817 NONAME ; bool QWidgetPrivate::pointInsideRectAndMask(class QPoint const &) const + ?childAtRecursiveHelper@QWidgetPrivate@@QBEPAVQWidget@@ABVQPoint@@_N1@Z @ 12818 NONAME ; class QWidget * QWidgetPrivate::childAtRecursiveHelper(class QPoint const &, bool, bool) const + ?textOption@QStaticText@@QBE?AVQTextOption@@XZ @ 12819 NONAME ; class QTextOption QStaticText::textOption(void) const + ?isRightToLeft@QTextEngine@@QBE_NXZ @ 12820 NONAME ; bool QTextEngine::isRightToLeft(void) const + ?textDirection@QTextBlock@@QBE?AW4LayoutDirection@Qt@@XZ @ 12821 NONAME ; enum Qt::LayoutDirection QTextBlock::textDirection(void) const diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index 0590d39..48cad39 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -3705,4 +3705,6 @@ EXPORTS _ZlsR11QDataStreamRK12QEasingCurve @ 3704 NONAME _ZltRK13QElapsedTimerS1_ @ 3705 NONAME _ZrsR11QDataStreamR12QEasingCurve @ 3706 NONAME + _ZNK7QLocale13textDirectionEv @ 3707 NONAME + _ZNK7QString13isRightToLeftEv @ 3708 NONAME diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index 1c4cd5d..f997454 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -3605,7 +3605,7 @@ EXPORTS _ZN16QDeclarativeText18paintedSizeChangedEv @ 3604 NONAME _ZN20QDeclarativePathView5eventEP6QEvent @ 3605 NONAME _ZN20QDeclarativeTextEdit12focusInEventEP11QFocusEvent @ 3606 NONAME - _ZN20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3607 NONAME + _ZN20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3607 NONAME ABSENT _ZN20QDeclarativeTextEdit16setSelectByMouseEb @ 3608 NONAME _ZN20QDeclarativeTextEdit18paintedSizeChangedEv @ 3609 NONAME _ZN20QDeclarativeTextEdit20selectByMouseChangedEb @ 3610 NONAME @@ -3615,7 +3615,7 @@ EXPORTS _ZN20QDeclarativeTextEdit24setShowInputPanelOnFocusEb @ 3614 NONAME ABSENT _ZN20QDeclarativeTextEdit28showInputPanelOnFocusChangedEb @ 3615 NONAME ABSENT _ZN21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3616 NONAME - _ZN21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3617 NONAME + _ZN21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3617 NONAME ABSENT _ZN21QDeclarativeTextInput16setSelectByMouseEb @ 3618 NONAME _ZN21QDeclarativeTextInput20selectByMouseChangedEb @ 3619 NONAME _ZN21QDeclarativeTextInput22openSoftwareInputPanelEv @ 3620 NONAME @@ -3653,9 +3653,9 @@ EXPORTS _ZNK24QDeclarativeXmlListModel11errorStringEv @ 3652 NONAME _ZNK24QDeclarativeXmlListModel3getEi @ 3653 NONAME _ZThn8_N20QDeclarativeTextEdit12focusInEventEP11QFocusEvent @ 3654 NONAME - _ZThn8_N20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3655 NONAME + _ZThn8_N20QDeclarativeTextEdit13focusOutEventEP11QFocusEvent @ 3655 NONAME ABSENT _ZThn8_N21QDeclarativeTextInput12focusInEventEP11QFocusEvent @ 3656 NONAME - _ZThn8_N21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3657 NONAME + _ZThn8_N21QDeclarativeTextInput13focusOutEventEP11QFocusEvent @ 3657 NONAME ABSENT _ZThn8_NK23QDeclarativePaintedItem12boundingRectEv @ 3658 NONAME _ZN20QDeclarativeTextEdit10selectWordEv @ 3659 NONAME _ZN20QDeclarativeTextEdit19moveCursorSelectionEi @ 3660 NONAME @@ -3672,4 +3672,13 @@ EXPORTS _ZNK21QDeclarativeTextInput15cursorRectangleEv @ 3671 NONAME _ZNK21QDeclarativeTextInput19positionToRectangleEi @ 3672 NONAME _ZThn8_N21QDeclarativeTextInput21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3673 NONAME + _ZN20QDeclarativeGridView13footerChangedEv @ 3674 NONAME + _ZN20QDeclarativeGridView13headerChangedEv @ 3675 NONAME + _ZN20QDeclarativeGridView9setFooterEP21QDeclarativeComponent @ 3676 NONAME + _ZN20QDeclarativeGridView9setHeaderEP21QDeclarativeComponent @ 3677 NONAME + _ZNK16QDeclarativeItem7childAtEff @ 3678 NONAME + _ZNK16QDeclarativeView11initialSizeEv @ 3679 NONAME + _ZNK17QDeclarativeState7isNamedEv @ 3680 NONAME + _ZNK20QDeclarativeGridView6footerEv @ 3681 NONAME + _ZNK20QDeclarativeGridView6headerEv @ 3682 NONAME diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index 9c1002d..b59ddee 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -12012,4 +12012,9 @@ EXPORTS _ZNK11QTextCursor17verticalMovementXEv @ 12011 NONAME _ZNK11QTextCursor20keepPositionOnInsertEv @ 12012 NONAME _ZNK12QFontMetrics5widthERK7QStringii @ 12013 NONAME + _ZN11QStaticText13setTextOptionERK11QTextOption @ 12014 NONAME + _ZNK10QTextBlock13textDirectionEv @ 12015 NONAME + _ZNK11QStaticText10textOptionEv @ 12016 NONAME + _ZNK11QTextEngine13isRightToLeftEv @ 12017 NONAME + _ZNK14QWidgetPrivate22childAtRecursiveHelperERK6QPointbb @ 12018 NONAME -- cgit v0.12 From 4effb0832834659ebb5bb7cf7d64e272647efeed Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 17 Jun 2010 14:11:18 -0700 Subject: Assigning 0xA UID3s to the new standalone qml demos Task-number: QTBUG-10148 Reviewed-by: Aleksandar Sasha Babic (cherry picked from commit 3ab8e763a4ddf076dec48d71f0bae098325e1e50) --- demos/embedded/qmlcalculator/deployment.pri | 2 +- demos/embedded/qmlclocks/deployment.pri | 2 +- demos/embedded/qmldialcontrol/deployment.pri | 2 +- demos/embedded/qmleasing/deployment.pri | 2 +- demos/embedded/qmlflickr/deployment.pri | 2 +- demos/embedded/qmlphotoviewer/deployment.pri | 2 +- demos/embedded/qmltwitter/deployment.pri | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/demos/embedded/qmlcalculator/deployment.pri b/demos/embedded/qmlcalculator/deployment.pri index d5078f6..a0bfbb6 100644 --- a/demos/embedded/qmlcalculator/deployment.pri +++ b/demos/embedded/qmlcalculator/deployment.pri @@ -1,6 +1,6 @@ qmlcalculator_src = $$PWD/../../declarative/calculator symbian { - qmlcalculator_uid3 = EA8EBD98 + qmlcalculator_uid3 = A000E3FB qmlcalculator_files.path = ../$$qmlcalculator_uid3 } qmlcalculator_files.sources = $$qmlcalculator_src/calculator.qml $$qmlcalculator_src/Core diff --git a/demos/embedded/qmlclocks/deployment.pri b/demos/embedded/qmlclocks/deployment.pri index 84803ec..a30e403 100644 --- a/demos/embedded/qmlclocks/deployment.pri +++ b/demos/embedded/qmlclocks/deployment.pri @@ -1,6 +1,6 @@ qmlclocks_src = $$PWD/../../../examples/declarative/toys/clocks symbian { - qmlclocks_uid3 = E19225B9 + qmlclocks_uid3 = A000E3FC qmlclocks_files.path = ../$$qmlclocks_uid3 } qmlclocks_files.sources = $$qmlclocks_src/clocks.qml $$qmlclocks_src/content diff --git a/demos/embedded/qmldialcontrol/deployment.pri b/demos/embedded/qmldialcontrol/deployment.pri index 8eb39b2..c04ed05 100644 --- a/demos/embedded/qmldialcontrol/deployment.pri +++ b/demos/embedded/qmldialcontrol/deployment.pri @@ -1,6 +1,6 @@ qmldialcontrol_src = $$PWD/../../../examples/declarative/ui-components/dialcontrol symbian { - qmldialcontrol_uid3 = E59A9283 + qmldialcontrol_uid3 = A000E3FD qmldialcontrol_files.path = ../$$qmldialcontrol_uid3 } qmldialcontrol_files.sources = $$qmldialcontrol_src/dialcontrol.qml $$qmldialcontrol_src/content diff --git a/demos/embedded/qmleasing/deployment.pri b/demos/embedded/qmleasing/deployment.pri index ddab1ba..bc37348 100644 --- a/demos/embedded/qmleasing/deployment.pri +++ b/demos/embedded/qmleasing/deployment.pri @@ -1,6 +1,6 @@ qmleasing_src = $$PWD/../../../examples/declarative/animation/easing symbian { - qmleasing_uid3 = E8E8E725 + qmleasing_uid3 = A000E3FE qmleasing_files.path = ../$$qmleasing_uid3 } qmleasing_files.sources = $$qmleasing_src/easing.qml diff --git a/demos/embedded/qmlflickr/deployment.pri b/demos/embedded/qmlflickr/deployment.pri index aef3198..c1f82df 100644 --- a/demos/embedded/qmlflickr/deployment.pri +++ b/demos/embedded/qmlflickr/deployment.pri @@ -1,6 +1,6 @@ qmlflickr_src = $$PWD/../../declarative/flickr symbian { - qmlflickr_uid3 = E56D5A92 + qmlflickr_uid3 = A000E3FF qmlflickr_files.path = ../$$qmlflickr_uid3 } qmlflickr_files.sources = $$qmlflickr_src/flickr.qml $$qmlflickr_src/common $$qmlflickr_src/mobile diff --git a/demos/embedded/qmlphotoviewer/deployment.pri b/demos/embedded/qmlphotoviewer/deployment.pri index 99475cc..0a457de 100644 --- a/demos/embedded/qmlphotoviewer/deployment.pri +++ b/demos/embedded/qmlphotoviewer/deployment.pri @@ -1,6 +1,6 @@ qmlphotoviewer_src = $$PWD/../../declarative/photoviewer symbian { - qmlphotoviewer_uid3 = E8567E72 + qmlphotoviewer_uid3 = A000E400 qmlphotoviewer_files.path = ../$$qmlphotoviewer_uid3 } qmlphotoviewer_files.sources = $$qmlphotoviewer_src/photoviewer.qml $$qmlphotoviewer_src/PhotoViewerCore diff --git a/demos/embedded/qmltwitter/deployment.pri b/demos/embedded/qmltwitter/deployment.pri index e5bd884..34c8cd1 100644 --- a/demos/embedded/qmltwitter/deployment.pri +++ b/demos/embedded/qmltwitter/deployment.pri @@ -1,6 +1,6 @@ qmltwitter_src = $$PWD/../../declarative/twitter symbian { - qmltwitter_uid3 = EEF6D468 + qmltwitter_uid3 = A000E401 qmltwitter_files.path = ../$$qmltwitter_uid3 } qmltwitter_files.sources = $$qmltwitter_src/twitter.qml $$qmltwitter_src/TwitterCore -- cgit v0.12 From 76c256bdabcc207a6ed70d5b5b62698495548a25 Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Tue, 22 Jun 2010 12:01:51 +1000 Subject: Audio(osx); Fix period size calculation. Task-number: QTBUG-8878 Reviewed-by:Dmytro Poplavskiy --- src/multimedia/audio/qaudiooutput_mac_p.cpp | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/multimedia/audio/qaudiooutput_mac_p.cpp b/src/multimedia/audio/qaudiooutput_mac_p.cpp index 9689101..cc52d90 100644 --- a/src/multimedia/audio/qaudiooutput_mac_p.cpp +++ b/src/multimedia/audio/qaudiooutput_mac_p.cpp @@ -358,17 +358,7 @@ bool QAudioOutputPrivate::open() // Set stream format streamFormat = toAudioStreamBasicDescription(audioFormat); - UInt32 size = sizeof(deviceFormat); - if (AudioUnitGetProperty(audioUnit, - kAudioUnitProperty_StreamFormat, - kAudioUnitScope_Input, - 0, - &deviceFormat, - &size) != noErr) { - qWarning() << "QAudioOutput: Unable to retrieve device format"; - return false; - } - + UInt32 size = sizeof(streamFormat); if (AudioUnitSetProperty(audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, @@ -392,8 +382,7 @@ bool QAudioOutputPrivate::open() return false; } - periodSizeBytes = (numberOfFrames * streamFormat.mSampleRate / deviceFormat.mSampleRate) * - streamFormat.mBytesPerFrame; + periodSizeBytes = numberOfFrames * streamFormat.mBytesPerFrame; if (internalBufferSize < periodSizeBytes * 2) internalBufferSize = periodSizeBytes * 2; else -- cgit v0.12 From f02bb3b14ab0257a11cb9cde692f87a046c0308b Mon Sep 17 00:00:00 2001 From: Justin McPherson Date: Tue, 22 Jun 2010 16:59:08 +1000 Subject: Phonon(qt7); Don't try and display video frames when audio only. Task-number: QTBUG-9068 --- src/3rdparty/phonon/qt7/mediaobject.mm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/3rdparty/phonon/qt7/mediaobject.mm b/src/3rdparty/phonon/qt7/mediaobject.mm index 677640c..ca206bc 100644 --- a/src/3rdparty/phonon/qt7/mediaobject.mm +++ b/src/3rdparty/phonon/qt7/mediaobject.mm @@ -405,20 +405,22 @@ void MediaObject::restartAudioVideoTimers() if (m_audioTimer) killTimer(m_audioTimer); + if (hasVideo()) { #if QT_ALLOW_QUICKTIME // We prefer to use a display link as timer if available, since // it is more steady, and results in better and smoother frame drawing: - startDisplayLink(); - if (!m_displayLink){ + startDisplayLink(); + if (!m_displayLink){ + float fps = m_videoPlayer->staticFps(); + long videoUpdateFrequency = fps ? long(1000.0f / fps) : 0.001; + m_videoTimer = startTimer(videoUpdateFrequency); + } +#else float fps = m_videoPlayer->staticFps(); long videoUpdateFrequency = fps ? long(1000.0f / fps) : 0.001; m_videoTimer = startTimer(videoUpdateFrequency); - } -#else - float fps = m_videoPlayer->staticFps(); - long videoUpdateFrequency = fps ? long(1000.0f / fps) : 0.001; - m_videoTimer = startTimer(videoUpdateFrequency); #endif + } long audioUpdateFrequency = m_audioPlayer->regularTaskFrequency(); m_audioTimer = startTimer(audioUpdateFrequency); -- cgit v0.12 From da024f96bf0969cd0de85389e621a14c3381add8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 22 Jun 2010 09:09:32 +0200 Subject: Make sure ValueRecord's DeviceTables are cleaned up on failure Cleanup was a missing for the case where loading an X placement device table failed. --- src/3rdparty/harfbuzz/src/harfbuzz-gpos.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c index 0236271..d6f9207 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c @@ -273,7 +273,7 @@ static HB_Error Load_ValueRecord( HB_ValueRecord* vr, if ( format & HB_GPOS_FORMAT_HAVE_X_PLACEMENT_DEVICE ) { if ( ACCESS_Frame( 2L ) ) - return error; + goto Fail4; new_offset = GET_UShort(); @@ -287,7 +287,7 @@ static HB_Error Load_ValueRecord( HB_ValueRecord* vr, if ( FILE_Seek( new_offset ) || ( error = _HB_OPEN_Load_Device( &vr->DeviceTables[VR_X_PLACEMENT_DEVICE], stream ) ) != HB_Err_Ok ) - return error; + goto Fail4; (void)FILE_Seek( cur_offset ); } } @@ -444,6 +444,7 @@ Fail3: if ( vr->DeviceTables ) _HB_OPEN_Free_Device( vr->DeviceTables[VR_Y_PLACEMENT_DEVICE] ); +Fail4: FREE( vr->DeviceTables ); return error; } -- cgit v0.12 From ca17b86f02524338d1501652c22eb9fd2501317b Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Tue, 22 Jun 2010 09:11:10 +0200 Subject: Check for main.qml first On case insensitive platforms, it would accidently pick up internal components sometimes if you check the other way around. Task-number: QTBUG-11566 --- demos/qtdemo/menumanager.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/demos/qtdemo/menumanager.cpp b/demos/qtdemo/menumanager.cpp index a2ceb0e..15561ab 100644 --- a/demos/qtdemo/menumanager.cpp +++ b/demos/qtdemo/menumanager.cpp @@ -369,10 +369,10 @@ void MenuManager::launchQmlExample(const QString &name) dir = QDir(QLibraryInfo::location(QLibraryInfo::DemosPath)); else dir = QDir(QLibraryInfo::location(QLibraryInfo::ExamplesPath)); - QFile file(dir.path() + "/" + dirName + "/" + fileName + "/" + fileName.split('/').last() + ".qml"); + QFile file(dir.path() + "/" + dirName + "/" + fileName + "/" + "main.qml"); if(!file.exists()){ - //try main.qml as well - file.setFileName(dir.path() + "/" + dirName + "/" + fileName + "/" + "main.qml"); + //try dirname.qml as well + file.setFileName(dir.path() + "/" + dirName + "/" + fileName + "/" + fileName.split('/').last() + ".qml"); if(!file.exists()){ exampleError(QProcess::UnknownError); return; -- cgit v0.12 From bae2219587a8c1a4c922d1cde51616e3ea1df370 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 22 Jun 2010 09:37:34 +0200 Subject: Clean up HB_Anchor's DeviceTables on failure when loading format 3 --- src/3rdparty/harfbuzz/src/harfbuzz-gpos.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c index d6f9207..a216005 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c @@ -637,7 +637,7 @@ static HB_Error Load_Anchor( HB_Anchor* an, if ( FILE_Seek( new_offset ) || ( error = _HB_OPEN_Load_Device( &an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE], stream ) ) != HB_Err_Ok ) - return error; + goto Fail2; (void)FILE_Seek( cur_offset ); } @@ -695,6 +695,7 @@ Fail: if ( an->af.af3.DeviceTables ) _HB_OPEN_Free_Device( an->af.af3.DeviceTables[AF3_X_DEVICE_TABLE] ); +Fail2: FREE( an->af.af3.DeviceTables ); return error; } -- cgit v0.12 From b4dd04f50b2e275ef9f8e643f33143d20a436203 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Tue, 22 Jun 2010 12:18:13 +0200 Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to f0dcb906fe56b5dc06aa305b6cfc821d5dd25a28 * Import f0dcb906fe56b5dc06aa305b6cfc821d5dd25a28 which fixes a crash with certain fonts. --- src/3rdparty/harfbuzz/src/harfbuzz-open.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-open.c b/src/3rdparty/harfbuzz/src/harfbuzz-open.c index 15cd2c1..f12f5b7 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-open.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-open.c @@ -1403,12 +1403,11 @@ _HB_OPEN_Get_Device( HB_Device* d, HB_UShort size, HB_Short* value ) { - HB_UShort byte, bits, mask, f, s; + HB_UShort byte, bits, mask, s; - f = d->DeltaFormat; - - if ( d->DeltaValue && size >= d->StartSize && size <= d->EndSize ) + if ( d && d->DeltaValue && size >= d->StartSize && size <= d->EndSize ) { + HB_UShort f = d->DeltaFormat; s = size - d->StartSize; byte = d->DeltaValue[s >> ( 4 - f )]; bits = byte >> ( 16 - ( ( s % ( 1 << ( 4 - f ) ) + 1 ) << f ) ); -- cgit v0.12 From 3e209785c3f027973089ccbebc6528501f416f2b Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Wed, 23 Jun 2010 12:45:34 +1000 Subject: References to undefined variables throws a ReferenceError This is consistent with normal JavaScript --- .../qml/qdeclarativeglobalscriptclass.cpp | 24 +++++++++------------- .../qml/qdeclarativeglobalscriptclass_p.h | 5 +---- .../qdeclarativeecmascript/data/eval.qml | 6 +++++- .../qdeclarativeecmascript/data/function.qml | 6 +++++- .../qdeclarativeecmascript/data/scriptErrors.qml | 2 +- .../tst_qdeclarativeecmascript.cpp | 13 ++++++++---- 6 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp index 6e107fb..f29b3f4 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp @@ -41,6 +41,7 @@ #include "private/qdeclarativeglobalscriptclass_p.h" +#include #include #include #include @@ -87,18 +88,7 @@ QDeclarativeGlobalScriptClass::queryProperty(const QScriptValue &object, Q_UNUSED(name); Q_UNUSED(flags); Q_UNUSED(id); - return HandlesReadAccess | HandlesWriteAccess; -} - -QScriptValue -QDeclarativeGlobalScriptClass::property(const QScriptValue &object, - const QScriptString &name, - uint id) -{ - Q_UNUSED(object); - Q_UNUSED(name); - Q_UNUSED(id); - return engine()->undefinedValue(); + return HandlesWriteAccess; } void QDeclarativeGlobalScriptClass::setProperty(QScriptValue &object, @@ -114,8 +104,9 @@ void QDeclarativeGlobalScriptClass::setProperty(QScriptValue &object, } /* This method is for the use of tst_qdeclarativeecmascript::callQtInvokables() only */ -void QDeclarativeGlobalScriptClass::explicitSetProperty(const QString &name, const QScriptValue &value) +void QDeclarativeGlobalScriptClass::explicitSetProperty(const QStringList &names, const QList &values) { + Q_ASSERT(names.count() == values.count()); QScriptValue globalObject = engine()->globalObject(); QScriptValue v = engine()->newObject(); @@ -126,7 +117,12 @@ void QDeclarativeGlobalScriptClass::explicitSetProperty(const QString &name, con v.setProperty(iter.scriptName(), iter.value()); } - v.setProperty(name, value); + for (int ii = 0; ii < names.count(); ++ii) { + const QString &name = names.at(ii); + const QScriptValue &value = values.at(ii); + v.setProperty(name, value); + } + v.setScriptClass(this); engine()->setGlobalObject(v); diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass_p.h b/src/declarative/qml/qdeclarativeglobalscriptclass_p.h index 7690edd..fb44e5d 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass_p.h +++ b/src/declarative/qml/qdeclarativeglobalscriptclass_p.h @@ -67,13 +67,10 @@ public: const QScriptString &name, QueryFlags flags, uint *id); - virtual QScriptValue property(const QScriptValue &object, - const QScriptString &name, uint id); - virtual void setProperty(QScriptValue &object, const QScriptString &name, uint id, const QScriptValue &value); - void explicitSetProperty(const QString &, const QScriptValue &); + void explicitSetProperty(const QStringList &, const QList &); const QScriptValue &globalObject() const { return m_globalObject; } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/eval.qml b/tests/auto/declarative/qdeclarativeecmascript/data/eval.qml index bc2df98..aab39be 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/eval.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/eval.qml @@ -16,7 +16,11 @@ QtObject { test1 = (eval("a") == 7); test2 = (eval("b") == 9); - test3 = (eval("c") == undefined); + try { + eval("c"); + } catch(e) { + test3 = true; + } test4 = (eval("console") == console); test5 = (eval("Qt") == Qt); } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/function.qml b/tests/auto/declarative/qdeclarativeecmascript/data/function.qml index b435f58..80d6ef4 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/function.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/function.qml @@ -14,6 +14,10 @@ QtObject { test1 = (func1(4) == 11); test2 = (func2("Hello World!") == Qt.atob("Hello World!")); - test3 = (func3() == undefined); + try { + func3(); + } catch(e) { + test3 = true; + } } } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml index e8f7b62..f601f49 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptErrors.qml @@ -4,7 +4,7 @@ import "scriptErrors.js" as Script MyQmlObject { property int t: a.value property int w: Script.getValue(); - property int x: undefinedObject + property int x: undefined property int y: (a.value, undefinedObject) onBasicSignal: { console.log(a.value); } diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 16e7ec5..50da55d 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -1002,10 +1002,10 @@ void tst_qdeclarativeecmascript::scriptErrors() QString url = component.url().toString(); QString warning1 = url.left(url.length() - 3) + "js:2: Error: Invalid write to global property \"a\""; - QString warning2 = url + ":5: TypeError: Result of expression 'a' [undefined] is not an object."; + QString warning2 = url + ":5: ReferenceError: Can't find variable: a"; QString warning3 = url.left(url.length() - 3) + "js:4: Error: Invalid write to global property \"a\""; - QString warning4 = url + ":10: TypeError: Result of expression 'a' [undefined] is not an object."; - QString warning5 = url + ":8: TypeError: Result of expression 'a' [undefined] is not an object."; + QString warning4 = url + ":10: ReferenceError: Can't find variable: a"; + QString warning5 = url + ":8: ReferenceError: Can't find variable: a"; QString warning6 = url + ":7: Unable to assign [undefined] to int x"; QString warning7 = url + ":12: Error: Cannot assign to read-only property \"trueProperty\""; QString warning8 = url + ":13: Error: Cannot assign to non-existent property \"fakeProperty\""; @@ -1322,7 +1322,12 @@ void tst_qdeclarativeecmascript::callQtInvokables() QDeclarativeEngine qmlengine; QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(&qmlengine); QScriptEngine *engine = &ep->scriptEngine; - ep->globalClass->explicitSetProperty("object", ep->objectClass->newQObject(&o)); + + QStringList names; QList values; + names << QLatin1String("object"); values << ep->objectClass->newQObject(&o); + names << QLatin1String("undefined"); values << engine->undefinedValue(); + + ep->globalClass->explicitSetProperty(names, values); // Non-existent methods o.reset(); -- cgit v0.12 From 08e2216a5157c5de30a65674051b08df6f2a1bf6 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Tue, 22 Jun 2010 15:26:24 +0200 Subject: Fixed crash in the fast blend functions for raster The blend functions don't work when the scaling factor goes beyond 65536, so abort early. Strictly speaking the scale factor comes from targetWidth / sourceWidth, so this catches a bit more cases. Reviewed-by: Kim Task: http://bugreports.qt.nokia.com/browse/QTBUG-9437 --- src/gui/painting/qpaintengine_raster.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index a212718..94e5cbc 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -2688,7 +2688,11 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe if (s->matrix.type() > QTransform::TxTranslate || stretch_sr) { - if (s->flags.fast_images) { + QRectF targetBounds = s->matrix.mapRect(r); + bool exceedsPrecision = targetBounds.width() > 0xffff + || targetBounds.height() > 0xffff; + + if (s->flags.fast_images && !exceedsPrecision) { if (s->matrix.type() > QTransform::TxScale) { SrcOverTransformFunc func = qTransformFunctions[d->rasterBuffer->format][img.format()]; if (func && (!clip || clip->hasRectClip)) { -- cgit v0.12 From e53cd1a6c32e2de719e82a1e0f25b104a0fee995 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 23 Jun 2010 15:31:21 +1000 Subject: Support for non-literal plural arguments to qsTr() in lupdate (QML). Task-number: QTBUG-11579 --- tools/linguist/lupdate/qdeclarative.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/tools/linguist/lupdate/qdeclarative.cpp b/tools/linguist/lupdate/qdeclarative.cpp index a734e99..1b35c14 100644 --- a/tools/linguist/lupdate/qdeclarative.cpp +++ b/tools/linguist/lupdate/qdeclarative.cpp @@ -102,12 +102,8 @@ protected: comment = literal->value->asString(); AST::ArgumentList *nNode = commentNode->next; - if (nNode) { - AST::NumericLiteral *numLiteral = AST::cast(nNode->expression); - if (numLiteral) { - plural = true; - } - } + if (nNode) + plural = true; } TranslatorMessage msg(m_component, source, @@ -135,12 +131,8 @@ protected: comment = literal->value->asString(); AST::ArgumentList *nNode = commentNode->next; - if (nNode) { - AST::NumericLiteral *numLiteral = AST::cast(nNode->expression); - if (numLiteral) { - plural = true; - } - } + if (nNode) + plural = true; } } -- cgit v0.12 From 1aee8f71da584525eea569690110ca2ed471c5ae Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 23 Jun 2010 07:44:10 +0200 Subject: Ensure that compiling with the no debug/warning output defines works The defines that can be used are QT_NO_DEBUG_OUTPUT and QT_NO_WARNING_OUTPUT in order to turn off qDebug and qWarning output. Reviewed-by: cduclos Reviewed-by: Markus Goetz --- src/gui/accessible/qaccessible_mac_cocoa.mm | 4 ++++ src/network/access/qftp.cpp | 2 +- src/opengl/qgl_p.h | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gui/accessible/qaccessible_mac_cocoa.mm b/src/gui/accessible/qaccessible_mac_cocoa.mm index 1688404..ada927e 100644 --- a/src/gui/accessible/qaccessible_mac_cocoa.mm +++ b/src/gui/accessible/qaccessible_mac_cocoa.mm @@ -58,11 +58,15 @@ QT_BEGIN_NAMESPACE //#define MAC_ACCESSIBILTY_DEVELOPER_MODE +#ifndef QT_NO_DEBUG_STREAM #ifdef MAC_ACCESSIBILTY_DEVELOPER_MODE #define MAC_ACCESSIBILTY_DEBUG QT_PREPEND_NAMESPACE(qDebug) #else #define MAC_ACCESSIBILTY_DEBUG if (0) QT_PREPEND_NAMESPACE(qDebug) #endif +#else +#define MAC_ACCESSIBILTY_DEBUG if (0) QT_PREPEND_NAMESPACE(QNoDebug) +#endif typedef QMap QMacAccessibiltyRoleMap; Q_GLOBAL_STATIC(QMacAccessibiltyRoleMap, qMacAccessibiltyRoleMap); diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp index 7f6df0a..97219f4 100644 --- a/src/network/access/qftp.cpp +++ b/src/network/access/qftp.cpp @@ -2311,7 +2311,7 @@ void QFtpPrivate::_q_piError(int errorCode, const QString &text) Q_Q(QFtp); if (pending.isEmpty()) { - qWarning() << "QFtpPrivate::_q_piError was called without pending command!"; + qWarning("QFtpPrivate::_q_piError was called without pending command!"); return; } diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 191131e..4facb65 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -114,7 +114,7 @@ QT_BEGIN_INCLUDE_NAMESPACE QT_END_INCLUDE_NAMESPACE # ifdef old_qDebug # undef qDebug -# define qDebug QT_QDEBUG_MACRO +# define qDebug QT_NO_QDEBUG_MACRO # undef old_qDebug # endif class QMacWindowChangeEvent; -- cgit v0.12 From a60f8832425aafbe6c5e8be3c25fefc9f8f2f87b Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 23 Jun 2010 16:13:18 +1000 Subject: Ensure the view is correctly positioned at component complete. If a currentIndex has been specified, ensure the view starts at the correct position immediately, rather than scrolling to it after startup. --- .../graphicsitems/qdeclarativegridview.cpp | 9 ++++ .../graphicsitems/qdeclarativelistview.cpp | 8 +++ .../data/gridview-initCurrent.qml | 2 +- .../tst_qdeclarativegridview.cpp | 57 +++++++++++----------- .../data/listview-initCurrent.qml | 2 +- .../tst_qdeclarativelistview.cpp | 32 ++++++------ 6 files changed, 65 insertions(+), 45 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 3792595..8e53237 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -2037,6 +2037,8 @@ void QDeclarativeGridView::positionViewAtIndex(int index, int mode) if (mode < Beginning || mode > Contain) return; + if (d->layoutScheduled) + d->layout(); qreal pos = d->position(); FxGridItem *item = d->visibleItem(index); if (!item) { @@ -2079,6 +2081,8 @@ void QDeclarativeGridView::positionViewAtIndex(int index, int mode) pos = qMin(pos, maxExtent); qreal minExtent = d->flow == QDeclarativeGridView::LeftToRight ? -minYExtent() : -minXExtent(); pos = qMax(pos, minExtent); + d->moveReason = QDeclarativeGridViewPrivate::Other; + cancelFlick(); d->setPosition(pos); } d->fixupPosition(); @@ -2113,10 +2117,15 @@ void QDeclarativeGridView::componentComplete() d->updateGrid(); if (d->isValid()) { refill(); + d->moveReason = QDeclarativeGridViewPrivate::SetIndex; if (d->currentIndex < 0) d->updateCurrent(0); else d->updateCurrent(d->currentIndex); + if (d->highlight) { + d->highlight->setPosition(d->currentItem->colPos(), d->currentItem->rowPos()); + d->updateTrackedItem(); + } d->fixupPosition(); } } diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 06a3239..35e6bab 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -2448,6 +2448,8 @@ void QDeclarativeListView::positionViewAtIndex(int index, int mode) if (mode < Beginning || mode > Contain) return; + if (d->layoutScheduled) + d->layout(); qreal pos = d->position(); FxListItem *item = d->visibleItem(index); if (!item) { @@ -2491,6 +2493,8 @@ void QDeclarativeListView::positionViewAtIndex(int index, int mode) pos = qMin(pos, maxExtent); qreal minExtent = d->orient == QDeclarativeListView::Vertical ? -minYExtent() : -minXExtent(); pos = qMax(pos, minExtent); + d->moveReason = QDeclarativeListViewPrivate::Other; + cancelFlick(); d->setPosition(pos); } d->fixupPosition(); @@ -2529,6 +2533,10 @@ void QDeclarativeListView::componentComplete() d->updateCurrent(0); else d->updateCurrent(d->currentIndex); + if (d->highlight) { + d->highlight->setPosition(d->currentItem->position()); + d->updateTrackedItem(); + } d->fixupPosition(); } } diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml index 9331243..a5d651d 100644 --- a/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml +++ b/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml @@ -43,7 +43,7 @@ Rectangle { focus: true width: 240 height: 320 - currentIndex: 5 + currentIndex: 35 cellWidth: 80 cellHeight: 60 delegate: myDelegate diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 4e35bc0..deff1f8 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -557,7 +557,7 @@ void tst_QDeclarativeGridView::moved() void tst_QDeclarativeGridView::currentIndex() { TestModel model; - for (int i = 0; i < 30; i++) + for (int i = 0; i < 60; i++) model.addItem("Item" + QString::number(i), QString::number(i)); QDeclarativeView *canvas = new QDeclarativeView(0); @@ -572,57 +572,58 @@ void tst_QDeclarativeGridView::currentIndex() qApp->processEvents(); QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); - QTRY_VERIFY(gridview != 0); + QVERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QVERIFY(viewport != 0); // current item should be third item - QTRY_COMPARE(gridview->currentIndex(), 5); - QTRY_COMPARE(gridview->currentItem(), findItem(viewport, "wrapper", 5)); - QTRY_COMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); + QCOMPARE(gridview->currentIndex(), 35); + QCOMPARE(gridview->currentItem(), findItem(viewport, "wrapper", 35)); + QCOMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); + QCOMPARE(gridview->contentY(), 399.0); gridview->moveCurrentIndexRight(); - QTRY_COMPARE(gridview->currentIndex(), 6); + QCOMPARE(gridview->currentIndex(), 36); gridview->moveCurrentIndexDown(); - QTRY_COMPARE(gridview->currentIndex(), 9); + QCOMPARE(gridview->currentIndex(), 39); gridview->moveCurrentIndexUp(); - QTRY_COMPARE(gridview->currentIndex(), 6); + QCOMPARE(gridview->currentIndex(), 36); gridview->moveCurrentIndexLeft(); - QTRY_COMPARE(gridview->currentIndex(), 5); + QCOMPARE(gridview->currentIndex(), 35); // no wrap gridview->setCurrentIndex(0); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); gridview->moveCurrentIndexUp(); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); gridview->moveCurrentIndexLeft(); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); gridview->setCurrentIndex(model.count()-1); - QTRY_COMPARE(gridview->currentIndex(), model.count()-1); + QCOMPARE(gridview->currentIndex(), model.count()-1); gridview->moveCurrentIndexRight(); - QTRY_COMPARE(gridview->currentIndex(), model.count()-1); + QCOMPARE(gridview->currentIndex(), model.count()-1); gridview->moveCurrentIndexDown(); - QTRY_COMPARE(gridview->currentIndex(), model.count()-1); + QCOMPARE(gridview->currentIndex(), model.count()-1); // with wrap gridview->setWrapEnabled(true); gridview->setCurrentIndex(0); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); gridview->moveCurrentIndexLeft(); - QTRY_COMPARE(gridview->currentIndex(), model.count()-1); + QCOMPARE(gridview->currentIndex(), model.count()-1); - QTRY_COMPARE(gridview->contentY(), 279.0); + QTRY_COMPARE(gridview->contentY(), 879.0); gridview->moveCurrentIndexRight(); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); QTRY_COMPARE(gridview->contentY(), 0.0); @@ -638,30 +639,30 @@ void tst_QDeclarativeGridView::currentIndex() qApp->processEvents(); QTest::keyClick(canvas, Qt::Key_Down); - QTRY_COMPARE(gridview->currentIndex(), 3); + QCOMPARE(gridview->currentIndex(), 3); QTest::keyClick(canvas, Qt::Key_Up); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); gridview->setFlow(QDeclarativeGridView::TopToBottom); QTest::keyClick(canvas, Qt::Key_Right); - QTRY_COMPARE(gridview->currentIndex(), 5); + QCOMPARE(gridview->currentIndex(), 5); QTest::keyClick(canvas, Qt::Key_Left); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); QTest::keyClick(canvas, Qt::Key_Down); - QTRY_COMPARE(gridview->currentIndex(), 1); + QCOMPARE(gridview->currentIndex(), 1); QTest::keyClick(canvas, Qt::Key_Up); - QTRY_COMPARE(gridview->currentIndex(), 0); + QCOMPARE(gridview->currentIndex(), 0); // turn off auto highlight gridview->setHighlightFollowsCurrentItem(false); - QTRY_VERIFY(gridview->highlightFollowsCurrentItem() == false); - QTRY_VERIFY(gridview->highlightItem()); + QVERIFY(gridview->highlightFollowsCurrentItem() == false); + QVERIFY(gridview->highlightItem()); qreal hlPosX = gridview->highlightItem()->x(); qreal hlPosY = gridview->highlightItem()->y(); diff --git a/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml b/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml index 0599ddd..f3c2910 100644 --- a/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml +++ b/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml @@ -40,7 +40,7 @@ Rectangle { id: list objectName: "list" focus: true - currentIndex: 3 + currentIndex: 20 width: 240 height: 320 keyNavigationWraps: testWrap diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index cd42b63..8ff6e56 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -973,34 +973,36 @@ void tst_QDeclarativeListView::currentIndex() QDeclarativeItem *viewport = listview->viewport(); QTRY_VERIFY(viewport != 0); - // current item should be third item - QTRY_COMPARE(listview->currentIndex(), 3); - QTRY_COMPARE(listview->currentItem(), findItem(viewport, "wrapper", 3)); - QTRY_COMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); + // current item should be 20th item at startup + // and current item should be in view + QCOMPARE(listview->currentIndex(), 20); + QCOMPARE(listview->contentY(), 99.0); + QCOMPARE(listview->currentItem(), findItem(viewport, "wrapper", 20)); + QCOMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); // no wrap listview->setCurrentIndex(0); - QTRY_COMPARE(listview->currentIndex(), 0); + QCOMPARE(listview->currentIndex(), 0); listview->incrementCurrentIndex(); - QTRY_COMPARE(listview->currentIndex(), 1); + QCOMPARE(listview->currentIndex(), 1); listview->decrementCurrentIndex(); - QTRY_COMPARE(listview->currentIndex(), 0); + QCOMPARE(listview->currentIndex(), 0); listview->decrementCurrentIndex(); - QTRY_COMPARE(listview->currentIndex(), 0); + QCOMPARE(listview->currentIndex(), 0); // with wrap ctxt->setContextProperty("testWrap", QVariant(true)); - QTRY_VERIFY(listview->isWrapEnabled()); + QVERIFY(listview->isWrapEnabled()); listview->decrementCurrentIndex(); - QTRY_COMPARE(listview->currentIndex(), model.count()-1); + QCOMPARE(listview->currentIndex(), model.count()-1); QTRY_COMPARE(listview->contentY(), 279.0); listview->incrementCurrentIndex(); - QTRY_COMPARE(listview->currentIndex(), 0); + QCOMPARE(listview->currentIndex(), 0); QTRY_COMPARE(listview->contentY(), 0.0); @@ -1016,16 +1018,16 @@ void tst_QDeclarativeListView::currentIndex() qApp->processEvents(); QTest::keyClick(canvas, Qt::Key_Down); - QTRY_COMPARE(listview->currentIndex(), 1); + QCOMPARE(listview->currentIndex(), 1); QTest::keyClick(canvas, Qt::Key_Up); - QTRY_COMPARE(listview->currentIndex(), 0); + QCOMPARE(listview->currentIndex(), 0); // turn off auto highlight listview->setHighlightFollowsCurrentItem(false); - QTRY_VERIFY(listview->highlightFollowsCurrentItem() == false); + QVERIFY(listview->highlightFollowsCurrentItem() == false); - QTRY_VERIFY(listview->highlightItem()); + QVERIFY(listview->highlightItem()); qreal hlPos = listview->highlightItem()->y(); listview->setCurrentIndex(4); -- cgit v0.12 From faebec95f12f2db4cc105738c064e12bd0bcf988 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 23 Jun 2010 16:50:48 +1000 Subject: Fix and better test Text / TextEdit alignments. Various clipping and refresh bugs. Task-number: QTBUG-11492 --- .../graphicsitems/qdeclarativepainteditem.cpp | 4 +- src/declarative/graphicsitems/qdeclarativetext.cpp | 142 +++++++++++++-------- src/declarative/graphicsitems/qdeclarativetext_p.h | 2 + .../graphicsitems/qdeclarativetextedit.cpp | 28 +++- .../graphicsitems/qdeclarativetextedit_p.h | 2 + .../qdeclarativetext/data/alignments.qml | 42 ++++++ .../qdeclarativetext/data/alignments_cb.png | Bin 0 -> 1184 bytes .../qdeclarativetext/data/alignments_cc.png | Bin 0 -> 1293 bytes .../qdeclarativetext/data/alignments_ct.png | Bin 0 -> 1237 bytes .../qdeclarativetext/data/alignments_lb.png | Bin 0 -> 1208 bytes .../qdeclarativetext/data/alignments_lc.png | Bin 0 -> 1303 bytes .../qdeclarativetext/data/alignments_lt.png | Bin 0 -> 1241 bytes .../qdeclarativetext/data/alignments_rb.png | Bin 0 -> 1178 bytes .../qdeclarativetext/data/alignments_rc.png | Bin 0 -> 1274 bytes .../qdeclarativetext/data/alignments_rt.png | Bin 0 -> 1221 bytes .../qdeclarativetext/tst_qdeclarativetext.cpp | 66 ++++++++++ .../qdeclarativetextedit/data/alignments.qml | 42 ++++++ .../qdeclarativetextedit/data/alignments_cb.png | Bin 0 -> 1411 bytes .../qdeclarativetextedit/data/alignments_cc.png | Bin 0 -> 1501 bytes .../qdeclarativetextedit/data/alignments_ct.png | Bin 0 -> 1457 bytes .../qdeclarativetextedit/data/alignments_lb.png | Bin 0 -> 1420 bytes .../qdeclarativetextedit/data/alignments_lc.png | Bin 0 -> 1508 bytes .../qdeclarativetextedit/data/alignments_lt.png | Bin 0 -> 1447 bytes .../qdeclarativetextedit/data/alignments_rb.png | Bin 0 -> 1421 bytes .../qdeclarativetextedit/data/alignments_rc.png | Bin 0 -> 1485 bytes .../qdeclarativetextedit/data/alignments_rt.png | Bin 0 -> 1439 bytes .../tst_qdeclarativetextedit.cpp | 54 ++++++++ 27 files changed, 326 insertions(+), 56 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments.qml create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_cb.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_cc.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_ct.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_lb.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_lc.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_lt.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_rb.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_rc.png create mode 100644 tests/auto/declarative/qdeclarativetext/data/alignments_rt.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments.qml create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png create mode 100644 tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png diff --git a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp index 13d1b61..3b9b8df 100644 --- a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp +++ b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp @@ -151,6 +151,7 @@ void QDeclarativePaintedItem::setContentsSize(const QSize &size) { Q_D(QDeclarativePaintedItem); if (d->contentsSize == size) return; + prepareGeometryChange(); d->contentsSize = size; clearCache(); update(); @@ -247,8 +248,7 @@ QRectF QDeclarativePaintedItem::boundingRect() const void QDeclarativePaintedItem::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) { Q_D(QDeclarativePaintedItem); - const QRect content(0,0,qCeil(d->contentsSize.width()*d->contentsScale), - qCeil(d->contentsSize.height()*d->contentsScale)); + const QRect content = boundingRect().toRect(); if (content.width() <= 0 || content.height() <= 0) return; diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index c2e0d67..2ba680d 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -663,6 +663,71 @@ void QDeclarativeText::setElideMode(QDeclarativeText::TextElideMode mode) emit elideModeChanged(d->elideMode); } +QRectF QDeclarativeText::boundingRect() const +{ + Q_D(const QDeclarativeText); + + int w = width(); + int h = height(); + + int x = 0; + int y = 0; + + if (d->cache || d->style != Normal) { + switch (d->hAlign) { + case AlignLeft: + x = 0; + break; + case AlignRight: + x = w - d->imgCache.width(); + break; + case AlignHCenter: + x = (w - d->imgCache.width()) / 2; + break; + } + + switch (d->vAlign) { + case AlignTop: + y = 0; + break; + case AlignBottom: + y = h - d->imgCache.height(); + break; + case AlignVCenter: + y = (h - d->imgCache.height()) / 2; + break; + } + + return QRectF(x,y,d->imgCache.width(),d->imgCache.height()); + } else { + switch (d->hAlign) { + case AlignLeft: + x = 0; + break; + case AlignRight: + x = w - d->cachedLayoutSize.width(); + break; + case AlignHCenter: + x = (w - d->cachedLayoutSize.width()) / 2; + break; + } + + switch (d->vAlign) { + case AlignTop: + y = 0; + break; + case AlignBottom: + y = h - d->cachedLayoutSize.height(); + break; + case AlignVCenter: + y = (h - d->cachedLayoutSize.height()) / 2; + break; + } + + return QRectF(x,y,d->cachedLayoutSize.width(),d->cachedLayoutSize.height()); + } +} + void QDeclarativeText::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { @@ -713,6 +778,7 @@ void QDeclarativeTextPrivate::updateLayout() } } + void QDeclarativeTextPrivate::updateSize() { Q_Q(QDeclarativeText); @@ -730,7 +796,10 @@ void QDeclarativeTextPrivate::updateSize() //setup instance of QTextLayout for all cases other than richtext if (!richText) { size = setupTextLayout(&layout); - cachedLayoutSize = size; + if (cachedLayoutSize != size) { + q->prepareGeometryChange(); + cachedLayoutSize = size; + } dy -= size.height(); } else { singleline = false; // richtext can't elide or be optimized for single-line case @@ -744,7 +813,13 @@ void QDeclarativeTextPrivate::updateSize() else doc->setTextWidth(doc->idealWidth()); // ### Text does not align if width is not set (QTextDoc bug) dy -= (int)doc->size().height(); - cachedLayoutSize = doc->size().toSize(); + q->prepareGeometryChange(); + QSize dsize = doc->size().toSize(); + if (dsize != cachedLayoutSize) { + q->prepareGeometryChange(); + cachedLayoutSize = dsize; + } + size = QSize(int(doc->idealWidth()),dsize.height()); } int yoff = 0; @@ -757,8 +832,8 @@ void QDeclarativeTextPrivate::updateSize() q->setBaselineOffset(fm.ascent() + yoff); //### need to comfirm cost of always setting these for richText - q->setImplicitWidth(richText ? (int)doc->idealWidth() : size.width()); - q->setImplicitHeight(richText ? (int)doc->size().height() : size.height()); + q->setImplicitWidth(size.width()); + q->setImplicitHeight(size.height()); emit q->paintedSizeChanged(); } else { dirty = true; @@ -813,6 +888,8 @@ void QDeclarativeTextPrivate::drawOutline() ppm.drawPixmap(pos, imgCache); ppm.end(); + if (imgCache.size() != img.size()) + q_func()->prepareGeometryChange(); imgCache = img; } @@ -831,6 +908,8 @@ void QDeclarativeTextPrivate::drawOutline(int yOffset) ppm.drawPixmap(pos, imgCache); ppm.end(); + if (imgCache.size() != img.size()) + q_func()->prepareGeometryChange(); imgCache = img; } @@ -955,18 +1034,21 @@ void QDeclarativeTextPrivate::checkImgCache() return; bool empty = text.isEmpty(); + QPixmap newImgCache; if (empty) { - imgCache = QPixmap(); imgStyleCache = QPixmap(); } else if (richText) { - imgCache = richTextImage(false); + newImgCache = richTextImage(false); if (style != QDeclarativeText::Normal) imgStyleCache = richTextImage(true); //### should use styleColor } else { - imgCache = wrappedTextImage(false); + newImgCache = wrappedTextImage(false); if (style != QDeclarativeText::Normal) imgStyleCache = wrappedTextImage(true); //### should use styleColor } + if (imgCache.size() != newImgCache.size()) + q_func()->prepareGeometryChange(); + imgCache = newImgCache; if (!empty) switch (style) { case QDeclarativeText::Outline: @@ -1031,35 +1113,7 @@ void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWid if (d->smooth) p->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, d->smooth); - int w = width(); - int h = height(); - - int x = 0; - int y = 0; - - switch (d->hAlign) { - case AlignLeft: - x = 0; - break; - case AlignRight: - x = w - d->imgCache.width(); - break; - case AlignHCenter: - x = (w - d->imgCache.width()) / 2; - break; - } - - switch (d->vAlign) { - case AlignTop: - y = 0; - break; - case AlignBottom: - y = h - d->imgCache.height(); - break; - case AlignVCenter: - y = (h - d->imgCache.height()) / 2; - break; - } + QRect br = boundingRect().toRect(); bool needClip = clip() && (d->imgCache.width() > width() || d->imgCache.height() > height()); @@ -1068,7 +1122,7 @@ void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWid p->save(); p->setClipRect(boundingRect(), Qt::IntersectClip); } - p->drawPixmap(x, y, d->imgCache); + p->drawPixmap(br.x(), br.y(), d->imgCache); if (needClip) p->restore(); @@ -1077,20 +1131,8 @@ void QDeclarativeText::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWid p->setRenderHint(QPainter::SmoothPixmapTransform, oldSmooth); } } else { - int h = height(); - int y = 0; + qreal y = boundingRect().y(); - switch (d->vAlign) { - case AlignTop: - y = 0; - break; - case AlignBottom: - y = h - d->cachedLayoutSize.height(); - break; - case AlignVCenter: - y = (h - d->cachedLayoutSize.height()) / 2; - break; - } bool needClip = !clip() && (d->cachedLayoutSize.width() > width() || d->cachedLayoutSize.height() > height()); diff --git a/src/declarative/graphicsitems/qdeclarativetext_p.h b/src/declarative/graphicsitems/qdeclarativetext_p.h index db21140..cd97df3 100644 --- a/src/declarative/graphicsitems/qdeclarativetext_p.h +++ b/src/declarative/graphicsitems/qdeclarativetext_p.h @@ -143,6 +143,8 @@ public: qreal paintedWidth() const; qreal paintedHeight() const; + QRectF boundingRect() const; + Q_SIGNALS: void textChanged(const QString &text); void linkActivated(const QString &link); diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index 3106daf..7db21f2 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -1231,8 +1231,13 @@ void QDeclarativeTextEdit::updateImgCache(const QRectF &rf) r = QRect(0,0,INT_MAX,INT_MAX); } else { r = rf.toRect(); - if (r != QRect(0,0,INT_MAX,INT_MAX)) // Don't translate "everything" + if (r.height() > INT_MAX/2) { + // Take care of overflow when translating "everything" + r.setTop(r.y() + d->yoff); + r.setBottom(INT_MAX/2); + } else { r = r.translated(0,d->yoff); + } } dirtyCache(r); emit update(); @@ -1327,6 +1332,14 @@ void QDeclarativeTextEdit::updateSelectionMarkers() } } +QRectF QDeclarativeTextEdit::boundingRect() const +{ + Q_D(const QDeclarativeTextEdit); + QRectF r = QDeclarativePaintedItem::boundingRect(); + return r.translated(0,d->yoff); +} + + //### we should perhaps be a bit smarter here -- depending on what has changed, we shouldn't // need to do all the calculations each time void QDeclarativeTextEdit::updateSize() @@ -1341,13 +1354,20 @@ void QDeclarativeTextEdit::updateSize() d->document->setTextWidth(width()); dy -= (int)d->document->size().height(); + int nyoff; if (heightValid()) { if (d->vAlign == AlignBottom) - d->yoff = dy; + nyoff = dy; else if (d->vAlign == AlignVCenter) - d->yoff = dy/2; + nyoff = dy/2; + else + nyoff = 0; } else { - d->yoff = 0; + nyoff = 0; + } + if (nyoff != d->yoff) { + prepareGeometryChange(); + d->yoff = nyoff; } setBaselineOffset(fm.ascent() + d->yoff + d->textMargin); diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p.h index d08f607..a6dd4a4 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit_p.h +++ b/src/declarative/graphicsitems/qdeclarativetextedit_p.h @@ -195,6 +195,8 @@ public: Q_INVOKABLE int positionAt(int x, int y) const; Q_INVOKABLE void moveCursorSelection(int pos); + QRectF boundingRect() const; + Q_SIGNALS: void textChanged(const QString &); void paintedSizeChanged(); diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments.qml b/tests/auto/declarative/qdeclarativetext/data/alignments.qml new file mode 100644 index 0000000..6a98a4d --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/alignments.qml @@ -0,0 +1,42 @@ +import Qt 4.7 + +Rectangle { + id: top + width: 70; height: 70; + + property alias horizontalAlignment: t.horizontalAlignment + property alias verticalAlignment: t.verticalAlignment + property alias wrapMode: t.wrapMode + property alias running: timer.running + property string txt: "Test" + + Rectangle { + anchors.centerIn: parent + width: 40 + height: 40 + color: "green" + + Text { + id: t + + anchors.fill: parent + font.pixelSize: 8 + horizontalAlignment: TextEdit.AlignRight + verticalAlignment: TextEdit.AlignBottom + wrapMode: TextEdit.WordWrap + text: top.txt + } + Timer { + id: timer + + interval: 1 + running: true + repeat: true + onTriggered: { + top.txt = top.txt + "
more " + top.txt.length; + if (top.txt.length > 50) + running = false + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png new file mode 100644 index 0000000..5cdb1e5 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png new file mode 100644 index 0000000..6b6862c Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png new file mode 100644 index 0000000..7bfd281 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png new file mode 100644 index 0000000..a8c16a0 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png new file mode 100644 index 0000000..1f6e28d Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png new file mode 100644 index 0000000..e529880 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png new file mode 100644 index 0000000..c1ce274 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png new file mode 100644 index 0000000..4f8a4a7 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png new file mode 100644 index 0000000..643bd18 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png differ diff --git a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp index 01120b1..91b3ca0 100644 --- a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp +++ b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include "../../../shared/util.h" #include "testhttpserver.h" @@ -70,6 +71,9 @@ private slots: void elide(); void textFormat(); + void alignments_data(); + void alignments(); + void embeddedImages_data(); void embeddedImages(); @@ -108,6 +112,8 @@ private: QStringList colorStrings; QDeclarativeEngine engine; + + QDeclarativeView *createView(const QString &filename); }; tst_qdeclarativetext::tst_qdeclarativetext() @@ -163,6 +169,14 @@ tst_qdeclarativetext::tst_qdeclarativetext() // } +QDeclarativeView *tst_qdeclarativetext::createView(const QString &filename) +{ + QDeclarativeView *canvas = new QDeclarativeView(0); + + canvas->setSource(QUrl::fromLocalFile(filename)); + return canvas; +} + void tst_qdeclarativetext::text() { { @@ -383,6 +397,58 @@ void tst_qdeclarativetext::textFormat() } } + +void tst_qdeclarativetext::alignments_data() +{ + QTest::addColumn("hAlign"); + QTest::addColumn("vAlign"); + QTest::addColumn("expectfile"); + + QTest::newRow("LT") << int(Qt::AlignLeft) << int(Qt::AlignTop) << SRCDIR "/data/alignments_lt.png"; + QTest::newRow("RT") << int(Qt::AlignRight) << int(Qt::AlignTop) << SRCDIR "/data/alignments_rt.png"; + QTest::newRow("CT") << int(Qt::AlignHCenter) << int(Qt::AlignTop) << SRCDIR "/data/alignments_ct.png"; + + QTest::newRow("LB") << int(Qt::AlignLeft) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_lb.png"; + QTest::newRow("RB") << int(Qt::AlignRight) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_rb.png"; + QTest::newRow("CB") << int(Qt::AlignHCenter) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_cb.png"; + + QTest::newRow("LC") << int(Qt::AlignLeft) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_lc.png"; + QTest::newRow("RC") << int(Qt::AlignRight) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_rc.png"; + QTest::newRow("CC") << int(Qt::AlignHCenter) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_cc.png"; +} + + +void tst_qdeclarativetext::alignments() +{ + QFETCH(int, hAlign); + QFETCH(int, vAlign); + QFETCH(QString, expectfile); + + QDeclarativeView *canvas = createView(SRCDIR "/data/alignments.qml"); + + canvas->show(); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + QTRY_COMPARE(QApplication::activeWindow(), static_cast(canvas)); + + QObject *ob = canvas->rootObject(); + QVERIFY(ob != 0); + ob->setProperty("horizontalAlignment",hAlign); + ob->setProperty("verticalAlignment",vAlign); + QTRY_COMPARE(ob->property("running").toBool(),false); + QImage actual(canvas->width(), canvas->height(), QImage::Format_RGB32); + actual.fill(qRgb(255,255,255)); + QPainter p(&actual); + canvas->render(&p); + + QImage expect(expectfile); + +#ifdef Q_OS_LINUX + // Font-specific, but not likely platform-specific, so only test on one platform + QCOMPARE(actual,expect); +#endif +} + //the alignment tests may be trivial o.oa void tst_qdeclarativetext::horizontalAlignment() { diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml b/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml new file mode 100644 index 0000000..6a98a4d --- /dev/null +++ b/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml @@ -0,0 +1,42 @@ +import Qt 4.7 + +Rectangle { + id: top + width: 70; height: 70; + + property alias horizontalAlignment: t.horizontalAlignment + property alias verticalAlignment: t.verticalAlignment + property alias wrapMode: t.wrapMode + property alias running: timer.running + property string txt: "Test" + + Rectangle { + anchors.centerIn: parent + width: 40 + height: 40 + color: "green" + + Text { + id: t + + anchors.fill: parent + font.pixelSize: 8 + horizontalAlignment: TextEdit.AlignRight + verticalAlignment: TextEdit.AlignBottom + wrapMode: TextEdit.WordWrap + text: top.txt + } + Timer { + id: timer + + interval: 1 + running: true + repeat: true + onTriggered: { + top.txt = top.txt + "
more " + top.txt.length; + if (top.txt.length > 50) + running = false + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png new file mode 100644 index 0000000..0e40444 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png new file mode 100644 index 0000000..a5c83a8 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png new file mode 100644 index 0000000..8177c20 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png new file mode 100644 index 0000000..c0e1774 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png new file mode 100644 index 0000000..d61aaf2 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png new file mode 100644 index 0000000..599f4c6 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png new file mode 100644 index 0000000..83ec990 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png new file mode 100644 index 0000000..53e30b7 Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png new file mode 100644 index 0000000..61a112f Binary files /dev/null and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index f7ba7a1..009d354 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -73,6 +73,8 @@ private slots: void width(); void wrap(); void textFormat(); + void alignments(); + void alignments_data(); // ### these tests may be trivial void hAlign(); @@ -297,6 +299,58 @@ void tst_qdeclarativetextedit::textFormat() } } +void tst_qdeclarativetextedit::alignments_data() +{ + QTest::addColumn("hAlign"); + QTest::addColumn("vAlign"); + QTest::addColumn("expectfile"); + + QTest::newRow("LT") << int(Qt::AlignLeft) << int(Qt::AlignTop) << SRCDIR "/data/alignments_lt.png"; + QTest::newRow("RT") << int(Qt::AlignRight) << int(Qt::AlignTop) << SRCDIR "/data/alignments_rt.png"; + QTest::newRow("CT") << int(Qt::AlignHCenter) << int(Qt::AlignTop) << SRCDIR "/data/alignments_ct.png"; + + QTest::newRow("LB") << int(Qt::AlignLeft) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_lb.png"; + QTest::newRow("RB") << int(Qt::AlignRight) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_rb.png"; + QTest::newRow("CB") << int(Qt::AlignHCenter) << int(Qt::AlignBottom) << SRCDIR "/data/alignments_cb.png"; + + QTest::newRow("LC") << int(Qt::AlignLeft) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_lc.png"; + QTest::newRow("RC") << int(Qt::AlignRight) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_rc.png"; + QTest::newRow("CC") << int(Qt::AlignHCenter) << int(Qt::AlignVCenter) << SRCDIR "/data/alignments_cc.png"; +} + + +void tst_qdeclarativetextedit::alignments() +{ + QFETCH(int, hAlign); + QFETCH(int, vAlign); + QFETCH(QString, expectfile); + + QDeclarativeView *canvas = createView(SRCDIR "/data/alignments.qml"); + + canvas->show(); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + QTRY_COMPARE(QApplication::activeWindow(), static_cast(canvas)); + + QObject *ob = canvas->rootObject(); + QVERIFY(ob != 0); + ob->setProperty("horizontalAlignment",hAlign); + ob->setProperty("verticalAlignment",vAlign); + QTRY_COMPARE(ob->property("running").toBool(),false); + QImage actual(canvas->width(), canvas->height(), QImage::Format_RGB32); + actual.fill(qRgb(255,255,255)); + QPainter p(&actual); + canvas->render(&p); + + QImage expect(expectfile); + +#ifdef Q_OS_LINUX + // Font-specific, but not likely platform-specific, so only test on one platform + QCOMPARE(actual,expect); +#endif +} + + //the alignment tests may be trivial o.oa void tst_qdeclarativetextedit::hAlign() { -- cgit v0.12 From ae3e6af047e952694637bf41b1afd986d10068c1 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 23 Jun 2010 10:01:37 +1000 Subject: Update screenshot --- doc/src/images/qml-xmlhttprequest-example.png | Bin 21311 -> 20934 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/src/images/qml-xmlhttprequest-example.png b/doc/src/images/qml-xmlhttprequest-example.png index 68e7d27..f585613 100644 Binary files a/doc/src/images/qml-xmlhttprequest-example.png and b/doc/src/images/qml-xmlhttprequest-example.png differ -- cgit v0.12 From b1c128415894686d61b3d568e5117ba96dd4c74e Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 23 Jun 2010 16:55:04 +1000 Subject: Use Pen with Qt::MiterJoin when drawing Rectangles with gradients Task-number: QTBUG-11624 --- src/declarative/graphicsitems/qdeclarativerectangle.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index 2756877..c49be46 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -446,6 +446,7 @@ void QDeclarativeRectangle::drawRect(QPainter &p) p.setRenderHint(QPainter::Antialiasing); if (d->pen && d->pen->isValid()) { QPen pn(QColor(d->pen->color()), d->pen->width()); + pn.setJoinStyle(Qt::MiterJoin); p.setPen(pn); } else { p.setPen(Qt::NoPen); -- cgit v0.12 From 19ee05c994af7d0c55ec9e4a44e7e485eafc8c66 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Wed, 23 Jun 2010 09:20:54 +0100 Subject: Updated UIDs for spectrum demo Resolving UID clash with other example apps Reviewed-by: Miikka Heikkinen --- demos/spectrum/3rdparty/fftreal/fftreal.pro | 2 +- demos/spectrum/app/app.pro | 2 +- demos/spectrum/spectrum.pro | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/demos/spectrum/3rdparty/fftreal/fftreal.pro b/demos/spectrum/3rdparty/fftreal/fftreal.pro index 8d9f46e..6801b42 100644 --- a/demos/spectrum/3rdparty/fftreal/fftreal.pro +++ b/demos/spectrum/3rdparty/fftreal/fftreal.pro @@ -29,7 +29,7 @@ DEFINES += FFTREAL_LIBRARY symbian { # Provide unique ID for the generated binary, required by Symbian OS - TARGET.UID3 = 0xA000E3FB + TARGET.UID3 = 0xA000E403 TARGET.CAPABILITY = UserEnvironment } else { macx { diff --git a/demos/spectrum/app/app.pro b/demos/spectrum/app/app.pro index db9a144..22ee3b1 100644 --- a/demos/spectrum/app/app.pro +++ b/demos/spectrum/app/app.pro @@ -48,7 +48,7 @@ symbian { TARGET.CAPABILITY = UserEnvironment # Provide unique ID for the generated binary, required by Symbian OS - TARGET.UID3 = 0xA000E3FA + TARGET.UID3 = 0xA000E402 } diff --git a/demos/spectrum/spectrum.pro b/demos/spectrum/spectrum.pro index a8f09de..12bdec1 100644 --- a/demos/spectrum/spectrum.pro +++ b/demos/spectrum/spectrum.pro @@ -21,7 +21,7 @@ symbian { include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) # UID for the SIS file - TARGET.UID3 = 0xA000E3FA + TARGET.UID3 = 0xA000E402 } sources.files = README.txt spectrum.pri spectrum.pro TODO.txt -- cgit v0.12 From 869623866464f3ac3a3f03c3e135f1101ad31c94 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Wed, 23 Jun 2010 09:20:54 +0100 Subject: Updated UIDs for spectrum demo Resolving UID clash with other example apps Reviewed-by: Miikka Heikkinen (cherry picked from commit 19ee05c994af7d0c55ec9e4a44e7e485eafc8c66) --- demos/spectrum/3rdparty/fftreal/fftreal.pro | 2 +- demos/spectrum/app/app.pro | 2 +- demos/spectrum/spectrum.pro | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/demos/spectrum/3rdparty/fftreal/fftreal.pro b/demos/spectrum/3rdparty/fftreal/fftreal.pro index 8d9f46e..6801b42 100644 --- a/demos/spectrum/3rdparty/fftreal/fftreal.pro +++ b/demos/spectrum/3rdparty/fftreal/fftreal.pro @@ -29,7 +29,7 @@ DEFINES += FFTREAL_LIBRARY symbian { # Provide unique ID for the generated binary, required by Symbian OS - TARGET.UID3 = 0xA000E3FB + TARGET.UID3 = 0xA000E403 TARGET.CAPABILITY = UserEnvironment } else { macx { diff --git a/demos/spectrum/app/app.pro b/demos/spectrum/app/app.pro index c4b0943..c15edf9 100644 --- a/demos/spectrum/app/app.pro +++ b/demos/spectrum/app/app.pro @@ -48,7 +48,7 @@ symbian { TARGET.CAPABILITY = UserEnvironment # Provide unique ID for the generated binary, required by Symbian OS - TARGET.UID3 = 0xA000E3FA + TARGET.UID3 = 0xA000E402 } diff --git a/demos/spectrum/spectrum.pro b/demos/spectrum/spectrum.pro index a8f09de..12bdec1 100644 --- a/demos/spectrum/spectrum.pro +++ b/demos/spectrum/spectrum.pro @@ -21,7 +21,7 @@ symbian { include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) # UID for the SIS file - TARGET.UID3 = 0xA000E3FA + TARGET.UID3 = 0xA000E402 } sources.files = README.txt spectrum.pri spectrum.pro TODO.txt -- cgit v0.12 From fb76a872e20bd0df8e7bbe9c039b7f20423c6f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 22 Jun 2010 13:24:26 +0200 Subject: Optimized sub-rect copying / painting of QPixmaps. Prevented downloading of the whole XImage by introducing new QPixmapData::toImage() overload taking a sub-rect. Also avoid an additional copy by simply taking ownership of the XImage data when the XImage format matches the QImage format. Reviewed-by: Trond --- src/gui/image/qpixmap_raster.cpp | 14 +++ src/gui/image/qpixmap_raster_p.h | 1 + src/gui/image/qpixmap_x11.cpp | 172 ++++++++++++++++++++----------- src/gui/image/qpixmap_x11_p.h | 8 ++ src/gui/image/qpixmapdata.cpp | 10 +- src/gui/image/qpixmapdata_p.h | 1 + src/gui/painting/qpaintengine_raster.cpp | 8 +- 7 files changed, 152 insertions(+), 62 deletions(-) diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index 13c03a1..13e95c7 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -289,6 +289,20 @@ QImage QRasterPixmapData::toImage() const return image; } +QImage QRasterPixmapData::toImage(const QRect &rect) const +{ + if (rect.isNull()) + return image; + + QRect clipped = rect.intersected(QRect(0, 0, w, h)); + if (d % 8 == 0) + return QImage(image.scanLine(clipped.y()) + clipped.x() * (d / 8), + clipped.width(), clipped.height(), + image.bytesPerLine(), image.format()); + else + return image.copy(clipped); +} + void QRasterPixmapData::setAlphaChannel(const QPixmap &alphaChannel) { image.setAlphaChannel(alphaChannel.toImage()); diff --git a/src/gui/image/qpixmap_raster_p.h b/src/gui/image/qpixmap_raster_p.h index d7e3f85..42ceeca 100644 --- a/src/gui/image/qpixmap_raster_p.h +++ b/src/gui/image/qpixmap_raster_p.h @@ -81,6 +81,7 @@ public: bool hasAlphaChannel() const; void setAlphaChannel(const QPixmap &alphaChannel); QImage toImage() const; + QImage toImage(const QRect &rect) const; QPaintEngine* paintEngine() const; QImage* buffer(); diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index e8dc5ae..604dbf5 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -1458,6 +1458,95 @@ int QX11PixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const } } +struct QXImageWrapper +{ + XImage *xi; +}; + +bool QX11PixmapData::canTakeQImageFromXImage(const QXImageWrapper &xiWrapper) const +{ + XImage *xi = xiWrapper.xi; + + // ARGB32_Premultiplied + if (picture && depth() == 32) + return true; + + Visual *visual = (Visual *)xinfo.visual(); + + // RGB32 + if (depth() == 24 && xi->bits_per_pixel == 32 && visual->red_mask == 0xff0000 + && visual->green_mask == 0xff00 && visual->blue_mask == 0xff) + return true; + + // RGB16 + if (depth() == 16 && xi->bits_per_pixel == 16 && visual->red_mask == 0xf800 + && visual->green_mask == 0x7e0 && visual->blue_mask == 0x1f) + return true; + + return false; +} + +QImage QX11PixmapData::takeQImageFromXImage(const QXImageWrapper &xiWrapper) const +{ + XImage *xi = xiWrapper.xi; + + QImage::Format format = QImage::Format_ARGB32_Premultiplied; + if (depth() == 24) + format = QImage::Format_RGB32; + else if (depth() == 16) + format = QImage::Format_RGB16; + + QImage image((uchar *)xi->data, xi->width, xi->height, xi->bytes_per_line, format); + // take ownership + image.data_ptr()->own_data = true; + xi->data = 0; + + // we may have to swap the byte order + if ((QSysInfo::ByteOrder == QSysInfo::LittleEndian && xi->byte_order == MSBFirst) + || (QSysInfo::ByteOrder == QSysInfo::BigEndian && xi->byte_order == LSBFirst)) + { + for (int i=0; i < image.height(); i++) { + if (depth() == 16) { + ushort *p = (ushort*)image.scanLine(i); + ushort *end = p + image.width(); + while (p < end) { + *p = ((*p << 8) & 0xff00) | ((*p >> 8) & 0x00ff); + p++; + } + } else { + uint *p = (uint*)image.scanLine(i); + uint *end = p + image.width(); + while (p < end) { + *p = ((*p << 24) & 0xff000000) | ((*p << 8) & 0x00ff0000) + | ((*p >> 8) & 0x0000ff00) | ((*p >> 24) & 0x000000ff); + p++; + } + } + } + } + + XDestroyImage(xi); + return image; +} + +QImage QX11PixmapData::toImage(const QRect &rect) const +{ + QXImageWrapper xiWrapper; + xiWrapper.xi = XGetImage(X11->display, hd, rect.x(), rect.y(), rect.width(), rect.height(), + AllPlanes, (depth() == 1) ? XYPixmap : ZPixmap); + + Q_CHECK_PTR(xiWrapper.xi); + if (!xiWrapper.xi) + return QImage(); + + if (canTakeQImageFromXImage(xiWrapper)) + return takeQImageFromXImage(xiWrapper); + + QImage image = toImage(xiWrapper, rect); + qSafeXDestroyImage(xiWrapper.xi); + return image; +} + /*! Converts the pixmap to a QImage. Returns a null image if the conversion fails. @@ -1475,6 +1564,13 @@ int QX11PixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const QImage QX11PixmapData::toImage() const { + return toImage(QRect(0, 0, w, h)); +} + +QImage QX11PixmapData::toImage(const QXImageWrapper &xiWrapper, const QRect &rect) const +{ + XImage *xi = xiWrapper.xi; + int d = depth(); Visual *visual = (Visual *)xinfo.visual(); bool trucol = (visual->c_class >= TrueColor) && d > 1; @@ -1492,59 +1588,21 @@ QImage QX11PixmapData::toImage() const format = QImage::Format_RGB32; } - XImage *xi = XGetImage(X11->display, hd, 0, 0, w, h, AllPlanes, - (d == 1) ? XYPixmap : ZPixmap); - - Q_CHECK_PTR(xi); - if (!xi) - return QImage(); - - if (picture && depth() == 32) { - QImage image(w, h, QImage::Format_ARGB32_Premultiplied); - memcpy(image.bits(), xi->data, xi->bytes_per_line * xi->height); - - // we may have to swap the byte order - if ((QSysInfo::ByteOrder == QSysInfo::LittleEndian && xi->byte_order == MSBFirst) - || (QSysInfo::ByteOrder == QSysInfo::BigEndian && xi->byte_order == LSBFirst)) - { - for (int i=0; i < image.height(); i++) { - uint *p = (uint*)image.scanLine(i); - uint *end = p + image.width(); - if ((xi->byte_order == LSBFirst && QSysInfo::ByteOrder == QSysInfo::BigEndian) - || (xi->byte_order == MSBFirst && QSysInfo::ByteOrder == QSysInfo::LittleEndian)) { - while (p < end) { - *p = ((*p << 24) & 0xff000000) | ((*p << 8) & 0x00ff0000) - | ((*p >> 8) & 0x0000ff00) | ((*p >> 24) & 0x000000ff); - p++; - } - } else if (xi->byte_order == MSBFirst && QSysInfo::ByteOrder == QSysInfo::BigEndian) { - while (p < end) { - *p = ((*p << 16) & 0x00ff0000) | ((*p >> 16) & 0x000000ff) - | ((*p ) & 0xff00ff00); - p++; - } - } - } - } - - // throw away image data - qSafeXDestroyImage(xi); - - return image; - } - if (d == 1 && xi->bitmap_bit_order == LSBFirst) format = QImage::Format_MonoLSB; if (x11_mask && format == QImage::Format_RGB32) format = QImage::Format_ARGB32; - QImage image(w, h, format); + QImage image(xi->width, xi->height, format); if (image.isNull()) // could not create image return image; QImage alpha; if (x11_mask) { - alpha = mask().toImage(); + if (rect.contains(QRect(0, 0, w, h))) + alpha = mask().toImage(); + else + alpha = mask().toImage().copy(rect); } bool ale = alpha.format() == QImage::Format_MonoLSB; @@ -1587,11 +1645,11 @@ QImage QX11PixmapData::toImage() const if (bppc > 8 && xi->byte_order == LSBFirst) bppc++; - for (int y = 0; y < h; ++y) { + for (int y = 0; y < xi->height; ++y) { uchar* asrc = x11_mask ? alpha.scanLine(y) : 0; dst = (QRgb *)image.scanLine(y); src = (uchar *)xi->data + xi->bytes_per_line*y; - for (int x = 0; x < w; x++) { + for (int x = 0; x < xi->width; x++) { switch (bppc) { case 8: pixel = *src++; @@ -1621,8 +1679,8 @@ QImage QX11PixmapData::toImage() const src += 4; break; default: // should not really happen - x = w; // leave loop - y = h; + x = xi->width; // leave loop + y = xi->height; pixel = 0; // eliminate compiler warning qWarning("QPixmap::convertToImage: Invalid depth %d", bppc); } @@ -1660,7 +1718,7 @@ QImage QX11PixmapData::toImage() const } else if (xi->bits_per_pixel == d) { // compatible depth char *xidata = xi->data; // copy each scanline int bpl = qMin(image.bytesPerLine(),xi->bytes_per_line); - for (int y=0; yheight; y++) { memcpy(image.scanLine(y), xidata, bpl); xidata += xi->bytes_per_line; } @@ -1686,17 +1744,17 @@ QImage QX11PixmapData::toImage() const bpl = image.bytesPerLine(); if (x11_mask) { // which pixels are used? - for (int i = 0; i < h; i++) { + for (int i = 0; i < xi->height; i++) { uchar* asrc = alpha.scanLine(i); p = image.scanLine(i); if (ale) { - for (int x = 0; x < w; x++) { + for (int x = 0; x < xi->width; x++) { if (asrc[x >> 3] & (1 << (x & 7))) use[*p] = 1; ++p; } } else { - for (int x = 0; x < w; x++) { + for (int x = 0; x < xi->width; x++) { if (asrc[x >> 3] & (0x80 >> (x & 7))) use[*p] = 1; ++p; @@ -1704,7 +1762,7 @@ QImage QX11PixmapData::toImage() const } } } else { - for (int i = 0; i < h; i++) { + for (int i = 0; i < xi->height; i++) { p = image.scanLine(i); end = p + bpl; while (p < end) @@ -1716,7 +1774,7 @@ QImage QX11PixmapData::toImage() const if (use[i]) pix[i] = ncols++; } - for (int i = 0; i < h; i++) { // translate pixels + for (int i = 0; i < xi->height; i++) { // translate pixels p = image.scanLine(i); end = p + bpl; while (p < end) { @@ -1736,17 +1794,17 @@ QImage QX11PixmapData::toImage() const // use first pixel in image (as good as any). trans = image.scanLine(0)[0]; } - for (int i = 0; i < h; i++) { + for (int i = 0; i < xi->height; i++) { uchar* asrc = alpha.scanLine(i); p = image.scanLine(i); if (ale) { - for (int x = 0; x < w; x++) { + for (int x = 0; x < xi->width; x++) { if (!(asrc[x >> 3] & (1 << (x & 7)))) *p = trans; ++p; } } else { - for (int x = 0; x < w; x++) { + for (int x = 0; x < xi->width; x++) { if (!(asrc[x >> 3] & (1 << (7 -(x & 7))))) *p = trans; ++p; @@ -1764,8 +1822,6 @@ QImage QX11PixmapData::toImage() const } } - qSafeXDestroyImage(xi); - return image; } diff --git a/src/gui/image/qpixmap_x11_p.h b/src/gui/image/qpixmap_x11_p.h index 7575838..821fb69 100644 --- a/src/gui/image/qpixmap_x11_p.h +++ b/src/gui/image/qpixmap_x11_p.h @@ -62,6 +62,8 @@ QT_BEGIN_NAMESPACE class QX11PaintEngine; +struct QXImageWrapper; + class Q_GUI_EXPORT QX11PixmapData : public QPixmapData { public: @@ -87,6 +89,7 @@ public: QPixmap transformed(const QTransform &transform, Qt::TransformationMode mode) const; QImage toImage() const; + QImage toImage(const QRect &rect) const; QPaintEngine* paintEngine() const; Qt::HANDLE handle() const { return hd; } @@ -116,10 +119,15 @@ private: void release(); + QImage toImage(const QXImageWrapper &xi, const QRect &rect) const; + QBitmap mask_to_bitmap(int screen) const; static Qt::HANDLE bitmap_to_mask(const QBitmap &, int screen); void bitmapFromImage(const QImage &image); + bool canTakeQImageFromXImage(const QXImageWrapper &xi) const; + QImage takeQImageFromXImage(const QXImageWrapper &xi) const; + Qt::HANDLE hd; enum Flag { diff --git a/src/gui/image/qpixmapdata.cpp b/src/gui/image/qpixmapdata.cpp index 31ca909..345e3cf 100644 --- a/src/gui/image/qpixmapdata.cpp +++ b/src/gui/image/qpixmapdata.cpp @@ -146,7 +146,7 @@ bool QPixmapData::fromData(const uchar *buf, uint len, const char *format, Qt::I void QPixmapData::copy(const QPixmapData *data, const QRect &rect) { - fromImage(data->toImage().copy(rect), Qt::NoOpaqueDetection); + fromImage(data->toImage(rect), Qt::NoOpaqueDetection); } bool QPixmapData::scroll(int dx, int dy, const QRect &rect) @@ -255,6 +255,14 @@ void QPixmapData::setSerialNumber(int serNo) ser_no = serNo; } +QImage QPixmapData::toImage(const QRect &rect) const +{ + if (rect.contains(QRect(0, 0, w, h))) + return toImage(); + else + return toImage().copy(rect); +} + QImage* QPixmapData::buffer() { return 0; diff --git a/src/gui/image/qpixmapdata_p.h b/src/gui/image/qpixmapdata_p.h index 60ed26a..9a1505a 100644 --- a/src/gui/image/qpixmapdata_p.h +++ b/src/gui/image/qpixmapdata_p.h @@ -102,6 +102,7 @@ public: virtual void setAlphaChannel(const QPixmap &alphaChannel); virtual QPixmap alphaChannel() const; virtual QImage toImage() const = 0; + virtual QImage toImage(const QRect &rect) const; virtual QPaintEngine* paintEngine() const = 0; inline int serialNumber() const { return ser_no; } diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 94e5cbc..84b36c7 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -2419,7 +2419,9 @@ void QRasterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap, cons drawImage(r, image, sr); } } else { - const QImage image = pixmap.toImage(); + QRect clippedSource = sr.toAlignedRect().intersected(pixmap.rect()); + const QImage image = pd->toImage(clippedSource); + QRectF translatedSource = sr.translated(-clippedSource.topLeft()); if (image.depth() == 1) { Q_D(QRasterPaintEngine); QRasterPaintEngineState *s = state(); @@ -2430,10 +2432,10 @@ void QRasterPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap, cons drawBitmap(r.topLeft() + QPointF(s->matrix.dx(), s->matrix.dy()), image, &s->penData); return; } else { - drawImage(r, d->rasterBuffer->colorizeBitmap(image, s->pen.color()), sr); + drawImage(r, d->rasterBuffer->colorizeBitmap(image, s->pen.color()), translatedSource); } } else { - drawImage(r, image, sr); + drawImage(r, image, translatedSource); } } } -- cgit v0.12 From 898b7599a71ab14b54af80defe8c701c34c85907 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Wed, 23 Jun 2010 12:00:59 +0300 Subject: Fix "missing store_build" errors Create a dummy store_build target in projects that do not deploy anything when building for symbian-abld. Task-number: QTBUG-11656 Reviewed-by: Janne Koskinen (cherry picked from commit 4f6a7f7e480dc0c7fada475c1ab04cc3d082e490) --- mkspecs/features/sis_targets.prf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkspecs/features/sis_targets.prf b/mkspecs/features/sis_targets.prf index b149a22..349a027 100644 --- a/mkspecs/features/sis_targets.prf +++ b/mkspecs/features/sis_targets.prf @@ -145,6 +145,12 @@ equals(GENERATE_SIS_TARGETS, true) { sis_target.commands = sis_target.target = sis QMAKE_EXTRA_TARGETS += sis_target + + symbian-abld { + # Create dummy store_build target to avoid errors from .mk callbacks during build + store_build_target.target = store_build + QMAKE_EXTRA_TARGETS += store_build_target + } } QMAKE_DISTCLEAN += $${sis_destdir}$${TARGET}.sis -- cgit v0.12 From 50846a87e82fa94753bd369d03c9ba00108a12de Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Wed, 23 Jun 2010 12:20:29 +0100 Subject: Allow TLW translucency on Symbian without Qt::FramelessWindowHint This flag is Windows-specific, and should not be required on other platforms. Reviewed-by: Jason Barron --- src/gui/kernel/qwidget_s60.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 86b858d..46f3254 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -738,9 +738,6 @@ void QWidgetPrivate::s60UpdateIsOpaque() if (!q->testAttribute(Qt::WA_WState_Created) || !q->testAttribute(Qt::WA_TranslucentBackground)) return; - if ((data.window_flags & Qt::FramelessWindowHint) == 0) - return; - RWindow *const window = static_cast(q->effectiveWinId()->DrawableWindow()); #ifdef Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE -- cgit v0.12 From 0c0eac000ecbe8c0bdcb8c6d914854b1a09a720b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 23 Jun 2010 13:33:20 +0200 Subject: Fixed QPixmap::toImage() bug introduced in fb76a872e20bd. The alpha channel we get from XGetImage might not be saturated for opaque pixmaps. Reviewed-by: Trond --- src/gui/image/qpixmap_x11.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index 604dbf5..3d9c363 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -1525,6 +1525,16 @@ QImage QX11PixmapData::takeQImageFromXImage(const QXImageWrapper &xiWrapper) con } } + // fix-up alpha channel + if (format == QImage::Format_RGB32) { + QRgb *p = (QRgb *)image.bits(); + for (int y = 0; y < xi->height; ++y) { + for (int x = 0; x < xi->width; ++x) + p[x] |= 0xff000000; + p += xi->bytes_per_line / 4; + } + } + XDestroyImage(xi); return image; } -- cgit v0.12 From 5817f04060f5a545a71a1f9e9dfa167f92a4ab93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 23 Jun 2010 13:55:20 +0200 Subject: Fixed missing copy of raster pixmap data after change fb76a872e20bd. It's expected that copy actually does a deep copy of the image data. Because QRasterPixmapData::fromImage() will just use the source image as is in this case we need to do a deep copy of the QImage. Reviewed-by: Trond --- src/gui/image/qpixmap_raster.cpp | 5 +++++ src/gui/image/qpixmap_raster_p.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index 13e95c7..e188745 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -155,6 +155,11 @@ void QRasterPixmapData::fromImage(const QImage &sourceImage, // from qwindowsurface.cpp extern void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset); +void QRasterPixmapData::copy(const QPixmapData *data, const QRect &rect) +{ + fromImage(data->toImage(rect).copy(), Qt::NoOpaqueDetection); +} + bool QRasterPixmapData::scroll(int dx, int dy, const QRect &rect) { if (!image.isNull()) diff --git a/src/gui/image/qpixmap_raster_p.h b/src/gui/image/qpixmap_raster_p.h index 42ceeca..a46e054 100644 --- a/src/gui/image/qpixmap_raster_p.h +++ b/src/gui/image/qpixmap_raster_p.h @@ -75,6 +75,7 @@ public: bool fromData(const uchar *buffer, uint len, const char *format, Qt::ImageConversionFlags flags); void fromImage(const QImage &image, Qt::ImageConversionFlags flags); + void copy(const QPixmapData *data, const QRect &rect); bool scroll(int dx, int dy, const QRect &rect); void fill(const QColor &color); void setMask(const QBitmap &mask); -- 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 98d9083f87feb3d78af509db43685a148aa0766e Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 22 Jun 2010 18:18:45 +0200 Subject: Add a SSE2 version of comp_func_SourceOver() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement a version of comp_func_SourceOver() with SSE2. This gives a performance boost of 11% on some WebKit animations. Two new macros were added to simplify the implementation of the different blending primitives: BLEND_SOURCE_OVER_ARGB32_SSE2() and BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2() Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper.cpp | 7 +- src/gui/painting/qdrawhelper_sse2.cpp | 170 ++++++++++++++++++++++------------ 2 files changed, 116 insertions(+), 61 deletions(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index bfa1136..d088499 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7817,6 +7817,12 @@ void qInitDrawhelperAsm() #ifdef QT_HAVE_SSE2 if (features & SSE2) { + extern void comp_func_SourceOver_sse2(uint *destPixels, + const uint *srcPixels, + int length, + uint const_alpha); + functionForModeAsm[0] = comp_func_SourceOver_sse2; + extern void qt_blend_rgb32_on_rgb32_sse2(uchar *destPixels, int dbpl, const uchar *srcPixels, int sbpl, int w, int h, @@ -7826,7 +7832,6 @@ void qInitDrawhelperAsm() int w, int h, int const_alpha); - qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_sse2; qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_sse2; qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_sse2; diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index 6ac64d3..b650aac 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -126,6 +126,93 @@ QT_BEGIN_NAMESPACE result = _mm_or_si128(finalAG, finalRB); \ } +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +//const __m128i alphaMask = _mm_set1_epi32(0xff000000); +// +// The computation being done is: +// result = s + d * (1-alpha) +// with shortcuts if fully opaque or fully transparent. +#define BLEND_SOURCE_OVER_ARGB32_SSE2(dst, src, length, nullVector, half, one, colorMask, alphaMask) { \ + int x = 0; \ + for (; x < length-3; x += 4) { \ + const __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); \ + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ + /* all opaque */ \ + _mm_storeu_si128((__m128i *)&dst[x], srcVector); \ + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ + /* not fully transparent */ \ + /* extract the alpha channel on 2 x 16 bits */ \ + /* so we have room for the multiplication */ \ + /* each 32 bits will be in the form 0x00AA00AA */ \ + /* with A being the 1 - alpha */ \ + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + \ + const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + \ + /* result = s + d * (1-alpha) */\ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_storeu_si128((__m128i *)&dst[x], result); \ + } \ + } \ + for (; x < length; ++x) { \ + uint s = src[x]; \ + if (s >= 0xff000000) \ + dst[x] = s; \ + else if (s != 0) \ + dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); \ + } \ +} + +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +// +// The computation being done is: +// dest = (s + d * sia) * ca + d * cia +// = s * ca + d * (sia * ca + cia) +// = s * ca + d * (1 - sa*ca) +#define BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, length, nullVector, half, one, colorMask, constAlphaVector) \ +{ \ + int x = 0; \ + for (; x < length-3; x += 4) { \ + __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVector, nullVector)) != 0xffff) { \ + BYTE_MUL_SSE2(srcVector, srcVector, constAlphaVector, colorMask, half); \ +\ + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + \ + const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + \ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_storeu_si128((__m128i *)&dst[x], result); \ + } \ + } \ + for (; x < length; ++x) { \ + quint32 s = src[x]; \ + if (s != 0) { \ + s = BYTE_MUL(s, const_alpha); \ + dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); \ + } \ + } \ +} + void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, const uchar *srcPixels, int sbpl, int w, int h, @@ -140,41 +227,7 @@ void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, const __m128i one = _mm_set1_epi16(0xff); const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); for (int y = 0; y < h; ++y) { - int x = 0; - for (; x < w-3; x += 4) { - const __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); - const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); - if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { - // all opaque - _mm_storeu_si128((__m128i *)&dst[x], srcVector); - } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { - // not fully transparent - // result = s + d * (1-alpha) - - // extract the alpha channel on 2 x 16 bits - // so we have room for the multiplication - // each 32 bits will be in the form 0x00AA00AA - // with A being the 1 - alpha - __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); - alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); - alphaChannel = _mm_sub_epi16(one, alphaChannel); - - const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); - __m128i destMultipliedByOneMinusAlpha; - BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); - - // result = s + d * (1-alpha) - const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); - _mm_storeu_si128((__m128i *)&dst[x], result); - } - } - for (; x= 0xff000000) - dst[x] = s; - else if (s != 0) - dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); - } + BLEND_SOURCE_OVER_ARGB32_SSE2(dst, src, w, nullVector, half, one, colorMask, alphaMask); dst = (quint32 *)(((uchar *) dst) + dbpl); src = (const quint32 *)(((const uchar *) src) + sbpl); } @@ -189,31 +242,7 @@ void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); const __m128i constAlphaVector = _mm_set1_epi16(const_alpha); for (int y = 0; y < h; ++y) { - int x = 0; - for (; x < w-3; x += 4) { - __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); - if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVector, nullVector)) != 0xffff) { - BYTE_MUL_SSE2(srcVector, srcVector, constAlphaVector, colorMask, half); - - __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); - alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); - alphaChannel = _mm_sub_epi16(one, alphaChannel); - - const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); - __m128i destMultipliedByOneMinusAlpha; - BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); - - const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); - _mm_storeu_si128((__m128i *)&dst[x], result); - } - } - for (; x 0); // if const_alpha == 0, this should never be called + Q_ASSERT(const_alpha < 256); + + const quint32 *src = (const quint32 *) srcPixels; + quint32 *dst = (uint *) destPixels; + + const __m128i nullVector = _mm_set1_epi32(0); + const __m128i half = _mm_set1_epi16(0x80); + const __m128i one = _mm_set1_epi16(0xff); + const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); + if (const_alpha == 255) { + const __m128i alphaMask = _mm_set1_epi32(0xff000000); + BLEND_SOURCE_OVER_ARGB32_SSE2(dst, src, length, nullVector, half, one, colorMask, alphaMask); + } else { + const __m128i constAlphaVector = _mm_set1_epi16(const_alpha); + BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, length, nullVector, half, one, colorMask, constAlphaVector); + } +} + void qt_memfill32_sse2(quint32 *dest, quint32 value, int count) { if (count < 7) { -- cgit v0.12 From a922a304ae9115d04f3bbcb3bd13c8e374bb16f1 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 22 Jun 2010 22:06:02 +0200 Subject: Add a SSE2 implementation of comp_func_solid_SourceOver() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This function is used quite a lot by WebKit animations, the SSE2 implementation is twice as fast in those uses cases. Reviewed-by: Andreas Kling Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper.cpp | 5 ++++- src/gui/painting/qdrawhelper_sse2.cpp | 30 +++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index d088499..f08c090 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7817,11 +7817,14 @@ void qInitDrawhelperAsm() #ifdef QT_HAVE_SSE2 if (features & SSE2) { - extern void comp_func_SourceOver_sse2(uint *destPixels, + extern void QT_FASTCALL comp_func_SourceOver_sse2(uint *destPixels, const uint *srcPixels, int length, uint const_alpha); + extern void QT_FASTCALL comp_func_solid_SourceOver_sse2(uint *destPixels, int length, uint color, uint const_alpha); + functionForModeAsm[0] = comp_func_SourceOver_sse2; + functionForModeSolidAsm[0] = comp_func_solid_SourceOver_sse2; extern void qt_blend_rgb32_on_rgb32_sse2(uchar *destPixels, int dbpl, const uchar *srcPixels, int sbpl, diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index b650aac..7d542d6 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -297,7 +297,7 @@ void qt_blend_rgb32_on_rgb32_sse2(uchar *destPixels, int dbpl, } } -void comp_func_SourceOver_sse2(uint *destPixels, const uint *srcPixels, int length, uint const_alpha) +void QT_FASTCALL comp_func_SourceOver_sse2(uint *destPixels, const uint *srcPixels, int length, uint const_alpha) { Q_ASSERT(const_alpha > 0); // if const_alpha == 0, this should never be called Q_ASSERT(const_alpha < 256); @@ -362,6 +362,34 @@ void qt_memfill32_sse2(quint32 *dest, quint32 value, int count) } } +void QT_FASTCALL comp_func_solid_SourceOver_sse2(uint *destPixels, int length, uint color, uint const_alpha) +{ + if ((const_alpha & qAlpha(color)) == 255) { + qt_memfill32_sse2(destPixels, length, color); + } else { + if (const_alpha != 255) + color = BYTE_MUL(color, const_alpha); + + const quint32 minusAlphaOfColor = qAlpha(~color); + int x = 0; + + quint32 *dst = (uint *) destPixels; + const __m128i colorVector = _mm_set1_epi32(color); + const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); + const __m128i half = _mm_set1_epi16(0x80); + const __m128i minusAlphaOfColorVector = _mm_set1_epi16(minusAlphaOfColor); + + for (; x < length-3; x += 4) { + __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); + BYTE_MUL_SSE2(dstVector, dstVector, minusAlphaOfColorVector, colorMask, half); + dstVector = _mm_add_epi8(colorVector, dstVector); + _mm_storeu_si128((__m128i *)&dst[x], dstVector); + } + for (;x < length; ++x) + destPixels[x] = color + BYTE_MUL(destPixels[x], minusAlphaOfColor); + } +} + void qt_memfill16_sse2(quint16 *dest, quint16 value, int count) { if (count < 3) { -- cgit v0.12 From 86f375e91c2b1162a75f86c9b8f041ae1d4747de Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 22 Jun 2010 23:48:54 +0200 Subject: Fix the casts of qdrawhelper_sse2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I did erroneous cast by mistake, the code should ensure the pointer are on 32 bits integers. Reviewed-by: Andreas Kling Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper_sse2.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index 7d542d6..e2a69ec 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -219,7 +219,7 @@ void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, int const_alpha) { const quint32 *src = (const quint32 *) srcPixels; - quint32 *dst = (uint *) destPixels; + quint32 *dst = (quint32 *) destPixels; if (const_alpha == 256) { const __m128i alphaMask = _mm_set1_epi32(0xff000000); const __m128i nullVector = _mm_set1_epi32(0); @@ -261,7 +261,7 @@ void qt_blend_rgb32_on_rgb32_sse2(uchar *destPixels, int dbpl, int const_alpha) { const quint32 *src = (const quint32 *) srcPixels; - quint32 *dst = (uint *) destPixels; + quint32 *dst = (quint32 *) destPixels; if (const_alpha != 256) { if (const_alpha != 0) { const __m128i nullVector = _mm_set1_epi32(0); @@ -303,7 +303,7 @@ void QT_FASTCALL comp_func_SourceOver_sse2(uint *destPixels, const uint *srcPixe Q_ASSERT(const_alpha < 256); const quint32 *src = (const quint32 *) srcPixels; - quint32 *dst = (uint *) destPixels; + quint32 *dst = (quint32 *) destPixels; const __m128i nullVector = _mm_set1_epi32(0); const __m128i half = _mm_set1_epi16(0x80); @@ -373,7 +373,7 @@ void QT_FASTCALL comp_func_solid_SourceOver_sse2(uint *destPixels, int length, u const quint32 minusAlphaOfColor = qAlpha(~color); int x = 0; - quint32 *dst = (uint *) destPixels; + quint32 *dst = (quint32 *) destPixels; const __m128i colorVector = _mm_set1_epi32(color); const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); const __m128i half = _mm_set1_epi16(0x80); -- cgit v0.12 From 5cfa764466be6ec2b987e0694b99f1d343d55048 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 23 Jun 2010 22:22:56 +0200 Subject: Add an implementation of comp_func_solid_SourceOver_neon() with Neon. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The function comp_func_solid_SourceOver_neon() is use extensively by WebKit via the calls to fillRect() of QPainter(). Implementing the function with Neon provides some performance improvement (around 175% of the previous speed). Reviewed-by: Samuel Rødal --- src/gui/painting/qdrawhelper.cpp | 1 + src/gui/painting/qdrawhelper_neon.cpp | 43 +++++++++++++++++++++++++++++++++++ src/gui/painting/qdrawhelper_neon_p.h | 2 ++ 3 files changed, 46 insertions(+) diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index f08c090..5727b3c 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7898,6 +7898,7 @@ void qInitDrawhelperAsm() qDrawHelper[QImage::Format_RGB16].alphamapBlit = qt_alphamapblit_quint16_neon; functionForMode_C[QPainter::CompositionMode_SourceOver] = qt_blend_argb32_on_argb32_scanline_neon; + functionForModeSolid_C[QPainter::CompositionMode_SourceOver] = comp_func_solid_SourceOver_neon; destFetchProc[QImage::Format_RGB16] = qt_destFetchRGB16_neon; destStoreProc[QImage::Format_RGB16] = qt_destStoreRGB16_neon; } diff --git a/src/gui/painting/qdrawhelper_neon.cpp b/src/gui/painting/qdrawhelper_neon.cpp index ee5f24a..3ce90d2 100644 --- a/src/gui/painting/qdrawhelper_neon.cpp +++ b/src/gui/painting/qdrawhelper_neon.cpp @@ -579,6 +579,49 @@ void QT_FASTCALL qt_destStoreRGB16_neon(QRasterBuffer *rasterBuffer, int x, int } } +void QT_FASTCALL comp_func_solid_SourceOver_neon(uint *destPixels, int length, uint color, uint const_alpha) +{ + if ((const_alpha & qAlpha(color)) == 255) { + QT_MEMFILL_UINT(destPixels, length, color); + } else { + if (const_alpha != 255) + color = BYTE_MUL(color, const_alpha); + + const quint32 minusAlphaOfColor = qAlpha(~color); + int x = 0; + + uint32_t *dst = (uint32_t *) destPixels; + const uint32x4_t colorVector = vdupq_n_u32(color); + uint16x8_t half = vdupq_n_u16(0x80); + const uint16x8_t minusAlphaOfColorVector = vdupq_n_u16(minusAlphaOfColor); + + for (; x < length-3; x += 4) { + uint32x4_t dstVector = vld1q_u32(&dst[x]); + + const uint8x16_t dst8 = vreinterpretq_u8_u32(dstVector); + + const uint8x8_t dst8_low = vget_low_u8(dst8); + const uint8x8_t dst8_high = vget_high_u8(dst8); + + const uint16x8_t dst16_low = vmovl_u8(dst8_low); + const uint16x8_t dst16_high = vmovl_u8(dst8_high); + + const uint16x8_t result16_low = qvbyte_mul_u16(dst16_low, minusAlphaOfColorVector, half); + const uint16x8_t result16_high = qvbyte_mul_u16(dst16_high, minusAlphaOfColorVector, half); + + const uint32x2_t result32_low = vreinterpret_u32_u8(vmovn_u16(result16_low)); + const uint32x2_t result32_high = vreinterpret_u32_u8(vmovn_u16(result16_high)); + + uint32x4_t blendedPixels = vcombine_u32(result32_low, result32_high); + uint32x4_t colorPlusBlendedPixels = vaddq_u32(colorVector, blendedPixels); + vst1q_u32(&dst[x], colorPlusBlendedPixels); + } + + for (;x < length; ++x) + destPixels[x] = color + BYTE_MUL(destPixels[x], minusAlphaOfColor); + } +} + QT_END_NAMESPACE #endif // QT_HAVE_NEON diff --git a/src/gui/painting/qdrawhelper_neon_p.h b/src/gui/painting/qdrawhelper_neon_p.h index d6a4509..c054a1e 100644 --- a/src/gui/painting/qdrawhelper_neon_p.h +++ b/src/gui/painting/qdrawhelper_neon_p.h @@ -127,6 +127,8 @@ uint * QT_FASTCALL qt_destFetchRGB16_neon(uint *buffer, void QT_FASTCALL qt_destStoreRGB16_neon(QRasterBuffer *rasterBuffer, int x, int y, const uint *buffer, int length); +void QT_FASTCALL comp_func_solid_SourceOver_neon(uint *destPixels, int length, uint color, uint const_alpha); + #endif // QT_HAVE_NEON QT_END_NAMESPACE -- cgit v0.12 From 79c2f9d676d782212fb17f9158604e8158c47a22 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 24 Jun 2010 09:04:45 +1000 Subject: Fix unstable qdeclarativeviewer tests --- tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index f30f758..1ea2a95 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -261,7 +261,7 @@ void tst_QDeclarativeViewer::resizing() QCOMPARE(rootItem->width(), 150.0); QCOMPARE(rootItem->height(), 200.0); - QCOMPARE(viewer->view()->size(), QSize(150, 200)); + QTRY_COMPARE(viewer->view()->size(), QSize(150, 200)); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(150, 200)); QCOMPARE(viewer->size(), QSize(150, 200+viewer->menuBar()->height())); @@ -279,7 +279,7 @@ void tst_QDeclarativeViewer::resizing() QTRY_COMPARE(rootItem->width(), 250.0); QTRY_COMPARE(rootItem->height(), 350.0-viewer->menuBar()->height()); - QCOMPARE(viewer->view()->size(), QSize(250, 350-viewer->menuBar()->height())); + QTRY_COMPARE(viewer->view()->size(), QSize(250, 350-viewer->menuBar()->height())); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(250, 350-viewer->menuBar()->height())); QCOMPARE(viewer->size(), QSize(250, 350)); -- cgit v0.12 From 168abf1f3165f0a6d83f747c46f3d3241b1a405f Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 24 Jun 2010 09:27:08 +1000 Subject: doc: note that calling methods before component completion may have no effect So use Component.onCompleted: --- src/declarative/graphicsitems/qdeclarativegridview.cpp | 18 ++++++++++++++++++ src/declarative/graphicsitems/qdeclarativelistview.cpp | 14 ++++++++++++++ src/declarative/graphicsitems/qdeclarativepathview.cpp | 4 ++++ 3 files changed, 36 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 8e53237..14980a8 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -1919,6 +1919,8 @@ void QDeclarativeGridView::keyPressEvent(QKeyEvent *event) Move the currentIndex up one item in the view. The current index will wrap if keyNavigationWraps is true and it is currently at the end. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativeGridView::moveCurrentIndexUp() { @@ -1942,6 +1944,8 @@ void QDeclarativeGridView::moveCurrentIndexUp() Move the currentIndex down one item in the view. The current index will wrap if keyNavigationWraps is true and it is currently at the end. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativeGridView::moveCurrentIndexDown() { @@ -1965,6 +1969,8 @@ void QDeclarativeGridView::moveCurrentIndexDown() Move the currentIndex left one item in the view. The current index will wrap if keyNavigationWraps is true and it is currently at the end. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativeGridView::moveCurrentIndexLeft() { @@ -1988,6 +1994,8 @@ void QDeclarativeGridView::moveCurrentIndexLeft() Move the currentIndex right one item in the view. The current index will wrap if keyNavigationWraps is true and it is currently at the end. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativeGridView::moveCurrentIndexRight() { @@ -2028,6 +2036,14 @@ void QDeclarativeGridView::moveCurrentIndexRight() at a particular index. This is unreliable since removing items from the start of the view does not cause all other items to be repositioned. The correct way to bring an item into view is with \c positionViewAtIndex. + + \bold Note: methods should only be called after the Component has completed. To position + the view at startup, this method should be called by Component.onCompleted. For + example, to position the view at the end: + + \code + Component.onCompleted: positionViewAtIndex(count - 1, GridView.Beginning) + \endcode */ void QDeclarativeGridView::positionViewAtIndex(int index, int mode) { @@ -2097,6 +2113,8 @@ void QDeclarativeGridView::positionViewAtIndex(int index, int mode) If the item is outside the visible area, -1 is returned, regardless of whether an item will exist at that point when scrolled into view. + + \bold Note: methods should only be called after the Component has completed. */ int QDeclarativeGridView::indexAt(int x, int y) const { diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 35e6bab..35794c2 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -2386,6 +2386,8 @@ void QDeclarativeListView::keyPressEvent(QKeyEvent *event) Increments the current index. The current index will wrap if keyNavigationWraps is true and it is currently at the end. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativeListView::incrementCurrentIndex() { @@ -2403,6 +2405,8 @@ void QDeclarativeListView::incrementCurrentIndex() Decrements the current index. The current index will wrap if keyNavigationWraps is true and it is currently at the beginning. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativeListView::decrementCurrentIndex() { @@ -2439,6 +2443,14 @@ void QDeclarativeListView::decrementCurrentIndex() of the list does not cause all other items to be repositioned, and because the actual start of the view can vary based on the size of the delegates. The correct way to bring an item into view is with \c positionViewAtIndex. + + \bold Note: methods should only be called after the Component has completed. To position + the view at startup, this method should be called by Component.onCompleted. For + example, to position the view at the end: + + \code + Component.onCompleted: positionViewAtIndex(count - 1, ListView.Beginning) + \endcode */ void QDeclarativeListView::positionViewAtIndex(int index, int mode) { @@ -2509,6 +2521,8 @@ void QDeclarativeListView::positionViewAtIndex(int index, int mode) If the item is outside the visible area, -1 is returned, regardless of whether an item will exist at that point when scrolled into view. + + \bold Note: methods should only be called after the Component has completed. */ int QDeclarativeListView::indexAt(int x, int y) const { diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp index 0c2d249..0e980b3 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview.cpp +++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp @@ -552,6 +552,8 @@ void QDeclarativePathView::setCurrentIndex(int idx) \qmlmethod PathView::incrementCurrentIndex() Increments the current index. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativePathView::incrementCurrentIndex() { @@ -563,6 +565,8 @@ void QDeclarativePathView::incrementCurrentIndex() \qmlmethod PathView::decrementCurrentIndex() Decrements the current index. + + \bold Note: methods should only be called after the Component has completed. */ void QDeclarativePathView::decrementCurrentIndex() { -- cgit v0.12 From a75d0052ea25968d05298d9b8622cb331c9af5a2 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 24 Jun 2010 10:25:40 +1000 Subject: Use ugly but reliable bitmaps fonts in test. --- .../declarative/qdeclarativetext/data/alignments.qml | 1 + .../qdeclarativetext/data/alignments_cb.png | Bin 1184 -> 528 bytes .../qdeclarativetext/data/alignments_cc.png | Bin 1293 -> 549 bytes .../qdeclarativetext/data/alignments_ct.png | Bin 1237 -> 564 bytes .../qdeclarativetext/data/alignments_lb.png | Bin 1208 -> 522 bytes .../qdeclarativetext/data/alignments_lc.png | Bin 1303 -> 541 bytes .../qdeclarativetext/data/alignments_lt.png | Bin 1241 -> 558 bytes .../qdeclarativetext/data/alignments_rb.png | Bin 1178 -> 530 bytes .../qdeclarativetext/data/alignments_rc.png | Bin 1274 -> 550 bytes .../qdeclarativetext/data/alignments_rt.png | Bin 1221 -> 564 bytes .../qdeclarativetextedit/data/alignments.qml | 1 + .../qdeclarativetextedit/data/alignments_cb.png | Bin 1411 -> 528 bytes .../qdeclarativetextedit/data/alignments_cc.png | Bin 1501 -> 549 bytes .../qdeclarativetextedit/data/alignments_ct.png | Bin 1457 -> 564 bytes .../qdeclarativetextedit/data/alignments_lb.png | Bin 1420 -> 522 bytes .../qdeclarativetextedit/data/alignments_lc.png | Bin 1508 -> 541 bytes .../qdeclarativetextedit/data/alignments_lt.png | Bin 1447 -> 558 bytes .../qdeclarativetextedit/data/alignments_rb.png | Bin 1421 -> 530 bytes .../qdeclarativetextedit/data/alignments_rc.png | Bin 1485 -> 550 bytes .../qdeclarativetextedit/data/alignments_rt.png | Bin 1439 -> 564 bytes 20 files changed, 2 insertions(+) diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments.qml b/tests/auto/declarative/qdeclarativetext/data/alignments.qml index 6a98a4d..b10c335 100644 --- a/tests/auto/declarative/qdeclarativetext/data/alignments.qml +++ b/tests/auto/declarative/qdeclarativetext/data/alignments.qml @@ -20,6 +20,7 @@ Rectangle { id: t anchors.fill: parent + font.family: "Misc Fixed" font.pixelSize: 8 horizontalAlignment: TextEdit.AlignRight verticalAlignment: TextEdit.AlignBottom diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png index 5cdb1e5..b0ad381 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png index 6b6862c..98232ce 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png index 7bfd281..b606ba5 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png index a8c16a0..a8f095d 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png index 1f6e28d..c2a0679 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png index e529880..c019551 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png index c1ce274..08d581a 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png index 4f8a4a7..d607955 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png index 643bd18..2acfb9e 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml b/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml index 6a98a4d..b10c335 100644 --- a/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml +++ b/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml @@ -20,6 +20,7 @@ Rectangle { id: t anchors.fill: parent + font.family: "Misc Fixed" font.pixelSize: 8 horizontalAlignment: TextEdit.AlignRight verticalAlignment: TextEdit.AlignBottom diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png index 0e40444..b0ad381 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png index a5c83a8..98232ce 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png index 8177c20..b606ba5 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png index c0e1774..a8f095d 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png index d61aaf2..c2a0679 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png index 599f4c6..c019551 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png index 83ec990..08d581a 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png index 53e30b7..d607955 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png index 61a112f..2acfb9e 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png differ -- cgit v0.12 From bb3ae9779730b6d4a0442ea5553b0dfab1a3da2b Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Thu, 24 Jun 2010 10:31:41 +1000 Subject: Ensure sourcesize is in pixmap cache key. Task-number: QTBUG-11645 --- src/declarative/util/qdeclarativepixmapcache.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index a4ddf46..0a14462 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -510,6 +510,12 @@ bool QDeclarativePixmapReply::event(QEvent *event) else d->errorString = de->errorString; QByteArray key = d->url.toEncoded(QUrl::FormattingOption(0x100)); + if (d->forced_width > 0 || d->forced_height > 0) { + key += ':'; + key += QByteArray::number(d->forced_width); + key += 'x'; + key += QByteArray::number(d->forced_height); + } QString strKey = QString::fromLatin1(key.constData(), key.count()); QPixmapCache::insert(strKey, d->pixmap); // note: may fail (returns false) emit finished(); -- cgit v0.12 From 9de452bba5b592402ced6f20fbdc6d0b5c075416 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Thu, 24 Jun 2010 11:23:57 +1000 Subject: Normalize integers when calling glVertexAttribPointer() When QGLShaderProgram::setAttributeArray() is used with a type like GL_UNSIGNED_BYTE, it is normally going to be a value that should be normalized to the range 0..1. But the function wasn't normalizing, which led to errors in programs that used per-vertex colors with the 4ub representation. Reviewed-by: Sarah Smith --- src/opengl/qglshaderprogram.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp index 83b4b21..c7689b8 100644 --- a/src/opengl/qglshaderprogram.cpp +++ b/src/opengl/qglshaderprogram.cpp @@ -1490,7 +1490,7 @@ void QGLShaderProgram::setAttributeArray Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, tupleSize, type, GL_FALSE, + glVertexAttribPointer(location, tupleSize, type, GL_TRUE, stride, values); } } @@ -1634,7 +1634,7 @@ void QGLShaderProgram::setAttributeBuffer Q_D(QGLShaderProgram); Q_UNUSED(d); if (location != -1) { - glVertexAttribPointer(location, tupleSize, type, GL_FALSE, stride, + glVertexAttribPointer(location, tupleSize, type, GL_TRUE, stride, reinterpret_cast(offset)); } } -- cgit v0.12 From 52b3d6263bb58ca82a8f00d42af801f5ed521f6b Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 24 Jun 2010 11:45:59 +1000 Subject: Update lupdate to recognize concatenated text in QML files. Also fixes a potential crash with non-string-literal nodes. Task-number: QTBUG-11580 --- tools/linguist/lupdate/qdeclarative.cpp | 72 +++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 16 deletions(-) diff --git a/tools/linguist/lupdate/qdeclarative.cpp b/tools/linguist/lupdate/qdeclarative.cpp index 1b35c14..3eef2d7 100644 --- a/tools/linguist/lupdate/qdeclarative.cpp +++ b/tools/linguist/lupdate/qdeclarative.cpp @@ -87,17 +87,25 @@ protected: virtual void endVisit(AST::CallExpression *node) { + m_bSource.clear(); if (AST::IdentifierExpression *idExpr = AST::cast(node->base)) { if (idExpr->name->asString() == QLatin1String("qsTr") || idExpr->name->asString() == QLatin1String("QT_TR_NOOP")) { - if (node->arguments && AST::cast(node->arguments->expression)) { - AST::StringLiteral *literal = AST::cast(node->arguments->expression); - const QString source = literal->value->asString(); + if (!node->arguments) + return; + AST::BinaryExpression *binary = AST::cast(node->arguments->expression); + if (binary) { + if (!createString(binary)) + m_bSource.clear(); + } + AST::StringLiteral *literal = AST::cast(node->arguments->expression); + if (literal || !m_bSource.isEmpty()) { + const QString source = literal ? literal->value->asString() : m_bSource; QString comment; bool plural = false; AST::ArgumentList *commentNode = node->arguments->next; - if (commentNode) { + if (commentNode && AST::cast(commentNode->expression)) { literal = AST::cast(commentNode->expression); comment = literal->value->asString(); @@ -122,18 +130,25 @@ protected: QString comment; bool plural = false; AST::ArgumentList *sourceNode = node->arguments->next; - if (sourceNode) { - literal = AST::cast(sourceNode->expression); - source = literal->value->asString(); - AST::ArgumentList *commentNode = sourceNode->next; - if (commentNode) { - literal = AST::cast(commentNode->expression); - comment = literal->value->asString(); - - AST::ArgumentList *nNode = commentNode->next; - if (nNode) - plural = true; - } + if (!sourceNode) + return; + literal = AST::cast(sourceNode->expression); + AST::BinaryExpression *binary = AST::cast(sourceNode->expression); + if (binary) { + if (!createString(binary)) + m_bSource.clear(); + } + if (!literal && m_bSource.isEmpty()) + return; + source = literal ? literal->value->asString() : m_bSource; + AST::ArgumentList *commentNode = sourceNode->next; + if (commentNode && AST::cast(commentNode->expression)) { + literal = AST::cast(commentNode->expression); + comment = literal->value->asString(); + + AST::ArgumentList *nNode = commentNode->next; + if (nNode) + plural = true; } TranslatorMessage msg(context, source, @@ -148,9 +163,34 @@ protected: } private: + bool createString(AST::BinaryExpression *b) { + if (!b or b->op != 0) + return false; + AST::BinaryExpression *l = AST::cast(b->left); + AST::BinaryExpression *r = AST::cast(b->right); + AST::StringLiteral *ls = AST::cast(b->left); + AST::StringLiteral *rs = AST::cast(b->right); + if ((!l && !ls) || (!r && !rs)) + return false; + if (l) { + if (!createString(l)) + return false; + } else + m_bSource.prepend(ls->value->asString()); + + if (r) { + if (!createString(r)) + return false; + } else + m_bSource.append(rs->value->asString()); + + return true; + } + Translator *m_translator; QString m_fileName; QString m_component; + QString m_bSource; }; QString createErrorString(const QString &filename, const QString &code, Parser &parser) -- cgit v0.12 From 5d64484bf0b37427133c163ad9b160e767dc1bcd Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 24 Jun 2010 13:43:25 +1000 Subject: Script benchmarking. --- tests/benchmarks/declarative/script/data/block.qml | 6 +-- tests/benchmarks/declarative/script/data/global.js | 45 +++++++++++++++++ .../declarative/script/data/global_prop.qml | 54 +++++++++++++++++++++ tests/benchmarks/declarative/script/tst_script.cpp | 56 +++++++++++++++++++++- 4 files changed, 157 insertions(+), 4 deletions(-) create mode 100644 tests/benchmarks/declarative/script/data/global.js create mode 100644 tests/benchmarks/declarative/script/data/global_prop.qml diff --git a/tests/benchmarks/declarative/script/data/block.qml b/tests/benchmarks/declarative/script/data/block.qml index 4e5006e..f7b2ab3 100644 --- a/tests/benchmarks/declarative/script/data/block.qml +++ b/tests/benchmarks/declarative/script/data/block.qml @@ -47,7 +47,7 @@ Rectangle { function doSomethingDirect() { theObject.prop1 = 0; - for (var i = 0; i < 60; ++i) + for (var i = 0; i < 1000; ++i) theObject.prop1 += theObject.prop2; theObject.prop3 = theObject.prop1; @@ -57,7 +57,7 @@ Rectangle { theObject.prop1 = 0; var incrementObj = theObject; - for (var i = 0; i < 60; ++i) + for (var i = 0; i < 1000; ++i) incrementObj.prop1 += incrementObj.prop2; incrementObj.prop3 = incrementObj.prop1; @@ -67,7 +67,7 @@ Rectangle { theObject.prop1 = 0; var increment = theObject.prop2; - for (var i = 0; i < 60; ++i) + for (var i = 0; i < 1000; ++i) theObject.prop1 += increment; theObject.prop3 = theObject.prop1; diff --git a/tests/benchmarks/declarative/script/data/global.js b/tests/benchmarks/declarative/script/data/global.js new file mode 100644 index 0000000..02472d2 --- /dev/null +++ b/tests/benchmarks/declarative/script/data/global.js @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +function doSomething() { + for (var i = 0; i < 10000; ++i) + Math.sin(90); +} diff --git a/tests/benchmarks/declarative/script/data/global_prop.qml b/tests/benchmarks/declarative/script/data/global_prop.qml new file mode 100644 index 0000000..908cecf --- /dev/null +++ b/tests/benchmarks/declarative/script/data/global_prop.qml @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import Qt 4.7 +import "global.js" as Program + +Rectangle { + width: 200; height: 200 + + signal triggered + onTriggered: Program.doSomething(); + + function doSomething() { + Program.doSomething(); + } +} diff --git a/tests/benchmarks/declarative/script/tst_script.cpp b/tests/benchmarks/declarative/script/tst_script.cpp index 99f294c..16052fa 100644 --- a/tests/benchmarks/declarative/script/tst_script.cpp +++ b/tests/benchmarks/declarative/script/tst_script.cpp @@ -92,7 +92,10 @@ private slots: void block_data(); void block(); -private: + + void global_property_js(); + void global_property_qml(); + void global_property_qml_js(); }; inline QUrl TEST_FILE(const QString &filename) @@ -625,6 +628,57 @@ void tst_script::block() delete rect; } +#define GLOBALPROPERTY_PROGRAM \ + "(function() { " \ + " for (var ii = 0; ii < 10000; ++ii) { " \ + " Math.sin(90); " \ + " } " \ + "})" + +void tst_script::global_property_js() +{ + QScriptEngine engine; + + QScriptValue prog = engine.evaluate(GLOBALPROPERTY_PROGRAM); + prog.call(); + + QBENCHMARK { + prog.call(); + } +} + +void tst_script::global_property_qml() +{ + QDeclarativeEngine qmlengine; + + QScriptEngine *engine = QDeclarativeEnginePrivate::getScriptEngine(&qmlengine); + QScriptValue prog = engine->evaluate(GLOBALPROPERTY_PROGRAM); + prog.call(); + + QBENCHMARK { + prog.call(); + } +} + +void tst_script::global_property_qml_js() +{ + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, TEST_FILE("global_prop.qml")); + QDeclarativeRectangle *rect = qobject_cast(component.create()); + QVERIFY(rect != 0); + + int index = rect->metaObject()->indexOfMethod("triggered()"); + QVERIFY(index != -1); + QMetaMethod method = rect->metaObject()->method(index); + + QBENCHMARK { + method.invoke(rect, Qt::DirectConnection); + } + + delete rect; +} + + QTEST_MAIN(tst_script) #include "tst_script.moc" -- cgit v0.12 From 9d6ccfea89ae99b747f70ece71185868f189d0f9 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 24 Jun 2010 14:19:45 +1000 Subject: Expose the Flickable's internal contentItem So that dynamically created items can be parented to the contentItem and be flicked with the rest of the content. Task-number: QTBUG-11674 Reviewed-by: Aaron Kennedy --- .../graphicsitems/qdeclarativeflickable.cpp | 52 +++++++++++++++------- .../graphicsitems/qdeclarativeflickable_p.h | 3 +- .../graphicsitems/qdeclarativeflickable_p_p.h | 2 +- .../graphicsitems/qdeclarativegridview.cpp | 20 ++++----- .../graphicsitems/qdeclarativelistview.cpp | 24 +++++----- .../qdeclarativeflickable/data/flickable04.qml | 6 +++ .../tst_qdeclarativeflickable.cpp | 4 ++ 7 files changed, 70 insertions(+), 41 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 3f681b7..65bc233 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -122,7 +122,7 @@ void QDeclarativeFlickableVisibleArea::updateVisible() QDeclarativeFlickablePrivate::QDeclarativeFlickablePrivate() - : viewport(new QDeclarativeItem) + : contentItem(new QDeclarativeItem) , hData(this, &QDeclarativeFlickablePrivate::setRoundedViewportX) , vData(this, &QDeclarativeFlickablePrivate::setRoundedViewportY) , flickingHorizontally(false), flickingVertically(false) @@ -140,8 +140,8 @@ QDeclarativeFlickablePrivate::QDeclarativeFlickablePrivate() void QDeclarativeFlickablePrivate::init() { Q_Q(QDeclarativeFlickable); - QDeclarative_setParent_noEvent(viewport, q); - viewport->setParentItem(q); + QDeclarative_setParent_noEvent(contentItem, q); + contentItem->setParentItem(q); static int timelineUpdatedIdx = -1; static int timelineCompletedIdx = -1; static int flickableTickedIdx = -1; @@ -158,7 +158,7 @@ void QDeclarativeFlickablePrivate::init() q, flickableMovementEndingIdx, Qt::DirectConnection); q->setAcceptedMouseButtons(Qt::LeftButton); q->setFiltersChildEvents(true); - QDeclarativeItemPrivate *viewportPrivate = static_cast(QGraphicsItemPrivate::get(viewport)); + QDeclarativeItemPrivate *viewportPrivate = static_cast(QGraphicsItemPrivate::get(contentItem)); viewportPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); lastPosTime.invalidate(); } @@ -182,7 +182,7 @@ qreal QDeclarativeFlickablePrivate::overShootDistance(qreal velocity, qreal size void QDeclarativeFlickablePrivate::itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeom, const QRectF &oldGeom) { Q_Q(QDeclarativeFlickable); - if (item == viewport) { + if (item == contentItem) { if (newGeom.x() != oldGeom.x()) emit q->contentXChanged(); if (newGeom.y() != oldGeom.y()) @@ -579,10 +579,28 @@ void QDeclarativeFlickable::ticked() viewportMoved(); } -QDeclarativeItem *QDeclarativeFlickable::viewport() +/*! + \qmlproperty Item Flickable::contentItem + + The internal item that contains the Items to be moved in the Flickable. + + Items declared as children of a Flickable are automatically parented to the Flickable's contentItem. + + Items created dynamically need to be explicitly parented to the \e contentItem: + \code + Flickable { + id: myFlickable + function addItem(file) { + var component = Qt.createComponent(file) + component.createObject(myFlickable.contentItem); + } + } + \endcode +*/ +QDeclarativeItem *QDeclarativeFlickable::contentItem() { Q_D(QDeclarativeFlickable); - return d->viewport; + return d->contentItem; } QDeclarativeFlickableVisibleArea *QDeclarativeFlickable::visibleArea() @@ -899,12 +917,12 @@ void QDeclarativeFlickablePrivate::clearDelayedPress() void QDeclarativeFlickablePrivate::setRoundedViewportX(qreal x) { - viewport->setX(qRound(x)); + contentItem->setX(qRound(x)); } void QDeclarativeFlickablePrivate::setRoundedViewportY(qreal y) { - viewport->setY(qRound(y)); + contentItem->setY(qRound(y)); } void QDeclarativeFlickable::timerEvent(QTimerEvent *event) @@ -991,13 +1009,13 @@ void QDeclarativeFlickable::geometryChanged(const QRectF &newGeometry, bool changed = false; if (newGeometry.width() != oldGeometry.width()) { if (d->hData.viewSize < 0) { - d->viewport->setWidth(width()); + d->contentItem->setWidth(width()); emit contentWidthChanged(); } } if (newGeometry.height() != oldGeometry.height()) { if (d->vData.viewSize < 0) { - d->viewport->setHeight(height()); + d->contentItem->setHeight(height()); emit contentHeightChanged(); } } @@ -1018,7 +1036,7 @@ void QDeclarativeFlickablePrivate::data_append(QDeclarativeListProperty { QDeclarativeItem *i = qobject_cast(o); if (i) - i->setParentItem(static_cast(prop->data)->viewport); + i->setParentItem(static_cast(prop->data)->contentItem); else o->setParent(prop->object); } @@ -1032,7 +1050,7 @@ QDeclarativeListProperty QDeclarativeFlickable::flickableData() QDeclarativeListProperty QDeclarativeFlickable::flickableChildren() { Q_D(QDeclarativeFlickable); - return QGraphicsItemPrivate::get(d->viewport)->childrenList(); + return QGraphicsItemPrivate::get(d->contentItem)->childrenList(); } /*! @@ -1102,9 +1120,9 @@ void QDeclarativeFlickable::setContentWidth(qreal w) return; d->hData.viewSize = w; if (w < 0) - d->viewport->setWidth(width()); + d->contentItem->setWidth(width()); else - d->viewport->setWidth(w); + d->contentItem->setWidth(w); // Make sure that we're entirely in view. if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { int oldDuration = d->fixupDuration; @@ -1129,9 +1147,9 @@ void QDeclarativeFlickable::setContentHeight(qreal h) return; d->vData.viewSize = h; if (h < 0) - d->viewport->setHeight(height()); + d->contentItem->setHeight(height()); else - d->viewport->setHeight(h); + d->contentItem->setHeight(h); // Make sure that we're entirely in view. if (!d->pressed && !d->movingHorizontally && !d->movingVertically) { int oldDuration = d->fixupDuration; diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h index d40a0dc..be4846e 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h @@ -60,6 +60,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeFlickable : public QDeclarativeItem Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged) Q_PROPERTY(qreal contentX READ contentX WRITE setContentX NOTIFY contentXChanged) Q_PROPERTY(qreal contentY READ contentY WRITE setContentY NOTIFY contentYChanged) + Q_PROPERTY(QDeclarativeItem *contentItem READ contentItem CONSTANT) Q_PROPERTY(qreal horizontalVelocity READ horizontalVelocity NOTIFY horizontalVelocityChanged) Q_PROPERTY(qreal verticalVelocity READ verticalVelocity NOTIFY verticalVelocityChanged) @@ -143,7 +144,7 @@ public: bool isAtYEnd() const; bool isAtYBeginning() const; - QDeclarativeItem *viewport(); + QDeclarativeItem *contentItem(); enum FlickableDirection { AutoFlickDirection=0x00, HorizontalFlick=0x01, VerticalFlick=0x02, HorizontalAndVerticalFlick=0x03 }; FlickableDirection flickDirection() const; // deprecated diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h index 66d2678..b919e1b 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h @@ -125,7 +125,7 @@ public: void itemGeometryChanged(QDeclarativeItem *, const QRectF &, const QRectF &); public: - QDeclarativeItem *viewport; + QDeclarativeItem *contentItem; AxisData hData; AxisData vData; diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 14980a8..af9b04e 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -421,10 +421,10 @@ FxGridItem *QDeclarativeGridViewPrivate::createItem(int modelIndex) if (model->completePending()) { // complete listItem->item->setZValue(1); - listItem->item->setParentItem(q->viewport()); + listItem->item->setParentItem(q->contentItem()); model->completeItem(); } else { - listItem->item->setParentItem(q->viewport()); + listItem->item->setParentItem(q->contentItem()); } unrequestedItems.remove(listItem->item); } @@ -716,12 +716,12 @@ void QDeclarativeGridViewPrivate::createHighlight() } } else { item = new QDeclarativeItem; - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); } if (item) { - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); highlight = new FxGridItem(item, q); highlightXAnimator = new QSmoothedAnimation(q); highlightXAnimator->target = QDeclarativeProperty(highlight->item, QLatin1String("x")); @@ -808,8 +808,8 @@ void QDeclarativeGridViewPrivate::updateFooter() delete context; } if (item) { - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); item->setZValue(1); QDeclarativeItemPrivate *itemPrivate = static_cast(QGraphicsItemPrivate::get(item)); itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); @@ -854,8 +854,8 @@ void QDeclarativeGridViewPrivate::updateHeader() delete context; } if (item) { - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); item->setZValue(1); QDeclarativeItemPrivate *itemPrivate = static_cast(QGraphicsItemPrivate::get(item)); itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 35794c2..59bb178 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -421,7 +421,7 @@ public: void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { Q_Q(QDeclarativeListView); QDeclarativeFlickablePrivate::itemGeometryChanged(item, newGeometry, oldGeometry); - if (item != viewport && (!highlight || item != highlight->item)) { + if (item != contentItem && (!highlight || item != highlight->item)) { if ((orient == QDeclarativeListView::Vertical && newGeometry.height() != oldGeometry.height()) || (orient == QDeclarativeListView::Horizontal && newGeometry.width() != oldGeometry.width())) { scheduleLayout(); @@ -580,10 +580,10 @@ FxListItem *QDeclarativeListViewPrivate::createItem(int modelIndex) if (model->completePending()) { // complete listItem->item->setZValue(1); - listItem->item->setParentItem(q->viewport()); + listItem->item->setParentItem(q->contentItem()); model->completeItem(); } else { - listItem->item->setParentItem(q->viewport()); + listItem->item->setParentItem(q->contentItem()); } QDeclarativeItemPrivate *itemPrivate = static_cast(QGraphicsItemPrivate::get(item)); itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); @@ -840,8 +840,8 @@ void QDeclarativeListViewPrivate::createHighlight() item = new QDeclarativeItem; } if (item) { - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); highlight = new FxListItem(item, q); if (currentItem && autoHighlight) { if (orient == QDeclarativeListView::Vertical) { @@ -921,8 +921,8 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem) delete nobj; } else { listItem->section->setZValue(1); - QDeclarative_setParent_noEvent(listItem->section, q->viewport()); - listItem->section->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(listItem->section, q->contentItem()); + listItem->section->setParentItem(q->contentItem()); } } else { delete context; @@ -1046,8 +1046,8 @@ void QDeclarativeListViewPrivate::updateFooter() delete context; } if (item) { - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); item->setZValue(1); QDeclarativeItemPrivate *itemPrivate = static_cast(QGraphicsItemPrivate::get(item)); itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); @@ -1086,8 +1086,8 @@ void QDeclarativeListViewPrivate::updateHeader() delete context; } if (item) { - QDeclarative_setParent_noEvent(item, q->viewport()); - item->setParentItem(q->viewport()); + QDeclarative_setParent_noEvent(item, q->contentItem()); + item->setParentItem(q->contentItem()); item->setZValue(1); QDeclarativeItemPrivate *itemPrivate = static_cast(QGraphicsItemPrivate::get(item)); itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); @@ -2983,7 +2983,7 @@ void QDeclarativeListView::createdItem(int index, QDeclarativeItem *item) { Q_D(QDeclarativeListView); if (d->requestedIndex != index) { - item->setParentItem(viewport()); + item->setParentItem(contentItem()); d->unrequestedItems.insert(item, index); if (d->orient == QDeclarativeListView::Vertical) item->setY(d->positionAt(index)); diff --git a/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml b/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml index aa156ed..a840a01 100644 --- a/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml +++ b/tests/auto/declarative/qdeclarativeflickable/data/flickable04.qml @@ -1,6 +1,12 @@ import Qt 4.7 Flickable { + property bool ok: false + function check() { + if (column.parent == contentItem) + ok = true; + } + width: 100; height: 100 contentWidth: column.width; contentHeight: column.height pressDelay: 200; boundsBehavior: Flickable.StopAtBounds; interactive: false diff --git a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp index 2ba5574..678996b 100644 --- a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp +++ b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp @@ -147,6 +147,10 @@ void tst_qdeclarativeflickable::properties() QCOMPARE(obj->pressDelay(), 200); QCOMPARE(obj->maximumFlickVelocity(), 2000.); + QVERIFY(obj->property("ok").toBool() == false); + QMetaObject::invokeMethod(obj, "check"); + QVERIFY(obj->property("ok").toBool() == true); + delete obj; } -- cgit v0.12 From 2bae9da77fbc6407ddb24d0fe8135698092cbb6a Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 24 Jun 2010 14:28:18 +1000 Subject: More script benchmarking. --- tests/benchmarks/declarative/script/data/global.js | 9 +++++++++ .../declarative/script/data/global_prop.qml | 7 +++---- tests/benchmarks/declarative/script/tst_script.cpp | 19 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/tests/benchmarks/declarative/script/data/global.js b/tests/benchmarks/declarative/script/data/global.js index 02472d2..5b86b4d 100644 --- a/tests/benchmarks/declarative/script/data/global.js +++ b/tests/benchmarks/declarative/script/data/global.js @@ -39,7 +39,16 @@ ** ****************************************************************************/ +var incVar = 1; +var total; + function doSomething() { for (var i = 0; i < 10000; ++i) Math.sin(90); } + +function doIncrement() { + total = 0; + for (var i = 0; i < 100000; ++i) + total += incVar; +} diff --git a/tests/benchmarks/declarative/script/data/global_prop.qml b/tests/benchmarks/declarative/script/data/global_prop.qml index 908cecf..4fb7ee7 100644 --- a/tests/benchmarks/declarative/script/data/global_prop.qml +++ b/tests/benchmarks/declarative/script/data/global_prop.qml @@ -46,9 +46,8 @@ Rectangle { width: 200; height: 200 signal triggered - onTriggered: Program.doSomething(); + signal incrementTriggered - function doSomething() { - Program.doSomething(); - } + onTriggered: Program.doSomething(); + onIncrementTriggered: Program.doIncrement(); } diff --git a/tests/benchmarks/declarative/script/tst_script.cpp b/tests/benchmarks/declarative/script/tst_script.cpp index 16052fa..5a7e151 100644 --- a/tests/benchmarks/declarative/script/tst_script.cpp +++ b/tests/benchmarks/declarative/script/tst_script.cpp @@ -96,6 +96,8 @@ private slots: void global_property_js(); void global_property_qml(); void global_property_qml_js(); + + void scriptfile_property(); }; inline QUrl TEST_FILE(const QString &filename) @@ -678,6 +680,23 @@ void tst_script::global_property_qml_js() delete rect; } +void tst_script::scriptfile_property() +{ + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, TEST_FILE("global_prop.qml")); + QDeclarativeRectangle *rect = qobject_cast(component.create()); + QVERIFY(rect != 0); + + int index = rect->metaObject()->indexOfMethod("incrementTriggered()"); + QVERIFY(index != -1); + QMetaMethod method = rect->metaObject()->method(index); + + QBENCHMARK { + method.invoke(rect, Qt::DirectConnection); + } + + delete rect; +} QTEST_MAIN(tst_script) -- cgit v0.12 From ae422458fdbd9a2cdbc48024b31f7e5528baebb4 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 24 Jun 2010 14:33:51 +1000 Subject: Make compile. --- tools/linguist/lupdate/qdeclarative.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/linguist/lupdate/qdeclarative.cpp b/tools/linguist/lupdate/qdeclarative.cpp index 3eef2d7..2377416 100644 --- a/tools/linguist/lupdate/qdeclarative.cpp +++ b/tools/linguist/lupdate/qdeclarative.cpp @@ -164,7 +164,7 @@ protected: private: bool createString(AST::BinaryExpression *b) { - if (!b or b->op != 0) + if (!b || b->op != 0) return false; AST::BinaryExpression *l = AST::cast(b->left); AST::BinaryExpression *r = AST::cast(b->right); -- cgit v0.12 From f14b9b1bbb023ba8f28839bab456e09040449851 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 23 Jun 2010 14:41:26 +0200 Subject: Provide Qml plugins with UID3s on Symbian ...otherwise we cannot Symbian sign them. (cherry picked from commit 808c045dd351dab32b8add07d45fd77f5a061f61) --- src/imports/folderlistmodel/folderlistmodel.pro | 1 + src/imports/gestures/gestures.pro | 1 + src/imports/particles/particles.pro | 1 + src/imports/webkit/webkit.pro | 1 + 4 files changed, 4 insertions(+) diff --git a/src/imports/folderlistmodel/folderlistmodel.pro b/src/imports/folderlistmodel/folderlistmodel.pro index 781dfc2..9a1be61 100644 --- a/src/imports/folderlistmodel/folderlistmodel.pro +++ b/src/imports/folderlistmodel/folderlistmodel.pro @@ -14,6 +14,7 @@ qmldir.files += $$PWD/qmldir qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH symbian:{ + TARGET.UID3 = 0x20021320 load(data_caging_paths) include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro index 4ef7931..ac49b76 100644 --- a/src/imports/gestures/gestures.pro +++ b/src/imports/gestures/gestures.pro @@ -14,6 +14,7 @@ qmldir.files += $$PWD/qmldir qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH symbian:{ + TARGET.UID3 = 0x2002131F load(data_caging_paths) include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro index 9fd4db5..400c526 100644 --- a/src/imports/particles/particles.pro +++ b/src/imports/particles/particles.pro @@ -18,6 +18,7 @@ qmldir.files += $$PWD/qmldir qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH symbian:{ + TARGET.UID3 = 0x2002131E load(data_caging_paths) include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) diff --git a/src/imports/webkit/webkit.pro b/src/imports/webkit/webkit.pro index 7b2ac66..3661690 100644 --- a/src/imports/webkit/webkit.pro +++ b/src/imports/webkit/webkit.pro @@ -15,6 +15,7 @@ qmldir.files += $$PWD/qmldir qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH symbian:{ + TARGET.UID3 = 0x20021321 load(data_caging_paths) include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) -- cgit v0.12 From f2fc1355306219eaec9042462d3be4aceed1b829 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 24 Jun 2010 14:46:55 +1000 Subject: Prevent value source animations from being registered to start twice. If the animation had an explicit "running: true", the animation would be registered with the engine twice, which prevented a proper start. --- src/declarative/util/qdeclarativeanimation.cpp | 2 ++ .../qdeclarativeanimations/data/runningTrueBug.qml | 30 ++++++++++++++++++++++ .../tst_qdeclarativeanimations.cpp | 15 +++++++++++ 3 files changed, 47 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeanimations/data/runningTrueBug.qml diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index f807866..add27f3 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -176,6 +176,8 @@ void QDeclarativeAbstractAnimation::setRunning(bool r) { Q_D(QDeclarativeAbstractAnimation); if (!d->componentComplete) { + if (d->running && r == d->running) //don't re-register + return; d->running = r; if (r == false) d->avoidPropertyValueSourceStart = true; diff --git a/tests/auto/declarative/qdeclarativeanimations/data/runningTrueBug.qml b/tests/auto/declarative/qdeclarativeanimations/data/runningTrueBug.qml new file mode 100644 index 0000000..2c5207e --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimations/data/runningTrueBug.qml @@ -0,0 +1,30 @@ +import Qt 4.7 +Rectangle { + color: "skyblue" + width: 500 + height: 200 + Rectangle { + objectName: "cloud" + color: "white" + y: 50 + width: 100 + height: 100 + + SequentialAnimation on x { + loops: Animation.Infinite + running: true + NumberAnimation { + id: firstAnimation + from: 0 + to: 500 + duration: 5000 + } + NumberAnimation { + id: secondAnimation + from: -100 + to: 0 + duration: 1000 + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp index 5cf4c23..a965ef3 100644 --- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp +++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp @@ -81,6 +81,7 @@ private slots: void dontStart(); void easingProperties(); void rotation(); + void runningTrueBug(); }; #define QTIMED_COMPARE(lhs, rhs) do { \ @@ -733,6 +734,20 @@ void tst_qdeclarativeanimations::rotation() QTIMED_COMPARE(rr->rotation() + rr2->rotation() + rr3->rotation() + rr4->rotation(), qreal(370*4)); } +void tst_qdeclarativeanimations::runningTrueBug() +{ + //ensure we start correctly when "running: true" is explicitly set + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/runningTrueBug.qml")); + QDeclarativeRectangle *rect = qobject_cast(c.create()); + QVERIFY(rect); + + QDeclarativeRectangle *cloud = rect->findChild("cloud"); + QVERIFY(cloud); + QTest::qWait(1000); + QVERIFY(cloud->x() > qreal(0)); +} + QTEST_MAIN(tst_qdeclarativeanimations) #include "tst_qdeclarativeanimations.moc" -- cgit v0.12 From 29a406e3622ba44ccf35c6913fbb4ad098674092 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 24 Jun 2010 15:14:14 +1000 Subject: Update tests following QDeclarativeFlickable::viewport() -> contentIem() --- .../tst_qdeclarativegridview.cpp | 178 +++++++-------- .../tst_qdeclarativelistview.cpp | 244 ++++++++++----------- .../tst_qdeclarativevisualdatamodel.cpp | 6 +- 3 files changed, 214 insertions(+), 214 deletions(-) diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index deff1f8..a67c56f 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -178,17 +178,17 @@ void tst_QDeclarativeGridView::items() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_COMPARE(gridview->count(), model.count()); - QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item for (int i = 0; i < model.count(); ++i) { - QDeclarativeText *name = findItem(viewport, "textName", i); + QDeclarativeText *name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - QDeclarativeText *number = findItem(viewport, "textNumber", i); + QDeclarativeText *number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -197,7 +197,7 @@ void tst_QDeclarativeGridView::items() TestModel model2; ctxt->setContextProperty("testModel", &model2); - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); QTRY_VERIFY(itemCount == 0); delete canvas; @@ -226,14 +226,14 @@ void tst_QDeclarativeGridView::changed() QDeclarativeFlickable *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.modifyItem(1, "Will", "9876"); - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); @@ -259,17 +259,17 @@ void tst_QDeclarativeGridView::inserted() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.insertItem(1, "Will", "9876"); - QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); @@ -279,19 +279,19 @@ void tst_QDeclarativeGridView::inserted() // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); QTRY_COMPARE(item->x(), (i%3)*80.0); QTRY_COMPARE(item->y(), (i/3)*60.0); } model.insertItem(0, "Foo", "1111"); // zero index, and current item - QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item - name = findItem(viewport, "textName", 0); + name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(0)); - number = findItem(viewport, "textNumber", 0); + number = findItem(contentItem, "textNumber", 0); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); @@ -299,7 +299,7 @@ void tst_QDeclarativeGridView::inserted() // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); } @@ -335,15 +335,15 @@ void tst_QDeclarativeGridView::removed() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.removeItem(1); - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); @@ -352,9 +352,9 @@ void tst_QDeclarativeGridView::removed() QTRY_COMPARE(removed, QString("Item1")); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); @@ -364,17 +364,17 @@ void tst_QDeclarativeGridView::removed() // Remove first item (which is the current item); model.removeItem(0); - name = findItem(viewport, "textName", 0); + name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(0)); - number = findItem(viewport, "textNumber", 0); + number = findItem(contentItem, "textNumber", 0); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); @@ -385,9 +385,9 @@ void tst_QDeclarativeGridView::removed() model.removeItem(25); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); @@ -405,7 +405,7 @@ void tst_QDeclarativeGridView::removed() // Confirm items positioned correctly for (int i = 6; i < 18; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); @@ -424,9 +424,9 @@ void tst_QDeclarativeGridView::removed() QTest::qWait(100); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); @@ -478,29 +478,29 @@ void tst_QDeclarativeGridView::moved() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.moveItem(1, 8); - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); - name = findItem(viewport, "textName", 8); + name = findItem(contentItem, "textName", 8); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(8)); - number = findItem(viewport, "textNumber", 8); + number = findItem(contentItem, "textNumber", 8); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(8)); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); @@ -513,17 +513,17 @@ void tst_QDeclarativeGridView::moved() model.moveItem(1, 25); // Confirm items positioned correctly and indexes correct - itemCount = findItems(viewport, "wrapper").count()-1; + itemCount = findItems(contentItem, "wrapper").count()-1; for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), qreal((i%3)*80)); QTRY_COMPARE(item->y(), qreal((i/3)*60)); - name = findItem(viewport, "textName", i); + name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - number = findItem(viewport, "textNumber", i); + number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -533,15 +533,15 @@ void tst_QDeclarativeGridView::moved() // Confirm items positioned correctly and indexes correct for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->x() == (i%3)*80); QTRY_VERIFY(item->y() == (i/3)*60); - name = findItem(viewport, "textName", i); + name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - number = findItem(viewport, "textNumber", i); + number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -574,12 +574,12 @@ void tst_QDeclarativeGridView::currentIndex() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QVERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QVERIFY(contentItem != 0); // current item should be third item QCOMPARE(gridview->currentIndex(), 35); - QCOMPARE(gridview->currentItem(), findItem(viewport, "wrapper", 35)); + QCOMPARE(gridview->currentItem(), findItem(contentItem, "wrapper", 35)); QCOMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); QCOMPARE(gridview->contentY(), 399.0); @@ -696,21 +696,21 @@ void tst_QDeclarativeGridView::changeFlow() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); // Confirm items positioned correctly and indexes correct - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), qreal((i%3)*80)); QTRY_COMPARE(item->y(), qreal((i/3)*60)); - QDeclarativeText *name = findItem(viewport, "textName", i); + QDeclarativeText *name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - QDeclarativeText *number = findItem(viewport, "textNumber", i); + QDeclarativeText *number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -718,17 +718,17 @@ void tst_QDeclarativeGridView::changeFlow() ctxt->setContextProperty("testTopToBottom", QVariant(true)); // Confirm items positioned correctly and indexes correct - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), qreal((i/5)*80)); QTRY_COMPARE(item->y(), qreal((i%5)*60)); - QDeclarativeText *name = findItem(viewport, "textName", i); + QDeclarativeText *name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - QDeclarativeText *number = findItem(viewport, "textNumber", i); + QDeclarativeText *number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -914,13 +914,13 @@ void tst_QDeclarativeGridView::positionViewAtIndex() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), (i%3)*80.); @@ -932,9 +932,9 @@ void tst_QDeclarativeGridView::positionViewAtIndex() QTRY_COMPARE(gridview->contentY(), 60.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 3; i < model.count() && i < itemCount-3-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), (i%3)*80.); @@ -946,9 +946,9 @@ void tst_QDeclarativeGridView::positionViewAtIndex() QTRY_COMPARE(gridview->contentY(), 420.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 22; i < model.count() && i < itemCount-22-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), (i%3)*80.); @@ -960,9 +960,9 @@ void tst_QDeclarativeGridView::positionViewAtIndex() QTRY_COMPARE(gridview->contentY(), 520.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 24; i < model.count() && i < itemCount-24-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), (i%3)*80.); @@ -974,9 +974,9 @@ void tst_QDeclarativeGridView::positionViewAtIndex() QTRY_COMPARE(gridview->contentY(), 0.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), (i%3)*80.); @@ -1044,13 +1044,13 @@ void tst_QDeclarativeGridView::resetModel() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_COMPARE(gridview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { - QDeclarativeText *display = findItem(viewport, "displayText", i); + QDeclarativeText *display = findItem(contentItem, "displayText", i); QTRY_VERIFY(display != 0); QTRY_COMPARE(display->text(), strings.at(i)); } @@ -1062,7 +1062,7 @@ void tst_QDeclarativeGridView::resetModel() QTRY_COMPARE(gridview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { - QDeclarativeText *display = findItem(viewport, "displayText", i); + QDeclarativeText *display = findItem(contentItem, "displayText", i); QTRY_VERIFY(display != 0); QTRY_COMPARE(display->text(), strings.at(i)); } @@ -1089,22 +1089,22 @@ void tst_QDeclarativeGridView::enforceRange() QTRY_COMPARE(gridview->preferredHighlightEnd(), 100.0); QTRY_COMPARE(gridview->highlightRangeMode(), QDeclarativeGridView::StrictlyEnforceRange); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); // view should be positioned at the top of the range. - QDeclarativeItem *item = findItem(viewport, "wrapper", 0); + QDeclarativeItem *item = findItem(contentItem, "wrapper", 0); QTRY_VERIFY(item); QTRY_COMPARE(gridview->contentY(), -100.0); - QDeclarativeText *name = findItem(viewport, "textName", 0); + QDeclarativeText *name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(0)); - QDeclarativeText *number = findItem(viewport, "textNumber", 0); + QDeclarativeText *number = findItem(contentItem, "textNumber", 0); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); - // Check currentIndex is updated when viewport moves + // Check currentIndex is updated when contentItem moves gridview->setContentY(0); QTRY_COMPARE(gridview->currentIndex(), 2); @@ -1146,18 +1146,18 @@ void tst_QDeclarativeGridView::manualHighlight() QDeclarativeGridView *gridview = findItem(canvas->rootObject(), "grid"); QTRY_VERIFY(gridview != 0); - QDeclarativeItem *viewport = gridview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = gridview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_COMPARE(gridview->currentIndex(), 0); - QTRY_COMPARE(gridview->currentItem(), findItem(viewport, "wrapper", 0)); + QTRY_COMPARE(gridview->currentItem(), findItem(contentItem, "wrapper", 0)); QTRY_COMPARE(gridview->highlightItem()->y(), gridview->currentItem()->y()); QTRY_COMPARE(gridview->highlightItem()->x(), gridview->currentItem()->x()); gridview->setCurrentIndex(2); QTRY_COMPARE(gridview->currentIndex(), 2); - QTRY_COMPARE(gridview->currentItem(), findItem(viewport, "wrapper", 2)); + QTRY_COMPARE(gridview->currentItem(), findItem(contentItem, "wrapper", 2)); QTRY_COMPARE(gridview->highlightItem()->y(), gridview->currentItem()->y()); QTRY_COMPARE(gridview->highlightItem()->x(), gridview->currentItem()->x()); } diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index 8ff6e56..048f0f3 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -336,24 +336,24 @@ void tst_QDeclarativeListView::items() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); QTRY_VERIFY(testObject->error() == false); QTRY_VERIFY(listview->highlightItem() != 0); QTRY_COMPARE(listview->count(), model.count()); - QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item // current item should be first item - QTRY_COMPARE(listview->currentItem(), findItem(viewport, "wrapper", 0)); + QTRY_COMPARE(listview->currentItem(), findItem(contentItem, "wrapper", 0)); for (int i = 0; i < model.count(); ++i) { - QDeclarativeText *name = findItem(viewport, "textName", i); + QDeclarativeText *name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - QDeclarativeText *number = findItem(viewport, "textNumber", i); + QDeclarativeText *number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -382,7 +382,7 @@ void tst_QDeclarativeListView::items() T model2; ctxt->setContextProperty("testModel", &model2); - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); QTRY_VERIFY(itemCount == 0); QTRY_COMPARE(listview->highlightResizeSpeed(), 1000.0); @@ -414,14 +414,14 @@ void tst_QDeclarativeListView::changed() QDeclarativeFlickable *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.modifyItem(1, "Will", "9876"); - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); @@ -450,34 +450,34 @@ void tst_QDeclarativeListView::inserted() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.insertItem(1, "Will", "9876"); - QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); QTRY_COMPARE(item->y(), i*20.0); } model.insertItem(0, "Foo", "1111"); // zero index, and current item - QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(contentItem->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item - name = findItem(viewport, "textName", 0); + name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(0)); - number = findItem(viewport, "textNumber", 0); + number = findItem(contentItem, "textNumber", 0); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); @@ -485,7 +485,7 @@ void tst_QDeclarativeListView::inserted() // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); QTRY_COMPARE(item->y(), i*20.0); } @@ -501,13 +501,13 @@ void tst_QDeclarativeListView::inserted() // Confirm items positioned correctly for (int i = 5; i < 5+15; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.0 - 20.0); } -// QTRY_COMPARE(listview->viewportHeight(), model.count() * 20.0); +// QTRY_COMPARE(listview->contentItemHeight(), model.count() * 20.0); delete canvas; } @@ -534,22 +534,22 @@ void tst_QDeclarativeListView::removed(bool animated) QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.removeItem(1); - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*20); @@ -560,17 +560,17 @@ void tst_QDeclarativeListView::removed(bool animated) QTest::qWait(300); - name = findItem(viewport, "textName", 0); + name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(0)); - number = findItem(viewport, "textNumber", 0); + number = findItem(contentItem, "textNumber", 0); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(),i*20.0 + 20.0); @@ -581,9 +581,9 @@ void tst_QDeclarativeListView::removed(bool animated) qApp->processEvents(); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(),i*20.0+20.0); @@ -598,7 +598,7 @@ void tst_QDeclarativeListView::removed(bool animated) // Confirm items positioned correctly for (int i = 2; i < 18; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(),40+i*20.0); @@ -617,9 +617,9 @@ void tst_QDeclarativeListView::removed(bool animated) QTest::qWait(300); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(),40+i*20.0); @@ -665,8 +665,8 @@ void tst_QDeclarativeListView::clear() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.clear(); @@ -699,29 +699,29 @@ void tst_QDeclarativeListView::moved() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); model.moveItem(1, 4); - QDeclarativeText *name = findItem(viewport, "textName", 1); + QDeclarativeText *name = findItem(contentItem, "textName", 1); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(1)); - QDeclarativeText *number = findItem(viewport, "textNumber", 1); + QDeclarativeText *number = findItem(contentItem, "textNumber", 1); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(1)); - name = findItem(viewport, "textName", 4); + name = findItem(contentItem, "textName", 4); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(4)); - number = findItem(viewport, "textNumber", 4); + number = findItem(contentItem, "textNumber", 4); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(4)); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*20); @@ -734,14 +734,14 @@ void tst_QDeclarativeListView::moved() // Confirm items positioned correctly and indexes correct for (int i = 3; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.0 + 20); - name = findItem(viewport, "textName", i); + name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - number = findItem(viewport, "textNumber", i); + number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -751,14 +751,14 @@ void tst_QDeclarativeListView::moved() // Confirm items positioned correctly and indexes correct for (int i = 3; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.0 + 20); - name = findItem(viewport, "textName", i); + name = findItem(contentItem, "textName", i); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(i)); - number = findItem(viewport, "textNumber", i); + number = findItem(contentItem, "textNumber", i); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(i)); } @@ -787,22 +787,22 @@ void tst_QDeclarativeListView::enforceRange() QTRY_COMPARE(listview->preferredHighlightEnd(), 100.0); QTRY_COMPARE(listview->highlightRangeMode(), QDeclarativeListView::StrictlyEnforceRange); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); // view should be positioned at the top of the range. - QDeclarativeItem *item = findItem(viewport, "wrapper", 0); + QDeclarativeItem *item = findItem(contentItem, "wrapper", 0); QTRY_VERIFY(item); QTRY_COMPARE(listview->contentY(), -100.0); - QDeclarativeText *name = findItem(viewport, "textName", 0); + QDeclarativeText *name = findItem(contentItem, "textName", 0); QTRY_VERIFY(name != 0); QTRY_COMPARE(name->text(), model.name(0)); - QDeclarativeText *number = findItem(viewport, "textNumber", 0); + QDeclarativeText *number = findItem(contentItem, "textNumber", 0); QTRY_VERIFY(number != 0); QTRY_COMPARE(number->text(), model.number(0)); - // Check currentIndex is updated when viewport moves + // Check currentIndex is updated when contentItem moves listview->setContentY(20); QTRY_COMPARE(listview->currentIndex(), 6); @@ -838,13 +838,13 @@ void tst_QDeclarativeListView::spacing() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*20); @@ -854,9 +854,9 @@ void tst_QDeclarativeListView::spacing() QTRY_VERIFY(listview->spacing() == 10); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*30); @@ -865,9 +865,9 @@ void tst_QDeclarativeListView::spacing() listview->setSpacing(0); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.0); @@ -893,13 +893,13 @@ void tst_QDeclarativeListView::sections() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); QTRY_VERIFY(item); QTRY_COMPARE(item->y(), qreal(i*20 + ((i+4)/5) * 20)); } @@ -908,29 +908,29 @@ void tst_QDeclarativeListView::sections() model.removeItem(5); // New section header created - QDeclarativeItem *item = findItem(viewport, "wrapper", 5); + QDeclarativeItem *item = findItem(contentItem, "wrapper", 5); QTRY_VERIFY(item); QTRY_COMPARE(item->height(), 40.0); model.insertItem(3, "New Item", "0"); // Section header moved - item = findItem(viewport, "wrapper", 5); + item = findItem(contentItem, "wrapper", 5); QTRY_VERIFY(item); QTRY_COMPARE(item->height(), 20.0); - item = findItem(viewport, "wrapper", 6); + item = findItem(contentItem, "wrapper", 6); QTRY_VERIFY(item); QTRY_COMPARE(item->height(), 40.0); // insert item which will become a section header model.insertItem(6, "Replace header", "1"); - item = findItem(viewport, "wrapper", 6); + item = findItem(contentItem, "wrapper", 6); QTRY_VERIFY(item); QTRY_COMPARE(item->height(), 40.0); - item = findItem(viewport, "wrapper", 7); + item = findItem(contentItem, "wrapper", 7); QTRY_VERIFY(item); QTRY_COMPARE(item->height(), 20.0); @@ -942,7 +942,7 @@ void tst_QDeclarativeListView::sections() listview->setContentY(20); QTRY_COMPARE(listview->currentSection(), QString("0")); - item = findItem(viewport, "wrapper", 1); + item = findItem(contentItem, "wrapper", 1); QTRY_VERIFY(item); QTRY_COMPARE(item->height(), 20.0); @@ -970,14 +970,14 @@ void tst_QDeclarativeListView::currentIndex() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); // current item should be 20th item at startup // and current item should be in view QCOMPARE(listview->currentIndex(), 20); QCOMPARE(listview->contentY(), 99.0); - QCOMPARE(listview->currentItem(), findItem(viewport, "wrapper", 20)); + QCOMPARE(listview->currentItem(), findItem(contentItem, "wrapper", 20)); QCOMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); // no wrap @@ -1051,8 +1051,8 @@ void tst_QDeclarativeListView::itemList() QDeclarativeListView *listview = findItem(canvas->rootObject(), "view"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); QDeclarativeVisualItemModel *model = canvas->rootObject()->findChild("itemModel"); QTRY_VERIFY(model != 0); @@ -1060,21 +1060,21 @@ void tst_QDeclarativeListView::itemList() QTRY_VERIFY(model->count() == 3); QTRY_COMPARE(listview->currentIndex(), 0); - QDeclarativeItem *item = findItem(viewport, "item1"); + QDeclarativeItem *item = findItem(contentItem, "item1"); QTRY_VERIFY(item); QTRY_COMPARE(item->x(), 0.0); - QDeclarativeText *text = findItem(viewport, "text1"); + QDeclarativeText *text = findItem(contentItem, "text1"); QTRY_VERIFY(text); QTRY_COMPARE(text->text(), QLatin1String("index: 0")); listview->setCurrentIndex(2); - item = findItem(viewport, "item3"); + item = findItem(contentItem, "item3"); QTRY_VERIFY(item); QTRY_COMPARE(item->x(), 480.0); - text = findItem(viewport, "text3"); + text = findItem(contentItem, "text3"); QTRY_VERIFY(text); QTRY_COMPARE(text->text(), QLatin1String("index: 2")); @@ -1101,16 +1101,16 @@ void tst_QDeclarativeListView::cacheBuffer() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_VERIFY(listview->delegate() != 0); QTRY_VERIFY(listview->model() != 0); QTRY_VERIFY(listview->highlight() != 0); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*20); @@ -1119,12 +1119,12 @@ void tst_QDeclarativeListView::cacheBuffer() testObject->setCacheBuffer(400); QTRY_VERIFY(listview->cacheBuffer() == 400); - int newItemCount = findItems(viewport, "wrapper").count(); + int newItemCount = findItems(contentItem, "wrapper").count(); QTRY_VERIFY(newItemCount > itemCount); // Confirm items positioned correctly for (int i = 0; i < model.count() && i < newItemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*20); @@ -1153,13 +1153,13 @@ void tst_QDeclarativeListView::positionViewAtIndex() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.); @@ -1170,9 +1170,9 @@ void tst_QDeclarativeListView::positionViewAtIndex() QTRY_COMPARE(listview->contentY(), 60.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 3; i < model.count() && i < itemCount-3-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.); @@ -1183,9 +1183,9 @@ void tst_QDeclarativeListView::positionViewAtIndex() QTRY_COMPARE(listview->contentY(), 440.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 22; i < model.count() && i < itemCount-22-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.); @@ -1196,9 +1196,9 @@ void tst_QDeclarativeListView::positionViewAtIndex() QTRY_COMPARE(listview->contentY(), 480.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 24; i < model.count() && i < itemCount-24-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.); @@ -1209,9 +1209,9 @@ void tst_QDeclarativeListView::positionViewAtIndex() QTRY_COMPARE(listview->contentY(), 0.); // Confirm items positioned correctly - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount-1; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->y(), i*20.); @@ -1278,13 +1278,13 @@ void tst_QDeclarativeListView::resetModel() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_COMPARE(listview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { - QDeclarativeText *display = findItem(viewport, "displayText", i); + QDeclarativeText *display = findItem(contentItem, "displayText", i); QTRY_VERIFY(display != 0); QTRY_COMPARE(display->text(), strings.at(i)); } @@ -1296,7 +1296,7 @@ void tst_QDeclarativeListView::resetModel() QTRY_COMPARE(listview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { - QDeclarativeText *display = findItem(viewport, "displayText", i); + QDeclarativeText *display = findItem(contentItem, "displayText", i); QTRY_VERIFY(display != 0); QTRY_COMPARE(display->text(), strings.at(i)); } @@ -1455,8 +1455,8 @@ void tst_QDeclarativeListView::QTBUG_9791() QDeclarativeListView *listview = qobject_cast(canvas->rootObject()); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_VERIFY(listview->delegate() != 0); QTRY_VERIFY(listview->model() != 0); @@ -1464,11 +1464,11 @@ void tst_QDeclarativeListView::QTBUG_9791() qApp->processEvents(); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); QVERIFY(itemCount == 3); for (int i = 0; i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_COMPARE(item->x(), i*300.0); @@ -1495,17 +1495,17 @@ void tst_QDeclarativeListView::manualHighlight() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); QTRY_COMPARE(listview->currentIndex(), 0); - QTRY_COMPARE(listview->currentItem(), findItem(viewport, "wrapper", 0)); + QTRY_COMPARE(listview->currentItem(), findItem(contentItem, "wrapper", 0)); QTRY_COMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); listview->setCurrentIndex(2); QTRY_COMPARE(listview->currentIndex(), 2); - QTRY_COMPARE(listview->currentItem(), findItem(viewport, "wrapper", 2)); + QTRY_COMPARE(listview->currentItem(), findItem(contentItem, "wrapper", 2)); QTRY_COMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); } @@ -1529,13 +1529,13 @@ void tst_QDeclarativeListView::QTBUG_11105() QDeclarativeListView *listview = findItem(canvas->rootObject(), "list"); QTRY_VERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QTRY_VERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); // Confirm items positioned correctly - int itemCount = findItems(viewport, "wrapper").count(); + int itemCount = findItems(contentItem, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { - QDeclarativeItem *item = findItem(viewport, "wrapper", i); + QDeclarativeItem *item = findItem(contentItem, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; QTRY_VERIFY(item); QTRY_VERIFY(item->y() == i*20); @@ -1550,7 +1550,7 @@ void tst_QDeclarativeListView::QTBUG_11105() ctxt->setContextProperty("testModel", &model2); - itemCount = findItems(viewport, "wrapper").count(); + itemCount = findItems(contentItem, "wrapper").count(); QCOMPARE(itemCount, 5); delete canvas; diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp index 90c9c6f..43d4d06 100644 --- a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp +++ b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp @@ -173,10 +173,10 @@ void tst_qdeclarativevisualdatamodel::objectListModel() QDeclarativeListView *listview = qobject_cast(view.rootObject()); QVERIFY(listview != 0); - QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QDeclarativeItem *contentItem = listview->contentItem(); + QVERIFY(contentItem != 0); - QDeclarativeText *name = findItem(viewport, "name", 0); + QDeclarativeText *name = findItem(contentItem, "name", 0); QCOMPARE(name->text(), QString("Item 1")); dataList[0]->setProperty("name", QLatin1String("Changed")); -- cgit v0.12 From 768209aebcbc66fec3a600be0a0f0e58d9f405d8 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Thu, 24 Jun 2010 15:56:05 +1000 Subject: Restore neutral movement state if a view is manually positioned. Make sure the previous movement state is cancelled if contentX or contentY are set directly. Task-number: QTBUG-11650 --- .../graphicsitems/qdeclarativeflickable_p.h | 4 ++-- .../graphicsitems/qdeclarativegridview.cpp | 21 +++++++++++++++++++-- .../graphicsitems/qdeclarativegridview_p.h | 3 +++ .../graphicsitems/qdeclarativelistview.cpp | 21 +++++++++++++++++++-- .../graphicsitems/qdeclarativelistview_p.h | 3 +++ 5 files changed, 46 insertions(+), 6 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h index be4846e..eb738d9 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h @@ -112,10 +112,10 @@ public: void setContentHeight(qreal); qreal contentX() const; - void setContentX(qreal pos); + virtual void setContentX(qreal pos); qreal contentY() const; - void setContentY(qreal pos); + virtual void setContentY(qreal pos); bool isMoving() const; bool isMovingHorizontally() const; diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index af9b04e..dda1efb 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -151,9 +151,9 @@ public: void setPosition(qreal pos) { Q_Q(QDeclarativeGridView); if (flow == QDeclarativeGridView::LeftToRight) - q->setContentY(pos); + q->QDeclarativeFlickable::setContentY(pos); else - q->setContentX(pos); + q->QDeclarativeFlickable::setContentX(pos); } int size() const { Q_Q(const QDeclarativeGridView); @@ -1742,6 +1742,22 @@ void QDeclarativeGridView::setHeader(QDeclarativeComponent *header) } } +void QDeclarativeGridView::setContentX(qreal pos) +{ + Q_D(QDeclarativeGridView); + // Positioning the view manually should override any current movement state + d->moveReason = QDeclarativeGridViewPrivate::Other; + QDeclarativeFlickable::setContentX(pos); +} + +void QDeclarativeGridView::setContentY(qreal pos) +{ + Q_D(QDeclarativeGridView); + // Positioning the view manually should override any current movement state + d->moveReason = QDeclarativeGridViewPrivate::Other; + QDeclarativeFlickable::setContentY(pos); +} + bool QDeclarativeGridView::event(QEvent *event) { Q_D(QDeclarativeGridView); @@ -2144,6 +2160,7 @@ void QDeclarativeGridView::componentComplete() d->highlight->setPosition(d->currentItem->colPos(), d->currentItem->rowPos()); d->updateTrackedItem(); } + d->moveReason = QDeclarativeGridViewPrivate::Other; d->fixupPosition(); } } diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index 021aad9..64b91d8 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -151,6 +151,9 @@ public: QDeclarativeComponent *header() const; void setHeader(QDeclarativeComponent *); + virtual void setContentX(qreal pos); + virtual void setContentY(qreal pos); + enum PositionMode { Beginning, Center, End, Visible, Contain }; Q_INVOKABLE void positionViewAtIndex(int index, int mode); diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 59bb178..6fc066d 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -216,9 +216,9 @@ public: void setPosition(qreal pos) { Q_Q(QDeclarativeListView); if (orient == QDeclarativeListView::Vertical) - q->setContentY(pos); + q->QDeclarativeFlickable::setContentY(pos); else - q->setContentX(pos); + q->QDeclarativeFlickable::setContentX(pos); } qreal size() const { Q_Q(const QDeclarativeListView); @@ -2182,6 +2182,22 @@ void QDeclarativeListView::setHeader(QDeclarativeComponent *header) } } +void QDeclarativeListView::setContentX(qreal pos) +{ + Q_D(QDeclarativeListView); + // Positioning the view manually should override any current movement state + d->moveReason = QDeclarativeListViewPrivate::Other; + QDeclarativeFlickable::setContentX(pos); +} + +void QDeclarativeListView::setContentY(qreal pos) +{ + Q_D(QDeclarativeListView); + // Positioning the view manually should override any current movement state + d->moveReason = QDeclarativeListViewPrivate::Other; + QDeclarativeFlickable::setContentY(pos); +} + bool QDeclarativeListView::event(QEvent *event) { Q_D(QDeclarativeListView); @@ -2551,6 +2567,7 @@ void QDeclarativeListView::componentComplete() d->highlight->setPosition(d->currentItem->position()); d->updateTrackedItem(); } + d->moveReason = QDeclarativeListViewPrivate::Other; d->fixupPosition(); } } diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h index d6e8023..505f659 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview_p.h +++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h @@ -198,6 +198,9 @@ public: QDeclarativeComponent *header() const; void setHeader(QDeclarativeComponent *); + virtual void setContentX(qreal pos); + virtual void setContentY(qreal pos); + static QDeclarativeListViewAttached *qmlAttachedProperties(QObject *); enum PositionMode { Beginning, Center, End, Visible, Contain }; -- cgit v0.12 From a7d6605dd3e3419eb2c0ec96c3bb69b686c8ea42 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 24 Jun 2010 10:17:30 +0200 Subject: Added a note to desupport VC2010 64-bit VC2010 has a bug that makes optimized 64-bit code crash. Task-Number: QTBUG-11445 --- doc/src/platforms/compiler-notes.qdoc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/src/platforms/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc index 7eb92e0..c6ecd68 100644 --- a/doc/src/platforms/compiler-notes.qdoc +++ b/doc/src/platforms/compiler-notes.qdoc @@ -237,8 +237,6 @@ Qt works with the Standard Edition, the Professional Edition and Team System Edition of Visual Studio 2005. - We also test Qt 4 on Windows XP with Visual Studio .NET and Visual Studio 2003. - In order to use Qt with the Visual Studio 2005/2008 Express Edition you need to download and install the platform SDK. Due to limitations in the Express Edition it is not possible for us to install the Qt Visual @@ -266,6 +264,10 @@ from Microsoft. See this \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry} for more information. + + There currently is a problem when compiling Qt with Visual Studio 2010 for 64-bit. + Its optimizer causes trouble and crashes for the release builds and it is not supported + in that configuration. See task http://bugreports.qt.nokia.com/browse/QTBUG-11445. \section1 IBM xlC (AIX) -- cgit v0.12 From d63e7d8ec0c9337999a3d90b594eb3e955145de9 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Thu, 24 Jun 2010 10:34:56 +0200 Subject: QKeyEvent::text() inconsistency between Linux and Mac For a key event triggered by the cursor keys, QKeyEvent::text() returns char with value 0x14 or similar. This patch (Cocoa only)will remove text from all key events for the unicode range 0xF700-0xF747. This is part of the corporate unicode range used by apple for keyboard function keys. [http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/CORPCHAR.TXT] Task-number: QTBUG-11225 Reviewed-by: Bradley T. Hughes --- src/gui/kernel/qkeymapper_mac.cpp | 15 ++++++++++++++- src/gui/kernel/qt_cocoa_helpers_mac.mm | 7 ++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/gui/kernel/qkeymapper_mac.cpp b/src/gui/kernel/qkeymapper_mac.cpp index 873b8f9..3dc6afc 100644 --- a/src/gui/kernel/qkeymapper_mac.cpp +++ b/src/gui/kernel/qkeymapper_mac.cpp @@ -866,14 +866,27 @@ bool QKeyMapperPrivate::translateKeyEvent(QWidget *widget, EventHandlerCallRef e UInt32 macModifiers = 0; GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, 0, sizeof(macModifiers), 0, &macModifiers); +#ifdef QT_MAC_USE_COCOA + // The unicode characters in the range 0xF700-0xF747 are reserved + // by Mac OS X for transient use as keyboard function keys. We + // wont send 'text' for such key events. This is done to match + // behavior on other platforms. + unsigned int *unicodeKey = (unsigned int*)info; + if (*unicodeKey >= 0xf700 && *unicodeKey <= 0xf747) + text = QString(); + bool isAccepted; +#endif handled_event = QKeyMapper::sendKeyEvent(widget, grab, (ekind == kEventRawKeyUp) ? QEvent::KeyRelease : QEvent::KeyPress, qtKey, modifiers, text, ekind == kEventRawKeyRepeat, 0, macScanCode, macVirtualKey, macModifiers #ifdef QT_MAC_USE_COCOA - ,static_cast(info) + ,&isAccepted #endif ); +#ifdef QT_MAC_USE_COCOA + *unicodeKey = (unsigned int)isAccepted; +#endif } return handled_event; } diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm index 8cef03c..3fc27f4 100644 --- a/src/gui/kernel/qt_cocoa_helpers_mac.mm +++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm @@ -682,10 +682,12 @@ bool qt_dispatchKeyEvent(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEve NSEvent *event = static_cast(keyEvent); EventRef key_event = static_cast(const_cast([event eventRef])); Q_ASSERT(key_event); + unsigned int info = 0; if ([event type] == NSKeyDown) { NSString *characters = [event characters]; unichar value = [characters characterAtIndex:0]; qt_keymapper_private()->updateKeyMap(0, key_event, (void *)&value); + info = value; } // Redirect keys to alien widgets. @@ -701,9 +703,8 @@ bool qt_dispatchKeyEvent(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEve if (mustUseCocoaKeyEvent()) return qt_dispatchKeyEventWithCocoa(keyEvent, widgetToGetEvent); - bool isAccepted; - bool consumed = qt_keymapper_private()->translateKeyEvent(widgetToGetEvent, 0, key_event, &isAccepted, true); - return consumed && isAccepted; + bool consumed = qt_keymapper_private()->translateKeyEvent(widgetToGetEvent, 0, key_event, &info, true); + return consumed && (info != 0); #endif } -- cgit v0.12 From b60be84ad8121f9562f1ab4193136426df6dc6d4 Mon Sep 17 00:00:00 2001 From: axis Date: Thu, 24 Jun 2010 10:18:18 +0200 Subject: Fixed memory restrictions not being passed on to elf2e32. Task: QTBUG-11351 RevBy: Trust me --- mkspecs/common/symbian/symbian-makefile.conf | 2 -- mkspecs/features/symbian/symbian_building.prf | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/mkspecs/common/symbian/symbian-makefile.conf b/mkspecs/common/symbian/symbian-makefile.conf index ab0c5b9..b1ca367 100644 --- a/mkspecs/common/symbian/symbian-makefile.conf +++ b/mkspecs/common/symbian/symbian-makefile.conf @@ -14,8 +14,6 @@ QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< QMAKE_ELF2E32_FLAGS = --dlldata \ - --heap=0x00020000,0x00800000 \ - --stack=0x00014000 \ --fpu=softvfp \ --unfrozen \ --compressionmethod bytepair \ diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf index 9fc4d1e..5861bb6 100644 --- a/mkspecs/features/symbian/symbian_building.prf +++ b/mkspecs/features/symbian/symbian_building.prf @@ -8,6 +8,9 @@ QMAKE_LFLAGS += -Ttext 0x80000 -Tdata 0x400000 } +isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000 +isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000 + symbianObjdir=$$OBJECTS_DIR isEmpty(symbianObjdir) { symbianObjdir = . @@ -114,6 +117,8 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { --dso=$$symbianObjdir/$${TARGET}.dso \ --defoutput=$$symbianObjdir/$${TARGET}.def \ --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll \ + --heap=$$join(TARGET.EPOCHEAPSIZE, ",") \ + --stack=$$TARGET.EPOCSTACKSIZE \ $$elf2e32_LIBPATH \ $$capability \ $$QMAKE_ELF2E32_FLAGS \ @@ -163,6 +168,8 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@.*") { --elfinput=$${symbianDestdir}/$${TARGET}.sym \ --output=$${symbianDestdir}/$${TARGET}.exe \ --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe \ + --heap=$$join(TARGET.EPOCHEAPSIZE, ",") \ + --stack=$$TARGET.EPOCSTACKSIZE \ $$elf2e32_LIBPATH \ $$capability \ $$QMAKE_ELF2E32_FLAGS \ -- cgit v0.12 From 9f7a9b1272357a06cd721d64e66fcde1921bd325 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 24 Jun 2010 10:56:08 +0200 Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to a80fd59e3b3b18116803a14e6369345933994236 * Disable data structure packing with RVCT, as it appears that the compiler miscompiles the code. --- src/3rdparty/harfbuzz/src/harfbuzz-global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-global.h b/src/3rdparty/harfbuzz/src/harfbuzz-global.h index 5b2b679..bccd6a2 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-global.h +++ b/src/3rdparty/harfbuzz/src/harfbuzz-global.h @@ -39,7 +39,7 @@ #define HB_END_HEADER /* nothing */ #endif -#if defined(__GNUC__) || defined(__ARMCC__) || defined(__CC_ARM) || defined(_MSC_VER) +#if defined(__GNUC__) || defined(_MSC_VER) #define HB_USE_PACKED_STRUCTS #endif -- cgit v0.12 From d8ffdacc0aa0b22a02b8ac3bae03570049b65d5d Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 24 Jun 2010 10:56:08 +0200 Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to a80fd59e3b3b18116803a14e6369345933994236 * Disable data structure packing with RVCT, as it appears that the compiler miscompiles the code. --- src/3rdparty/harfbuzz/src/harfbuzz-global.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-global.h b/src/3rdparty/harfbuzz/src/harfbuzz-global.h index 5b2b679..bccd6a2 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-global.h +++ b/src/3rdparty/harfbuzz/src/harfbuzz-global.h @@ -39,7 +39,7 @@ #define HB_END_HEADER /* nothing */ #endif -#if defined(__GNUC__) || defined(__ARMCC__) || defined(__CC_ARM) || defined(_MSC_VER) +#if defined(__GNUC__) || defined(_MSC_VER) #define HB_USE_PACKED_STRUCTS #endif -- cgit v0.12 From 06aaa4bc68a1ee10d2a7bb8de4928c92ce84546d Mon Sep 17 00:00:00 2001 From: axis Date: Thu, 24 Jun 2010 11:58:42 +0200 Subject: Revert "Fixing race condition in qeventdispatcher_symbian.cpp code path" This reverts commit 3a9ca8ba50a63e564c15023f65cbac36d365d309. It's the wrong fix for the problem. The socket operations in the select thread are not supposed to be thread safe. It is thread safe between the select thread and the caller thread, but not if there are more than one caller thread. Ensuring complete thread safety would probably require fixes in other areas as well. The correct fix is for the client to ensure that calls to the socket registering functions are either serialized or contained within one thread. Task: QT-3496 RevBy: Aleksandar Sasha Babic --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 101 ++++++++++-------------- src/corelib/kernel/qeventdispatcher_symbian_p.h | 5 -- 2 files changed, 40 insertions(+), 66 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index 75b7619..d00a623 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -114,13 +114,9 @@ public: // is in select call if (m_selectCallMutex->tryLock()) { m_selectCallMutex->unlock(); - - //m_threadMutex->lock(); - //bHasThreadLock = true; return; } - char dummy = 0; qt_pipe_write(fd, &dummy, 1); @@ -409,14 +405,11 @@ void QSelectThread::run() FD_ZERO(&exceptionfds); int maxfd = 0; - { - QMutexLocker asoLocker(&m_AOStatusesMutex); - maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Read, &readfds)); - maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Write, &writefds)); - maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Exception, &exceptionfds)); - maxfd = qMax(maxfd, m_pipeEnds[0]); - maxfd++; - } + maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Read, &readfds)); + maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Write, &writefds)); + maxfd = qMax(maxfd, updateSocketSet(QSocketNotifier::Exception, &exceptionfds)); + maxfd = qMax(maxfd, m_pipeEnds[0]); + maxfd++; FD_SET(m_pipeEnds[0], &readfds); @@ -461,42 +454,40 @@ void QSelectThread::run() FD_ZERO(&readfds); FD_ZERO(&writefds); FD_ZERO(&exceptionfds); - { - QMutexLocker asoLocker(&m_AOStatusesMutex); - for (QHash::const_iterator i = m_AOStatuses.begin(); - i != m_AOStatuses.end(); ++i) { + for (QHash::const_iterator i = m_AOStatuses.begin(); + i != m_AOStatuses.end(); ++i) { - fd_set onefds; - FD_ZERO(&onefds); - FD_SET(i.key()->socket(), &onefds); + fd_set onefds; + FD_ZERO(&onefds); + FD_SET(i.key()->socket(), &onefds); - fd_set excfds; - FD_ZERO(&excfds); - FD_SET(i.key()->socket(), &excfds); + fd_set excfds; + FD_ZERO(&excfds); + FD_SET(i.key()->socket(), &excfds); - maxfd = i.key()->socket() + 1; + maxfd = i.key()->socket() + 1; - struct timeval timeout; - timeout.tv_sec = 0; - timeout.tv_usec = 0; + struct timeval timeout; + timeout.tv_sec = 0; + timeout.tv_usec = 0; - ret = 0; + ret = 0; - if(i.key()->type() == QSocketNotifier::Read) { - ret = ::select(maxfd, &onefds, 0, &excfds, &timeout); - if(ret != 0) FD_SET(i.key()->socket(), &readfds); - } else if(i.key()->type() == QSocketNotifier::Write) { - ret = ::select(maxfd, 0, &onefds, &excfds, &timeout); - if(ret != 0) FD_SET(i.key()->socket(), &writefds); - } + if(i.key()->type() == QSocketNotifier::Read) { + ret = ::select(maxfd, &onefds, 0, &excfds, &timeout); + if(ret != 0) FD_SET(i.key()->socket(), &readfds); + } else if(i.key()->type() == QSocketNotifier::Write) { + ret = ::select(maxfd, 0, &onefds, &excfds, &timeout); + if(ret != 0) FD_SET(i.key()->socket(), &writefds); + } - } // end for + } // end for + + // traversed all, so update + updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); + updateActivatedNotifiers(QSocketNotifier::Read, &readfds); + updateActivatedNotifiers(QSocketNotifier::Write, &writefds); - // traversed all, so update - updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); - updateActivatedNotifiers(QSocketNotifier::Read, &readfds); - updateActivatedNotifiers(QSocketNotifier::Write, &writefds); - } break; case EINTR: // Should never occur on Symbian, but this is future proof! default: @@ -505,12 +496,9 @@ void QSelectThread::run() break; } } else { - { - QMutexLocker asoLocker(&m_AOStatusesMutex); - updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); - updateActivatedNotifiers(QSocketNotifier::Read, &readfds); - updateActivatedNotifiers(QSocketNotifier::Write, &writefds); - } + updateActivatedNotifiers(QSocketNotifier::Exception, &exceptionfds); + updateActivatedNotifiers(QSocketNotifier::Read, &readfds); + updateActivatedNotifiers(QSocketNotifier::Write, &writefds); } m_waitCond.wait(&m_mutex); @@ -529,16 +517,12 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta QMutexLocker locker(&m_grabberMutex); - { - // first do the thing - QMutexLocker aosLocker(&m_AOStatusesMutex); - Q_ASSERT(!m_AOStatuses.contains(notifier)); - m_AOStatuses.insert(notifier, status); - } - - // and now tell it to the others QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); + Q_ASSERT(!m_AOStatuses.contains(notifier)); + + m_AOStatuses.insert(notifier, status); + m_waitCond.wakeAll(); } @@ -546,15 +530,10 @@ void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) { QMutexLocker locker(&m_grabberMutex); - { - // first do the thing - QMutexLocker aosLocker(&m_AOStatusesMutex); - m_AOStatuses.remove(notifier); - } - - // and now tell it to the others QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); + m_AOStatuses.remove(notifier); + m_waitCond.wakeAll(); } diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h index 68d5833..7021314 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian_p.h +++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h @@ -231,11 +231,6 @@ private: // causes later in locking // of the thread in waitcond QMutex m_selectCallMutex; - - // Argh ... not again - // one more unprotected - // resource is m_AOStatuses - QMutex m_AOStatusesMutex; }; class Q_CORE_EXPORT CQtActiveScheduler : public CActiveScheduler -- cgit v0.12 From 7ae5285132db6c435e91ab097f41097217d68a2c Mon Sep 17 00:00:00 2001 From: axis Date: Thu, 24 Jun 2010 10:57:23 +0200 Subject: Revert "Fixing the race condition in event dispatcher implementation on" This reverts commit 5f21450a61ba2459e6dc5b08b236b15a067bf81f. It's the wrong fix for the problem. The socket operations in the select thread are not supposed to be thread safe. It is thread safe between the select thread and the caller thread, but not if there are more than one caller thread. Ensuring complete thread safety would probably require fixes in other areas as well. The correct fix is for the client to ensure that calls to the socket registering functions are either serialized or contained within one thread. Task: QT-3358 RevBy: Aleksandar Sasha Babic --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 46 ++++++------------------- src/corelib/kernel/qeventdispatcher_symbian_p.h | 20 ----------- 2 files changed, 10 insertions(+), 56 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index d00a623..826caf2 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -100,40 +100,25 @@ static inline int qt_socket_select(int nfds, fd_set *readfds, fd_set *writefds, class QSelectMutexGrabber { public: - QSelectMutexGrabber(int fd, QMutex *threadMutex, QMutex *selectCallMutex) - : m_threadMutex(threadMutex), m_selectCallMutex(selectCallMutex), bHasThreadLock(false) + QSelectMutexGrabber(int fd, QMutex *mutex) + : m_mutex(mutex) { - // see if selectThread is waiting m_waitCond - // if yes ... dont write to pipe - if (m_threadMutex->tryLock()) { - bHasThreadLock = true; + if (m_mutex->tryLock()) return; - } - - // still check that SelectThread - // is in select call - if (m_selectCallMutex->tryLock()) { - m_selectCallMutex->unlock(); - return; - } char dummy = 0; qt_pipe_write(fd, &dummy, 1); - m_threadMutex->lock(); - bHasThreadLock = true; + m_mutex->lock(); } ~QSelectMutexGrabber() { - if(bHasThreadLock) - m_threadMutex->unlock(); + m_mutex->unlock(); } private: - QMutex *m_threadMutex; - QMutex *m_selectCallMutex; - bool bHasThreadLock; + QMutex *m_mutex; }; /* @@ -415,12 +400,7 @@ void QSelectThread::run() int ret; int savedSelectErrno; - { - // helps fighting the race condition between - // selctthread and new socket requests (cancel, restart ...) - QMutexLocker locker(&m_selectCallMutex); - ret = qt_socket_select(maxfd, &readfds, &writefds, &exceptionfds, 0); - } + ret = qt_socket_select(maxfd, &readfds, &writefds, &exceptionfds, 0); savedSelectErrno = errno; char buffer; @@ -515,9 +495,7 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta start(); } - QMutexLocker locker(&m_grabberMutex); - - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); Q_ASSERT(!m_AOStatuses.contains(notifier)); @@ -528,9 +506,7 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) { - QMutexLocker locker(&m_grabberMutex); - - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); m_AOStatuses.remove(notifier); @@ -539,9 +515,7 @@ void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) void QSelectThread::restart() { - QMutexLocker locker(&m_grabberMutex); - - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex, &m_selectCallMutex); + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); m_waitCond.wakeAll(); } diff --git a/src/corelib/kernel/qeventdispatcher_symbian_p.h b/src/corelib/kernel/qeventdispatcher_symbian_p.h index 7021314..8a9c9a0 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian_p.h +++ b/src/corelib/kernel/qeventdispatcher_symbian_p.h @@ -211,26 +211,6 @@ private: QMutex m_mutex; QWaitCondition m_waitCond; bool m_quit; - - // to protect when several - // requests like: - // requestSocketEvents - // cancelSocketEvents - // kick in the same time - // all will fight for m_mutex - // - // TODO: fix more elegantely - // - QMutex m_grabberMutex; - - // this one will tell - // if selectthread is - // really in select call - // and will prevent - // writing to pipe that - // causes later in locking - // of the thread in waitcond - QMutex m_selectCallMutex; }; class Q_CORE_EXPORT CQtActiveScheduler : public CActiveScheduler -- cgit v0.12 From e9a2f4d6d0186962b0833a53882e472bfe262bb9 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 24 Jun 2010 12:03:22 +0200 Subject: Adding a known issue for VC2010 64 bit Task-Number: QTBUG-11445 --- doc/src/getting-started/known-issues.qdoc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/src/getting-started/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc index b2c39c4..0fa23f6 100644 --- a/doc/src/getting-started/known-issues.qdoc +++ b/doc/src/getting-started/known-issues.qdoc @@ -129,6 +129,14 @@ will not compile. See \l{http://bugreports.qt.nokia.com/browse/QTBUG-6297} for a workaround for QtScript. + + \o Compile errors with Microsoft Visual C++ compiler. \br + There seems to be a bug in the Microsoft compiler when compiling with O2 + optimization level in 64 bit. + This problem will result in crashes in QAbstractItemView::viewOptions(). + See \l{http://bugreports.qt.nokia.com/browse/QTBUG-11445} for updates on this + bug. + \endlist -- cgit v0.12 From 598ba59b9d2e4b28469088d4ef12407b0c27514a Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Thu, 24 Jun 2010 12:32:42 +0200 Subject: Child windows shown automatically when their parent is shown(Cocoa). While setting up the stacking order for child windows, their hidden state was never taken into consideration. Task-number: QTBUG-11239 Reviewed-by: Richard Moe Gustavsen --- src/gui/kernel/qwidget_mac.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index 280712a..a9bb691 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -2804,7 +2804,7 @@ void QWidgetPrivate::setSubWindowStacking(bool set) QList widgets = q->findChildren(); for (int i=0; iisWindow() && child->testAttribute(Qt::WA_WState_Created)) { + if (child->isWindow() && child->testAttribute(Qt::WA_WState_Created) && child->isVisibleTo(q)) { if (set) [qt_mac_window_for(q) addChildWindow:qt_mac_window_for(child) ordered:NSWindowAbove]; else -- cgit v0.12 From 4df92b8b5e7f44d7a5e2b91f23638c92512b41f9 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 24 Jun 2010 12:45:27 +0200 Subject: Don't crash when cleaning the uninitialized fontdatabase (Symbian) Applications that do not render fonts will not cause a call to initializeDb(). In that case, there will be no creation of QSymbianFontDatabaseExtras. This fix adds a NULL-pointer check before cleaning the QSymbianFontDatabaseExtras instance. Task-number: QTBUG-11683 Reviewed-by: Miikka Heikkinen --- src/gui/text/qfontdatabase_s60.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp index 5148568..0b38aab 100644 --- a/src/gui/text/qfontdatabase_s60.cpp +++ b/src/gui/text/qfontdatabase_s60.cpp @@ -162,6 +162,8 @@ void qt_cleanup_symbianFontDatabaseExtras() { const QSymbianFontDatabaseExtrasImplementation *dbExtras = static_cast(privateDb()->symbianExtras); + if (!dbExtras) + return; // initializeDb() has never been called #ifdef Q_SYMBIAN_HAS_FONTTABLE_API qDeleteAll(dbExtras->m_extrasHash); #else // Q_SYMBIAN_HAS_FONTTABLE_API -- cgit v0.12 From 6f006b105978f53b7c5bd3d17637239f308ad20d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Thu, 24 Jun 2010 12:41:26 +0200 Subject: Fixed autotest failure in fillRect_stretchToDeviceMode Swapping the length and color arguments to qt_memfill is a bad idea. Reviewed-by: Benjamin Poulain --- src/gui/painting/qdrawhelper_sse2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index e2a69ec..04fe825 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -365,7 +365,7 @@ void qt_memfill32_sse2(quint32 *dest, quint32 value, int count) void QT_FASTCALL comp_func_solid_SourceOver_sse2(uint *destPixels, int length, uint color, uint const_alpha) { if ((const_alpha & qAlpha(color)) == 255) { - qt_memfill32_sse2(destPixels, length, color); + qt_memfill32_sse2(destPixels, color, length); } else { if (const_alpha != 255) color = BYTE_MUL(color, const_alpha); -- cgit v0.12 From 20a3d8c889df2338f6edd209ca4952b9045ffb00 Mon Sep 17 00:00:00 2001 From: Kim Motoyoshi Kalland Date: Thu, 24 Jun 2010 13:07:45 +0200 Subject: Fixed some potential index-out-of-bounds issues in QImage. Added color table bounds checks when converting a color indexed image to a different pixel format. Fixed an off-by-one error in the color table bounds check in QImage::setPixel(). Fixed an autotest that was setting pixel values out of bounds. Reviewed-by: Gunnar --- src/gui/image/qimage.cpp | 26 ++++++++++++++++++++++---- tests/auto/qimage/tst_qimage.cpp | 4 ++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index bb8a994..79f266d 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -2338,6 +2338,12 @@ static bool convert_indexed8_to_ARGB_PM_inplace(QImageData *data, Qt::ImageConve const int width = data->width; const int src_pad = data->bytes_per_line - width; const int dest_pad = (dst_bytes_per_line >> 2) - width; + if (data->colortable.size() == 0) { + data->colortable.resize(256); + for (int i = 0; i < 256; ++i) + data->colortable[i] = qRgb(i, i, i); + } + const int tableSize = data->colortable.size() - 1; for (int i = 0; i < data->height; ++i) { src_data -= src_pad; @@ -2345,7 +2351,7 @@ static bool convert_indexed8_to_ARGB_PM_inplace(QImageData *data, Qt::ImageConve for (int pixI = 0; pixI < width; ++pixI) { --src_data; --dest_data; - const uint pixel = data->colortable[*src_data]; + const uint pixel = data->colortable[qMin(tableSize, *src_data)]; *dest_data = (quint32) PREMUL(pixel); } } @@ -2377,6 +2383,12 @@ static bool convert_indexed8_to_RGB_inplace(QImageData *data, Qt::ImageConversio const int width = data->width; const int src_pad = data->bytes_per_line - width; const int dest_pad = (dst_bytes_per_line >> 2) - width; + if (data->colortable.size() == 0) { + data->colortable.resize(256); + for (int i = 0; i < 256; ++i) + data->colortable[i] = qRgb(i, i, i); + } + const int tableSize = data->colortable.size() - 1; for (int i = 0; i < data->height; ++i) { src_data -= src_pad; @@ -2384,7 +2396,7 @@ static bool convert_indexed8_to_RGB_inplace(QImageData *data, Qt::ImageConversio for (int pixI = 0; pixI < width; ++pixI) { --src_data; --dest_data; - *dest_data = (quint32) data->colortable[*src_data]; + *dest_data = (quint32) data->colortable[qMin(tableSize, *src_data)]; } } @@ -2415,6 +2427,12 @@ static bool convert_indexed8_to_RGB16_inplace(QImageData *data, Qt::ImageConvers const int width = data->width; const int src_pad = data->bytes_per_line - width; const int dest_pad = (dst_bytes_per_line >> 1) - width; + if (data->colortable.size() == 0) { + data->colortable.resize(256); + for (int i = 0; i < 256; ++i) + data->colortable[i] = qRgb(i, i, i); + } + const int tableSize = data->colortable.size() - 1; for (int i = 0; i < data->height; ++i) { src_data -= src_pad; @@ -2422,7 +2440,7 @@ static bool convert_indexed8_to_RGB16_inplace(QImageData *data, Qt::ImageConvers for (int pixI = 0; pixI < width; ++pixI) { --src_data; --dest_data; - const uint pixel = data->colortable[*src_data]; + const uint pixel = data->colortable[qMin(tableSize, *src_data)]; *dest_data = qt_colorConvert(pixel, 0); } } @@ -4061,7 +4079,7 @@ void QImage::setPixel(int x, int y, uint index_or_rgb) } break; case Format_Indexed8: - if (index_or_rgb > (uint)d->colortable.size()) { + if (index_or_rgb >= (uint)d->colortable.size()) { qWarning("QImage::setPixel: Index %d out of range", index_or_rgb); return; } diff --git a/tests/auto/qimage/tst_qimage.cpp b/tests/auto/qimage/tst_qimage.cpp index 16deb03..5052114 100644 --- a/tests/auto/qimage/tst_qimage.cpp +++ b/tests/auto/qimage/tst_qimage.cpp @@ -945,11 +945,11 @@ void tst_QImage::rotate() const int n = original.colorTable().size(); for (int x = 0; x < w; ++x) { original.setPixel(x, 0, x % n); - original.setPixel(x,h - 1, n - (x % n)); + original.setPixel(x, h - 1, n - (x % n) - 1); } for (int y = 0; y < h; ++y) { original.setPixel(0, y, y % n); - original.setPixel(w - 1, y, n - (y % n)); + original.setPixel(w - 1, y, n - (y % n) - 1); } } -- cgit v0.12 From d86679ee600bd26788b5bbcd27abf078f0ec948c Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 24 Jun 2010 13:48:05 +0200 Subject: Fix import path in cppextensions declarative example. Reviewed-by: Erik Verbruggen --- examples/declarative/cppextensions/cppextensions.qmlproject | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/declarative/cppextensions/cppextensions.qmlproject b/examples/declarative/cppextensions/cppextensions.qmlproject index d4909f8..6b36284 100644 --- a/examples/declarative/cppextensions/cppextensions.qmlproject +++ b/examples/declarative/cppextensions/cppextensions.qmlproject @@ -12,5 +12,5 @@ Project { directory: "." } /* List of plugin directories passed to QML runtime */ - // importPaths: [ " ../exampleplugin " ] + importPaths: [ "plugins" ] } -- cgit v0.12 From 3119f5e2d675ba5d39e94cdae26db9eb8f373eab Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 24 Jun 2010 13:55:31 +0200 Subject: Moved the QML WebKit integration into QtWebKit.sis Reviewed-by: Alessandro Portale Reviewed-by: Janne Koskinen --- src/3rdparty/webkit/WebCore/WebCore.pro | 7 +++++++ src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro | 7 ------- src/s60installs/s60installs.pro | 7 ------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index f0e41bc..e208b5f 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -25,6 +25,13 @@ symbian: { webkitbackup.sources = ../WebKit/qt/symbian/backup_registration.xml webkitbackup.path = /private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,) + contains(QT_CONFIG, declarative): { + declarativeImport.sources = qmlwebkitplugin$${QT_LIBINFIX}.dll + declarativeImport.sources += ../WebKit/qt/declarative/qmldir + declarativeImport.path = c:$$QT_IMPORTS_BASE_DIR/QtWebKit + DEPLOYMENT += declarativeImport + } + DEPLOYMENT += webkitlibs webkitbackup # Need to guarantee that these come before system includes of /epoc32/include diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro b/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro index c75bbce..75268f3 100644 --- a/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro +++ b/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro @@ -67,13 +67,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH symbian:{ TARGET.UID3 = 0x20021321 - load(data_caging_paths) - include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri) - - importFiles.sources = qmlwebkitplugin.dll qmldir - importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH - - DEPLOYMENT = importFiles } INSTALLS += target qmldir diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index a093e4c..4addb84 100644 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro @@ -175,13 +175,6 @@ symbian: { particlesImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/particles DEPLOYMENT += folderlistmodelImport gesturesImport particlesImport - - contains(QT_CONFIG, webkit): { - webkitImport.sources = $$QT_BUILD_TREE/imports/QtWebKit/qmlwebkitplugin$${QT_LIBINFIX}.dll - webkitImport.sources += $$QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/declarative/qmldir - webkitImport.path = c:$$QT_IMPORTS_BASE_DIR/QtWebKit - DEPLOYMENT += webkitImport - } } graphicssystems_plugins.path = c:$$QT_PLUGINS_BASE_DIR/graphicssystems -- cgit v0.12 From 9dc6dc38bf9035ec6460fa20159c33d5ad7084ca Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 24 Jun 2010 14:05:08 +0200 Subject: Updated WebKit to 2f598e9b7b376d851fe089bc1dc729bcf0393a06 * Fixed QML packaging || || Add an inlineCapacity template parameter to ListHashSet and use it to shrink the positioned object list hash set. || || || Allocate the m_preloads list hash set dynamically and free it when done. || || || Do not render the full frame when there is some elements with fixed positioning || --- src/3rdparty/webkit/.tag | 2 +- src/3rdparty/webkit/JavaScriptCore/ChangeLog | 34 ++++ .../webkit/JavaScriptCore/wtf/ListHashSet.h | 206 ++++++++++----------- src/3rdparty/webkit/VERSION | 2 +- src/3rdparty/webkit/WebCore/ChangeLog | 78 ++++++++ src/3rdparty/webkit/WebCore/WebCore.pro | 2 +- src/3rdparty/webkit/WebCore/loader/DocLoader.cpp | 15 +- src/3rdparty/webkit/WebCore/loader/DocLoader.h | 5 +- src/3rdparty/webkit/WebCore/page/FrameView.cpp | 12 +- .../webkit/WebCore/rendering/RenderBlock.cpp | 8 +- .../webkit/WebCore/rendering/RenderBlock.h | 9 +- .../webkit/WebCore/rendering/RenderLayer.cpp | 8 + .../webkit/WebCore/rendering/RenderLayer.h | 1 + src/3rdparty/webkit/WebKit/qt/ChangeLog | 16 ++ .../webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc | 4 +- 15 files changed, 274 insertions(+), 128 deletions(-) diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 21b75f0..24cf142 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -b3589e88fb8d581fb523578763831109f914dc2e +2f598e9b7b376d851fe089bc1dc729bcf0393a06 diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index 676ed23..8fa3a72 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,3 +1,37 @@ +2010-05-18 Anders Carlsson + + Reviewed by Sam Weinig. + + Add an inlineCapacity template parameter to ListHashSet and use it to shrink the positioned object list hash set. + https://bugs.webkit.org/show_bug.cgi?id=39304 + + + Add an inlineCapacity template parameter to ListHashSet. + + * wtf/ListHashSet.h: + (WTF::::ListHashSet): + (WTF::::operator): + (WTF::::swap): + (WTF::::~ListHashSet): + (WTF::::size): + (WTF::::capacity): + (WTF::::isEmpty): + (WTF::::begin): + (WTF::::end): + (WTF::::find): + (WTF::::contains): + (WTF::::add): + (WTF::::insertBefore): + (WTF::::remove): + (WTF::::clear): + (WTF::::unlinkAndDelete): + (WTF::::appendNode): + (WTF::::insertNodeBefore): + (WTF::::deleteAllNodes): + (WTF::::makeIterator): + (WTF::::makeConstIterator): + (WTF::deleteAllValues): + 2010-06-18 Jocelyn Turcotte Reviewed by Simon Hausmann. diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ListHashSet.h b/src/3rdparty/webkit/JavaScriptCore/wtf/ListHashSet.h index 54ed36b..09355ad 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/ListHashSet.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ListHashSet.h @@ -37,27 +37,27 @@ namespace WTF { // and an append that moves the element to the end even if already present, // but unclear yet if these are needed. - template class ListHashSet; + template class ListHashSet; template struct IdentityExtractor; - template - void deleteAllValues(const ListHashSet&); + template + void deleteAllValues(const ListHashSet&); - template class ListHashSetIterator; - template class ListHashSetConstIterator; + template class ListHashSetIterator; + template class ListHashSetConstIterator; - template struct ListHashSetNode; - template struct ListHashSetNodeAllocator; - template struct ListHashSetNodeHashFunctions; + template struct ListHashSetNode; + template struct ListHashSetNodeAllocator; + template struct ListHashSetNodeHashFunctions; - template::Hash> class ListHashSet : public FastAllocBase { + template::Hash> class ListHashSet : public FastAllocBase { private: - typedef ListHashSetNode Node; - typedef ListHashSetNodeAllocator NodeAllocator; + typedef ListHashSetNode Node; + typedef ListHashSetNodeAllocator NodeAllocator; typedef HashTraits NodeTraits; - typedef ListHashSetNodeHashFunctions NodeHash; + typedef ListHashSetNodeHashFunctions NodeHash; typedef HashTable, NodeHash, NodeTraits, NodeTraits> ImplType; typedef HashTableIterator, NodeHash, NodeTraits, NodeTraits> ImplTypeIterator; @@ -67,10 +67,10 @@ namespace WTF { public: typedef ValueArg ValueType; - typedef ListHashSetIterator iterator; - typedef ListHashSetConstIterator const_iterator; + typedef ListHashSetIterator iterator; + typedef ListHashSetConstIterator const_iterator; - friend class ListHashSetConstIterator; + friend class ListHashSetConstIterator; ListHashSet(); ListHashSet(const ListHashSet&); @@ -119,9 +119,9 @@ namespace WTF { OwnPtr m_allocator; }; - template struct ListHashSetNodeAllocator { - typedef ListHashSetNode Node; - typedef ListHashSetNodeAllocator NodeAllocator; + template struct ListHashSetNodeAllocator { + typedef ListHashSetNode Node; + typedef ListHashSetNodeAllocator NodeAllocator; ListHashSetNodeAllocator() : m_freeList(pool()) @@ -181,15 +181,15 @@ namespace WTF { Node* m_freeList; bool m_isDoneWithInitialFreeList; - static const size_t m_poolSize = 256; + static const size_t m_poolSize = inlineCapacity; union { char pool[sizeof(Node) * m_poolSize]; double forAlignment; } m_pool; }; - template struct ListHashSetNode { - typedef ListHashSetNodeAllocator NodeAllocator; + template struct ListHashSetNode { + typedef ListHashSetNodeAllocator NodeAllocator; ListHashSetNode(ValueArg value) : m_value(value) @@ -220,25 +220,25 @@ namespace WTF { #endif }; - template struct ListHashSetNodeHashFunctions { - typedef ListHashSetNode Node; + template struct ListHashSetNodeHashFunctions { + typedef ListHashSetNode Node; static unsigned hash(Node* const& key) { return HashArg::hash(key->m_value); } static bool equal(Node* const& a, Node* const& b) { return HashArg::equal(a->m_value, b->m_value); } static const bool safeToCompareToEmptyOrDeleted = false; }; - template class ListHashSetIterator { + template class ListHashSetIterator { private: - typedef ListHashSet ListHashSetType; - typedef ListHashSetIterator iterator; - typedef ListHashSetConstIterator const_iterator; - typedef ListHashSetNode Node; + typedef ListHashSet ListHashSetType; + typedef ListHashSetIterator iterator; + typedef ListHashSetConstIterator const_iterator; + typedef ListHashSetNode Node; typedef ValueArg ValueType; typedef ValueType& ReferenceType; typedef ValueType* PointerType; - friend class ListHashSet; + friend class ListHashSet; ListHashSetIterator(const ListHashSetType* set, Node* position) : m_iterator(set, position) { } @@ -271,18 +271,18 @@ namespace WTF { const_iterator m_iterator; }; - template class ListHashSetConstIterator { + template class ListHashSetConstIterator { private: - typedef ListHashSet ListHashSetType; - typedef ListHashSetIterator iterator; - typedef ListHashSetConstIterator const_iterator; - typedef ListHashSetNode Node; + typedef ListHashSet ListHashSetType; + typedef ListHashSetIterator iterator; + typedef ListHashSetConstIterator const_iterator; + typedef ListHashSetNode Node; typedef ValueArg ValueType; typedef const ValueType& ReferenceType; typedef const ValueType* PointerType; - friend class ListHashSet; - friend class ListHashSetIterator; + friend class ListHashSet; + friend class ListHashSetIterator; ListHashSetConstIterator(const ListHashSetType* set, Node* position) : m_set(set) @@ -341,11 +341,11 @@ namespace WTF { }; - template + template struct ListHashSetTranslator { private: - typedef ListHashSetNode Node; - typedef ListHashSetNodeAllocator NodeAllocator; + typedef ListHashSetNode Node; + typedef ListHashSetNodeAllocator NodeAllocator; public: static unsigned hash(const ValueType& key) { return HashFunctions::hash(key); } static bool equal(Node* const& a, const ValueType& b) { return HashFunctions::equal(a->m_value, b); } @@ -355,16 +355,16 @@ namespace WTF { } }; - template - inline ListHashSet::ListHashSet() + template + inline ListHashSet::ListHashSet() : m_head(0) , m_tail(0) , m_allocator(new NodeAllocator) { } - template - inline ListHashSet::ListHashSet(const ListHashSet& other) + template + inline ListHashSet::ListHashSet(const ListHashSet& other) : m_head(0) , m_tail(0) , m_allocator(new NodeAllocator) @@ -374,16 +374,16 @@ namespace WTF { add(*it); } - template - inline ListHashSet& ListHashSet::operator=(const ListHashSet& other) + template + inline ListHashSet& ListHashSet::operator=(const ListHashSet& other) { ListHashSet tmp(other); swap(tmp); return *this; } - template - inline void ListHashSet::swap(ListHashSet& other) + template + inline void ListHashSet::swap(ListHashSet& other) { m_impl.swap(other.m_impl); std::swap(m_head, other.m_head); @@ -391,95 +391,95 @@ namespace WTF { m_allocator.swap(other.m_allocator); } - template - inline ListHashSet::~ListHashSet() + template + inline ListHashSet::~ListHashSet() { deleteAllNodes(); } - template - inline int ListHashSet::size() const + template + inline int ListHashSet::size() const { return m_impl.size(); } - template - inline int ListHashSet::capacity() const + template + inline int ListHashSet::capacity() const { return m_impl.capacity(); } - template - inline bool ListHashSet::isEmpty() const + template + inline bool ListHashSet::isEmpty() const { return m_impl.isEmpty(); } - template - inline typename ListHashSet::iterator ListHashSet::begin() + template + inline typename ListHashSet::iterator ListHashSet::begin() { return makeIterator(m_head); } - template - inline typename ListHashSet::iterator ListHashSet::end() + template + inline typename ListHashSet::iterator ListHashSet::end() { return makeIterator(0); } - template - inline typename ListHashSet::const_iterator ListHashSet::begin() const + template + inline typename ListHashSet::const_iterator ListHashSet::begin() const { return makeConstIterator(m_head); } - template - inline typename ListHashSet::const_iterator ListHashSet::end() const + template + inline typename ListHashSet::const_iterator ListHashSet::end() const { return makeConstIterator(0); } - template - inline typename ListHashSet::iterator ListHashSet::find(const ValueType& value) + template + inline typename ListHashSet::iterator ListHashSet::find(const ValueType& value) { - typedef ListHashSetTranslator Translator; + typedef ListHashSetTranslator Translator; ImplTypeIterator it = m_impl.template find(value); if (it == m_impl.end()) return end(); return makeIterator(*it); } - template - inline typename ListHashSet::const_iterator ListHashSet::find(const ValueType& value) const + template + inline typename ListHashSet::const_iterator ListHashSet::find(const ValueType& value) const { - typedef ListHashSetTranslator Translator; + typedef ListHashSetTranslator Translator; ImplTypeConstIterator it = m_impl.template find(value); if (it == m_impl.end()) return end(); return makeConstIterator(*it); } - template - inline bool ListHashSet::contains(const ValueType& value) const + template + inline bool ListHashSet::contains(const ValueType& value) const { - typedef ListHashSetTranslator Translator; + typedef ListHashSetTranslator Translator; return m_impl.template contains(value); } - template - pair::iterator, bool> ListHashSet::add(const ValueType &value) + template + pair::iterator, bool> ListHashSet::add(const ValueType &value) { - typedef ListHashSetTranslator Translator; + typedef ListHashSetTranslator Translator; pair result = m_impl.template add(value, m_allocator.get()); if (result.second) appendNode(*result.first); return std::make_pair(makeIterator(*result.first), result.second); } - template - pair::iterator, bool> ListHashSet::insertBefore(iterator it, const ValueType& newValue) + template + pair::iterator, bool> ListHashSet::insertBefore(iterator it, const ValueType& newValue) { - typedef ListHashSetTranslator Translator; + typedef ListHashSetTranslator Translator; pair result = m_impl.template add(newValue, m_allocator.get()); if (result.second) insertNodeBefore(it.node(), *result.first); @@ -487,14 +487,14 @@ namespace WTF { } - template - pair::iterator, bool> ListHashSet::insertBefore(const ValueType& beforeValue, const ValueType& newValue) + template + pair::iterator, bool> ListHashSet::insertBefore(const ValueType& beforeValue, const ValueType& newValue) { return insertBefore(find(beforeValue), newValue); } - template - inline void ListHashSet::remove(iterator it) + template + inline void ListHashSet::remove(iterator it) { if (it == end()) return; @@ -502,14 +502,14 @@ namespace WTF { unlinkAndDelete(it.node()); } - template - inline void ListHashSet::remove(const ValueType& value) + template + inline void ListHashSet::remove(const ValueType& value) { remove(find(value)); } - template - inline void ListHashSet::clear() + template + inline void ListHashSet::clear() { deleteAllNodes(); m_impl.clear(); @@ -517,8 +517,8 @@ namespace WTF { m_tail = 0; } - template - void ListHashSet::unlinkAndDelete(Node* node) + template + void ListHashSet::unlinkAndDelete(Node* node) { if (!node->m_prev) { ASSERT(node == m_head); @@ -539,8 +539,8 @@ namespace WTF { node->destroy(m_allocator.get()); } - template - void ListHashSet::appendNode(Node* node) + template + void ListHashSet::appendNode(Node* node) { node->m_prev = m_tail; node->m_next = 0; @@ -556,8 +556,8 @@ namespace WTF { m_tail = node; } - template - void ListHashSet::insertNodeBefore(Node* beforeNode, Node* newNode) + template + void ListHashSet::insertNodeBefore(Node* beforeNode, Node* newNode) { if (!beforeNode) return appendNode(newNode); @@ -572,8 +572,8 @@ namespace WTF { m_head = newNode; } - template - void ListHashSet::deleteAllNodes() + template + void ListHashSet::deleteAllNodes() { if (!m_head) return; @@ -582,16 +582,16 @@ namespace WTF { node->destroy(m_allocator.get()); } - template - inline ListHashSetIterator ListHashSet::makeIterator(Node* position) + template + inline ListHashSetIterator ListHashSet::makeIterator(Node* position) { - return ListHashSetIterator(this, position); + return ListHashSetIterator(this, position); } - template - inline ListHashSetConstIterator ListHashSet::makeConstIterator(Node* position) const + template + inline ListHashSetConstIterator ListHashSet::makeConstIterator(Node* position) const { - return ListHashSetConstIterator(this, position); + return ListHashSetConstIterator(this, position); } template @@ -603,10 +603,10 @@ namespace WTF { delete (*it)->m_value; } - template - inline void deleteAllValues(const ListHashSet& collection) + template + inline void deleteAllValues(const ListHashSet& collection) { - deleteAllValues::ValueType>(collection.m_impl); + deleteAllValues::ValueType>(collection.m_impl); } } // namespace WTF diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index 57c1cf6..924b120 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - b3589e88fb8d581fb523578763831109f914dc2e + 2f598e9b7b376d851fe089bc1dc729bcf0393a06 diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index 687b76b..a84f177 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,81 @@ +2010-06-24 Simon Hausmann + + Unreviewed Symbian build fix. + + The QML WebKit integration needs to be part of QtWebKit.sis + + * WebCore.pro: Deploy qmlwebkitplugin.dll. + +2010-06-23 Benjamin Poulain + + Reviewed by Kenneth Rohde Christiansen. + + Do not render the full frame when there is some elements with fixed positioning + https://bugs.webkit.org/show_bug.cgi?id=33150 + + Do not render the full frame when there is some elements with fixed positioning + https://bugs.webkit.org/show_bug.cgi?id=33150 + + The frame view take into acount the list of fixed object when scrolling + the view. If the number of object is lower than a certain threshold, the pixel + are blitted, and the invalidated area updated. + + * page/FrameView.cpp: + (WebCore::FrameView::addFixedObject): + (WebCore::FrameView::removeFixedObject): + (WebCore::FrameView::scrollContentsFastPath): + * page/FrameView.h: + * platform/ScrollView.cpp: + (WebCore::ScrollView::scrollContents): + (WebCore::ScrollView::scrollContentsFastPath): + * platform/ScrollView.h: + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::repaintRectIncludingDescendants): + * rendering/RenderLayer.h: + * rendering/RenderObject.cpp: + (WebCore::RenderObject::styleWillChange): + +2010-05-18 Anders Carlsson + + Reviewed by Sam Weinig. + + Allocate the m_preloads list hash set dynamically and free it when done. + https://bugs.webkit.org/show_bug.cgi?id=39309 + + + This saves about 6000 bytes on a fully loaded document. + + * loader/DocLoader.cpp: + (WebCore::DocLoader::requestPreload): + (WebCore::DocLoader::clearPreloads): + * loader/DocLoader.h: + +2010-05-18 Anders Carlsson + + Revert unintended indentation and unnecessary nested name specifier. + + * rendering/RenderBlock.cpp: + (WebCore::clipOutPositionedObjects): + (WebCore::RenderBlock::insertPositionedObject): + +2010-05-18 Anders Carlsson + + Reviewed by Sam Weinig. + + Add an inlineCapacity template parameter to ListHashSet and use it to shrink the positioned object list hash set. + https://bugs.webkit.org/show_bug.cgi?id=39304 + + + Set the inlineCapacity for the positionedObjects ListHashSet to 4 instead of 256. Since a RenderBlock usually has + few positioned objects, this saves memory. + + * WebCore.base.exp: + * rendering/RenderBlock.cpp: + (WebCore::clipOutPositionedObjects): + (WebCore::RenderBlock::insertPositionedObject): + * rendering/RenderBlock.h: + (WebCore::RenderBlock::positionedObjects): + 2010-06-22 Simon Hausmann Unreviewed Qt/Symbian build fix. diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index e208b5f..1162a52 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -25,7 +25,7 @@ symbian: { webkitbackup.sources = ../WebKit/qt/symbian/backup_registration.xml webkitbackup.path = /private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,) - contains(QT_CONFIG, declarative): { + contains(QT_CONFIG, declarative) { declarativeImport.sources = qmlwebkitplugin$${QT_LIBINFIX}.dll declarativeImport.sources += ../WebKit/qt/declarative/qmldir declarativeImport.path = c:$$QT_IMPORTS_BASE_DIR/QtWebKit diff --git a/src/3rdparty/webkit/WebCore/loader/DocLoader.cpp b/src/3rdparty/webkit/WebCore/loader/DocLoader.cpp index 0053e7b..4597704 100644 --- a/src/3rdparty/webkit/WebCore/loader/DocLoader.cpp +++ b/src/3rdparty/webkit/WebCore/loader/DocLoader.cpp @@ -407,10 +407,14 @@ void DocLoader::requestPreload(CachedResource::Type type, const String& url, con encoding = charset.isEmpty() ? m_doc->frame()->loader()->encoding() : charset; CachedResource* resource = requestResource(type, url, encoding, true); - if (!resource || m_preloads.contains(resource)) + if (!resource || (m_preloads && m_preloads->contains(resource))) return; resource->increasePreloadCount(); - m_preloads.add(resource); + + if (!m_preloads) + m_preloads.set(new ListHashSet); + m_preloads->add(resource); + #if PRELOAD_DEBUG printf("PRELOADING %s\n", resource->url().latin1().data()); #endif @@ -421,8 +425,11 @@ void DocLoader::clearPreloads() #if PRELOAD_DEBUG printPreloadStats(); #endif - ListHashSet::iterator end = m_preloads.end(); - for (ListHashSet::iterator it = m_preloads.begin(); it != end; ++it) { + if (!m_preloads) + return; + + ListHashSet::iterator end = m_preloads->end(); + for (ListHashSet::iterator it = m_preloads->begin(); it != end; ++it) { CachedResource* res = *it; res->decreasePreloadCount(); if (res->canDelete() && !res->inCache()) diff --git a/src/3rdparty/webkit/WebCore/loader/DocLoader.h b/src/3rdparty/webkit/WebCore/loader/DocLoader.h index 8ec73e1..66e4164 100644 --- a/src/3rdparty/webkit/WebCore/loader/DocLoader.h +++ b/src/3rdparty/webkit/WebCore/loader/DocLoader.h @@ -47,8 +47,7 @@ class ImageLoader; class KURL; // The DocLoader manages the loading of scripts/images/stylesheets for a single document. -class DocLoader : public Noncopyable -{ +class DocLoader : public Noncopyable { friend class Cache; friend class ImageLoader; @@ -117,7 +116,7 @@ private: int m_requestCount; - ListHashSet m_preloads; + OwnPtr > m_preloads; struct PendingPreload { CachedResource::Type m_type; String m_url; diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp index a53db36..639414b 100644 --- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp +++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp @@ -884,7 +884,7 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect { const size_t fixedObjectThreshold = 5; - ListHashSet* positionedObjects = 0; + RenderBlock::PositionedObjectsListHashSet* positionedObjects = 0; if (RenderView* root = m_frame->contentRenderer()) positionedObjects = root->positionedObjects(); @@ -896,14 +896,14 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect // Get the rects of the fixed objects visible in the rectToScroll Vector subRectToUpdate; bool updateInvalidatedSubRect = true; - ListHashSet::const_iterator end = positionedObjects->end(); - for (ListHashSet::const_iterator it = positionedObjects->begin(); it != end; ++it) { + RenderBlock::PositionedObjectsListHashSet::const_iterator end = positionedObjects->end(); + for (RenderBlock::PositionedObjectsListHashSet::const_iterator it = positionedObjects->begin(); it != end; ++it) { RenderBox* renderBox = *it; if (renderBox->style()->position() != FixedPosition) continue; - IntRect topLevelRect; - IntRect updateRect = renderBox->paintingRootRect(topLevelRect); - updateRect.move(-scrollX(), -scrollY()); + IntRect updateRect = renderBox->layer()->repaintRectIncludingDescendants(); + updateRect = contentsToWindow(updateRect); + updateRect.intersect(rectToScroll); if (!updateRect.isEmpty()) { if (subRectToUpdate.size() >= fixedObjectThreshold) { diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.cpp index a7b8a02..798663e 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.cpp @@ -1982,13 +1982,13 @@ void RenderBlock::paintSelection(PaintInfo& paintInfo, int tx, int ty) } #ifndef BUILDING_ON_TIGER -static void clipOutPositionedObjects(const RenderObject::PaintInfo* paintInfo, int tx, int ty, ListHashSet* positionedObjects) +static void clipOutPositionedObjects(const RenderObject::PaintInfo* paintInfo, int tx, int ty, RenderBlock::PositionedObjectsListHashSet* positionedObjects) { if (!positionedObjects) return; - ListHashSet::const_iterator end = positionedObjects->end(); - for (ListHashSet::const_iterator it = positionedObjects->begin(); it != end; ++it) { + RenderBlock::PositionedObjectsListHashSet::const_iterator end = positionedObjects->end(); + for (RenderBlock::PositionedObjectsListHashSet::const_iterator it = positionedObjects->begin(); it != end; ++it) { RenderBox* r = *it; paintInfo->context->clipOut(IntRect(tx + r->x(), ty + r->y(), r->width(), r->height())); } @@ -2274,7 +2274,7 @@ void RenderBlock::insertPositionedObject(RenderBox* o) { // Create the list of special objects if we don't aleady have one if (!m_positionedObjects) - m_positionedObjects = new ListHashSet; + m_positionedObjects = new PositionedObjectsListHashSet; m_positionedObjects->add(o); } diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h index 184f983..d555d31 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h @@ -74,7 +74,9 @@ public: void insertPositionedObject(RenderBox*); void removePositionedObject(RenderBox*); void removePositionedObjects(RenderBlock*); - ListHashSet* positionedObjects() const { return m_positionedObjects; } + + typedef ListHashSet PositionedObjectsListHashSet; + PositionedObjectsListHashSet* positionedObjects() const { return m_positionedObjects; } void addPercentHeightDescendant(RenderBox*); static void removePercentHeightDescendant(RenderBox*); @@ -483,9 +485,10 @@ private: void setCollapsedBottomMargin(const MarginInfo&); // End helper functions and structs used by layoutBlockChildren. - typedef ListHashSet::const_iterator Iterator; + typedef PositionedObjectsListHashSet::const_iterator Iterator; DeprecatedPtrList* m_floatingObjects; - ListHashSet* m_positionedObjects; + + PositionedObjectsListHashSet* m_positionedObjects; // An inline can be split with blocks occurring in between the inline content. // When this occurs we need a pointer to our next object. We can basically be diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp index 3314772..a012868 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp @@ -325,6 +325,14 @@ void RenderLayer::updateLayerPositions(UpdateLayerPositionsFlags flags) m_marquee->updateMarqueePosition(); } +IntRect RenderLayer::repaintRectIncludingDescendants() const +{ + IntRect repaintRect = m_repaintRect; + for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) + repaintRect.unite(child->repaintRectIncludingDescendants()); + return repaintRect; +} + void RenderLayer::computeRepaintRects() { RenderBoxModelObject* repaintContainer = renderer()->containerForRepaint(); diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h index 81a66e1..e221f28 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h @@ -394,6 +394,7 @@ public: // Return a cached repaint rect, computed relative to the layer renderer's containerForRepaint. IntRect repaintRect() const { return m_repaintRect; } + IntRect repaintRectIncludingDescendants() const; void computeRepaintRects(); void updateRepaintRectsAfterScroll(bool fixed = false); void setNeedsFullRepaint(bool f = true) { m_needsFullRepaint = f; } diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 050b1c1..69a431f 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,19 @@ +2010-06-24 Simon Hausmann + + Unreviewed Symbian build fix. + + The QML WebKit integration needs to be part of QtWebKit.sis + + * declarative/declarative.pro: Removed non-working deployment. + +2010-06-23 David Boddie + + Reviewed by Simon Hausmann. + + [Qt] Doc: Fixed documentation errors. + + * docs/qtwebkit-bridge.qdoc: + 2010-06-23 Alessandro Portale Reviewed by Simon Hausmann. diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc index fa93293..c2a38fd 100644 --- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc +++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit-bridge.qdoc @@ -8,7 +8,7 @@ The QtWebKit bridge is a mechanism that extends WebKit's JavaScript environment to access native objects that are represented as \l{QObject}s. It takes advantage of the \l{QObject} introspection, - a part of the \l{Qt Object Model}, which makes it easy to integrate with the dynamic JavaScript environment, + a part of the \l{Object Model}, which makes it easy to integrate with the dynamic JavaScript environment, for example \l{QObject} properties map directly to JavaScript properties. For example, both JavaScript and QObjects have properties: a construct that represent a getter/setter @@ -24,7 +24,7 @@ applications. For example, an application that contains a media-player, playlist manager, and music store. The playlist manager is usually best authored as a classic desktop application, with the native-looking robust \l{QWidget}s helping with producing that application. - The media-player control, which usually looks custom, can be written using \l{The Graphics View framework} + The media-player control, which usually looks custom, can be written using the \l{Graphics View framework} or with in a declarative way with \l{QtDeclarative}. The music store, which shows dynamic content from the internet and gets modified rapidly, is best authored in HTML and maintained on the server. -- cgit v0.12 From 5b5ae51b22b57897dd61b9f8910e510757fa59c5 Mon Sep 17 00:00:00 2001 From: axis Date: Thu, 24 Jun 2010 14:07:49 +0200 Subject: Fixed several problems with the postlinker for Symbian (elf2e32). The fixes were too complicated for a profile and so a perl script was introduced. These are the issues that were addressed: - Made sure that we link correctly in all cases where there is a mismatch between the DEF file and the ELF file. Specifically, these two cases: - If elf2e32 detects a symbols in the ELF file that is marked as absent in the DEF file, an ordinal mapping will not be generated in the dso file. This means that binaries linking to the library will not find the symbol, even though it exists in the code. Since this is completely useless behavior, this was fixed to include the symbol regardless. - If the DEF file contains a symbol that is not present in the ELF file, an ordinal mapping will be created in the dso file regardless, which means applications can link to a symbol that does not exist. This is even worse than point one, since it is not detected until runtime, when the dynamic link will fail. Fixed by leaving the symbol out of the dso file if it does not exist in the ELF file. Both fixes require rerunning elf2e32 to fix the symbol mappings that were broken in the first run, but it only happens if at least one symbol is broken in the way described above. Also, freezing the DEF files will "save" the symbols, so that it does not occur after that. Note that this does not remove the ability to get the postlinker to tell you about mismatches. By doing "QMAKE_ELF2E32_FLAGS -= --unfrozen", the symbol mismatches will be considered errors instead of warnings, and they can be caught that way. - Code that was previously in the profile was moved to the perl script: - Detecting that there are errors in the postlink and return nonzero. elf2e32 does not do this on its own (at least not when using Wine). - Only overwriting the old dso file if the new one is different. This saves build time, since binaries that depend on the library do not trigger relink if the dso has not changed. These two points simplify the code, and they will also help the porting to Windows, since the old shell script tricks would not have worked there. RevBy: Trust me --- bin/elf2e32_qtwrapper | 145 ++++++++++++++++++++++++++ mkspecs/features/symbian/def_files.prf | 4 +- mkspecs/features/symbian/symbian_building.prf | 13 +-- 3 files changed, 151 insertions(+), 11 deletions(-) create mode 100755 bin/elf2e32_qtwrapper diff --git a/bin/elf2e32_qtwrapper b/bin/elf2e32_qtwrapper new file mode 100755 index 0000000..694d54a --- /dev/null +++ b/bin/elf2e32_qtwrapper @@ -0,0 +1,145 @@ +#!/usr/bin/perl -w + +# A script to get around some shortcomings in elf2e32, namely: +# - Returning 0 even when there are errors. +# - Excluding symbols from the dso file even when they are present in the ELF file. +# - Including symbols in the the dso file even when they are not present in the ELF file. +# - Overwriting the old dso file even when there are no changes (increases build time). + +use File::Copy; + +my @args = (); +my @definput; +my @defoutput; +my @dso; +my @tmpdso; +foreach (@ARGV) { + if (/^--definput/o) { + @definput = split('=', $_); + } elsif (/^--defoutput/o) { + @defoutput = split('=', $_); + } elsif (/^--dso/o) { + @dso = split('=', $_); + } elsif (/^--tmpdso/o) { + @tmpdso = split('=', $_); + $tmpdso[0] = "--dso"; + } else { + push(@args, $_); + } +} + +@definput = () if (!@definput || ! -e $definput[1]); + +if (@dso && !@tmpdso || !@dso && @tmpdso) { + print("--dso and --tmpdso must be used together.\n"); + exit 1; +} + +my $buildingLibrary = (@defoutput && @dso) ? 1 : 0; + +my $fixupFile = ""; +my $runCount = 0; +my $returnCode = 0; + +while (1) { + if (++$runCount > 2) { + print("Internal error in $0, link succeeded, but exports may be wrong.\n"); + last; + } + + my $elf2e32Pipe; + my $elf2e32Cmd = "elf2e32 @args" + . " " . join("=", @definput) + . " " . join("=", @defoutput) + . " " . join("=", @tmpdso); + open($elf2e32Pipe, "$elf2e32Cmd 2>&1 |") or die ("Could not run elf2e32"); + + my %fixupSymbols; + my $foundBrokenSymbols = 0; + my $errors = 0; + while (<$elf2e32Pipe>) { + print; + if (/Error:/io) { + $errors = 1; + } elsif (/symbol ([a-z0-9_]+) absent in the DEF file, but present in the ELF file/io) { + $fixupSymbols{$1} = 1; + $foundBrokenSymbols = 1; + } elsif (/[0-9]+ Frozen Export\(s\) missing from the ELF file/io) { + $foundBrokenSymbols = 1; + } + } + close($elf2e32Pipe); + + if ($errors) { + $returnCode = 1; + last; + } + + if ($buildingLibrary) { + my $tmpDefFile; + my $defFile; + open($defFile, "< $defoutput[1]") or die("Could not open $defoutput[1]"); + open($tmpDefFile, "> $defoutput[1].tmp") or die("Could not open $defoutput[1].tmp"); + $fixupFile = "$defoutput[1].tmp"; + while (<$defFile>) { + s/\r//; + s/\n//; + next if (/; NEW:/); + if (/([a-z0-9_]+) @/i) { + if (exists($fixupSymbols{$1})) { + s/ ABSENT//; + } elsif (s/; MISSING://) { + s/$/ ABSENT/; + } + } + print($tmpDefFile "$_\n"); + } + close($defFile); + close($tmpDefFile); + + $definput[1] = "$defoutput[1].tmp"; + + if (!$foundBrokenSymbols || $errors) { + last; + } + + print("Rerunning elf2e32 due to DEF file / ELF file mismatch\n"); + } else { + last; + } +}; + +if ($fixupFile) { + unlink($defoutput[1]); + move($fixupFile, $defoutput[1]); +} + +exit $returnCode if ($returnCode != 0); + +if ($buildingLibrary) { + my $differenceFound = 0; + + if (-e $dso[1]) { + my $dsoFile; + my $tmpdsoFile; + my $dsoBuf; + my $tmpdsoBuf; + open($dsoFile, "< $dso[1]") or die("Could not open $dso[1]"); + open($tmpdsoFile, "< $tmpdso[1]") or die("Could not open $tmpdso[1]"); + binmode($dsoFile); + binmode($tmpdsoFile); + while(read($dsoFile, $dsoBuf, 4096) && read($tmpdsoFile, $tmpdsoBuf, 4096)) { + if ($dsoBuf ne $tmpdsoBuf) { + $differenceFound = 1; + } + } + close($tmpdsoFile); + close($dsoFile); + } else { + $differenceFound = 1; + } + + if ($differenceFound) { + copy($tmpdso[1], $dso[1]); + } +} diff --git a/mkspecs/features/symbian/def_files.prf b/mkspecs/features/symbian/def_files.prf index 1b8e551..bae9d2d 100644 --- a/mkspecs/features/symbian/def_files.prf +++ b/mkspecs/features/symbian/def_files.prf @@ -56,7 +56,7 @@ symbian-abld|symbian-sbsv2 { } else { elf2e32FileToAdd = $$_PRO_FILE_PWD_/$$defFile } - QMAKE_ELF2E32_FLAGS += "`test -e $$elf2e32FileToAdd && echo --definput=$$elf2e32FileToAdd`" + QMAKE_ELF2E32_FLAGS += "--definput=$$elf2e32FileToAdd" symbianObjdir = $$OBJECTS_DIR isEmpty(symbianObjdir):symbianObjdir = . @@ -64,7 +64,7 @@ symbian-abld|symbian-sbsv2 { freeze_target.target = freeze freeze_target.depends = first # The perl part is to convert to unix line endings and remove comments, which the s60 tools refuse to do. - freeze_target.commands = perl -n -e \'next if (/; NEW/); s/\\r//g; if (/MISSING:(.*)/x) { print(\"\$\$1 ABSENT\\n\"); } else { print; }\' < $$symbianObjdir/$${TARGET}.def > $$elf2e32FileToAdd + freeze_target.commands = $$QMAKE_COPY $$symbianObjdir/$${TARGET}.def $$elf2e32FileToAdd QMAKE_EXTRA_TARGETS += freeze_target } else:contains(TEMPLATE, subdirs) { freeze_target.target = freeze diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf index 5861bb6..bdab8d5 100644 --- a/mkspecs/features/symbian/symbian_building.prf +++ b/mkspecs/features/symbian/symbian_building.prf @@ -106,7 +106,7 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { # The comparison of dso files is to avoid extra building of modules that depend on this dso, in # case it has not changed. QMAKE_POST_LINK = $$QMAKE_MOVE $$symbianDestdir/$${TARGET}.dll $$symbianDestdir/$${TARGET}.sym \ - && elf2e32 --version=$$decVersion \ + && elf2e32_qtwrapper --version=$$decVersion \ --sid=$$TARGET.SID \ --uid1=0x10000079 \ --uid2=$$TARGET.UID2 \ @@ -114,7 +114,8 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { --targettype=DLL \ --elfinput=$${symbianDestdir}/$${TARGET}.sym \ --output=$${symbianDestdir}/$${TARGET}.dll \ - --dso=$$symbianObjdir/$${TARGET}.dso \ + --tmpdso=$${symbianObjdir}/$${TARGET}.dso \ + --dso=$${symbianDestdir}/$${TARGET}.dso \ --defoutput=$$symbianObjdir/$${TARGET}.def \ --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll \ --heap=$$join(TARGET.EPOCHEAPSIZE, ",") \ @@ -122,11 +123,6 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { $$elf2e32_LIBPATH \ $$capability \ $$QMAKE_ELF2E32_FLAGS \ - | tee elf2e32.log && test `grep -c 'Error:' elf2e32.log` = 0 && rm elf2e32.log \ - && if ! diff -q $${symbianObjdir}/$${TARGET}.dso $${symbianDestdir}/$${TARGET}.dso \ - > /dev/null 2>&1; then \ - $$QMAKE_COPY $${symbianObjdir}/$${TARGET}.dso $${symbianDestdir}/$${TARGET}.dso; \ - fi \ $$QMAKE_POST_LINK QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.sym QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.dso @@ -159,7 +155,7 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@.*") { } # the tee and grep at the end work around the issue that elf2e32 doesn't return non-null on error QMAKE_POST_LINK = $$QMAKE_MOVE $$symbianDestdir/$${TARGET} $$symbianDestdir/$${TARGET}.sym \ - && elf2e32 --version $$decVersion \ + && elf2e32_qtwrapper --version $$decVersion \ --sid=$$TARGET.SID \ --uid1=0x1000007a \ --uid2=$$TARGET.UID2 \ @@ -173,7 +169,6 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@.*") { $$elf2e32_LIBPATH \ $$capability \ $$QMAKE_ELF2E32_FLAGS \ - | tee elf2e32.log && test `grep -c 'Error:' elf2e32.log` = 0 && rm elf2e32.log \ && ln "$${symbianDestdir}/$${TARGET}.exe" "$${symbianDestdir}/$$TARGET" \ $$QMAKE_POST_LINK QMAKE_DISTCLEAN += $${symbianDestdir}/$${TARGET}.sym -- cgit v0.12 From d806b996beab76cbc43ffa11bc38721fa19c9c81 Mon Sep 17 00:00:00 2001 From: Prasanth Ullattil Date: Thu, 24 Jun 2010 15:02:02 +0200 Subject: No more enter & leave events after a popup menu is closed on Windows We use the TrackMouseEvent() to keep track of enter and leave messages. Upon receiving a WM_MOUSELEAVE, the effect of that function call is over, we need to call it again if we need more messages. This was not done when we close a popup because of mouse click outside. Task-number: QTBUG-11582 Reviewed-by: Bradley T. Hughes --- src/gui/kernel/qapplication_win.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index 2a85fdc..ef719ca 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -3065,6 +3065,11 @@ bool QETWidget::translateMouseEvent(const MSG &msg) break; } } +#ifndef Q_OS_WINCE + static bool trackMouseEventLookup = false; + typedef BOOL (WINAPI *PtrTrackMouseEvent)(LPTRACKMOUSEEVENT); + static PtrTrackMouseEvent ptrTrackMouseEvent = 0; +#endif state = translateButtonState(msg.wParam, type, button); // button state const QPoint widgetPos = mapFromGlobal(QPoint(msg.pt.x, msg.pt.y)); QWidget *alienWidget = !internalWinId() ? this : childAt(widgetPos); @@ -3129,9 +3134,6 @@ bool QETWidget::translateMouseEvent(const MSG &msg) #ifndef Q_OS_WINCE if (curWin != 0) { - static bool trackMouseEventLookup = false; - typedef BOOL (WINAPI *PtrTrackMouseEvent)(LPTRACKMOUSEEVENT); - static PtrTrackMouseEvent ptrTrackMouseEvent = 0; if (!trackMouseEventLookup) { trackMouseEventLookup = true; ptrTrackMouseEvent = (PtrTrackMouseEvent)QLibrary::resolve(QLatin1String("comctl32"), "_TrackMouseEvent"); @@ -3245,6 +3247,21 @@ bool QETWidget::translateMouseEvent(const MSG &msg) qt_button_down = 0; } +#ifndef Q_OS_WINCE + if (type == QEvent::MouseButtonPress + && QApplication::activePopupWidget() != activePopupWidget + && ptrTrackMouseEvent + && curWin) { + // Since curWin is already the window we clicked on, + // we have to setup the mouse tracking here. + TRACKMOUSEEVENT tme; + tme.cbSize = sizeof(TRACKMOUSEEVENT); + tme.dwFlags = 0x00000002; // TME_LEAVE + tme.hwndTrack = curWin; // Track on window receiving msgs + tme.dwHoverTime = (DWORD)-1; // HOVER_DEFAULT + ptrTrackMouseEvent(&tme); + } +#endif if (type == QEvent::MouseButtonPress && QApplication::activePopupWidget() != activePopupWidget && replayPopupMouseEvent) { -- cgit v0.12 From 0531b97863f93c5a141bd9ef0b58bcf6282024e7 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 24 Jun 2010 15:27:13 +0200 Subject: Manipulate buffer position via 'pPos' in peek() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: João Abecasis --- src/corelib/io/qiodevice.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index ea60792..26e587d 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -1452,7 +1452,7 @@ qint64 QIODevicePrivate::peek(char *data, qint64 maxSize) return readBytes; buffer.ungetBlock(data, readBytes); - pos -= readBytes; + *pPos -= readBytes; return readBytes; } @@ -1467,7 +1467,7 @@ QByteArray QIODevicePrivate::peek(qint64 maxSize) return result; buffer.ungetBlock(result.constData(), result.size()); - pos -= result.size(); + *pPos -= result.size(); return result; } -- cgit v0.12 From 415eab3eab1a037badec279dbfd41278f0f92719 Mon Sep 17 00:00:00 2001 From: axis Date: Thu, 24 Jun 2010 15:15:28 +0200 Subject: Fixed make runonphone that looked for the package in the wrong place. Task: QTBUG-11670 RevBy: Trust me --- mkspecs/features/symbian/run_on_phone.prf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mkspecs/features/symbian/run_on_phone.prf b/mkspecs/features/symbian/run_on_phone.prf index 6948a48..818151a 100644 --- a/mkspecs/features/symbian/run_on_phone.prf +++ b/mkspecs/features/symbian/run_on_phone.prf @@ -11,9 +11,13 @@ else:!equals(DEPLOYMENT, default_deployment) { } equals(GENERATE_RUN_TARGETS, true) { - sis_destdir = $$DESTDIR - !isEmpty(sis_destdir):!contains(sis_destdir, "[/\\\\]$"):sis_destdir = $${sis_destdir}/ - contains(QMAKE_HOST.os, "Windows"):sis_destdir = $$replace(sis_destdir, "/", "\\") + symbian-abld|symbian-sbsv2 { + sis_destdir = + } else { + sis_destdir = $$DESTDIR + !isEmpty(sis_destdir):!contains(sis_destdir, "[/\\\\]$"):sis_destdir = $${sis_destdir}/ + contains(QMAKE_HOST.os, "Windows"):sis_destdir = $$replace(sis_destdir, "/", "\\") + } contains(SYMBIAN_PLATFORMS, "WINSCW"):contains(TEMPLATE, "app") { run_target.target = run -- cgit v0.12 From 7bc00632dde1b718cbe1412e988ad006dc3d125f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?= Date: Thu, 24 Jun 2010 15:11:05 +0200 Subject: Add a new (internal) flag QGraphicsItem::ItemStopsClickFocusPropagation. This flag allows you to create a non-focusable item that can be clicked on without changing the focus. This is also possible to achieve by using focus scopes / panels, however the implementation is then way more complex. Thew new flag is tailored for simple uses cases where you simply want to stop the propagation and nothing more. Auto test included. Task-number: QT-3499 Reviewed-by: yoann --- src/gui/graphicsview/qgraphicsitem.cpp | 8 ++++ src/gui/graphicsview/qgraphicsitem.h | 3 +- src/gui/graphicsview/qgraphicsitem_p.h | 6 +-- src/gui/graphicsview/qgraphicsscene.cpp | 2 + tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 54 ++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 2de3638..61285d2 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -411,6 +411,11 @@ these notifications are disabled by default. You must enable this flag to receive notifications for scene position changes. This flag was introduced in Qt 4.6. + + \omitvalue ItemStopsClickFocusPropagation \omit The item stops propagating + click focus to items underneath when being clicked on. This flag + allows you create a non-focusable item that can be clicked on without + changing the focus. \endomit */ /*! @@ -11432,6 +11437,9 @@ QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemFlag flag) case QGraphicsItem::ItemSendsScenePositionChanges: str = "ItemSendsScenePositionChanges"; break; + case QGraphicsItem::ItemStopsClickFocusPropagation: + str = "ItemStopsClickFocusPropagation"; + break; } debug << str; return debug; diff --git a/src/gui/graphicsview/qgraphicsitem.h b/src/gui/graphicsview/qgraphicsitem.h index d7d5332..3c193cd 100644 --- a/src/gui/graphicsview/qgraphicsitem.h +++ b/src/gui/graphicsview/qgraphicsitem.h @@ -106,7 +106,8 @@ public: ItemNegativeZStacksBehindParent = 0x2000, ItemIsPanel = 0x4000, ItemIsFocusScope = 0x8000, // internal - ItemSendsScenePositionChanges = 0x10000 + ItemSendsScenePositionChanges = 0x10000, + ItemStopsClickFocusPropagation = 0x20000 // NB! Don't forget to increase the d_ptr->flags bit field by 1 when adding a new flag. }; Q_DECLARE_FLAGS(GraphicsItemFlags, GraphicsItemFlag) diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h index bde6e7d..f9f5d3d 100644 --- a/src/gui/graphicsview/qgraphicsitem_p.h +++ b/src/gui/graphicsview/qgraphicsitem_p.h @@ -556,7 +556,7 @@ public: quint32 dirtyChildrenBoundingRect : 1; // Packed 32 bits - quint32 flags : 17; + quint32 flags : 18; quint32 paintedViewBoundingRectsNeedRepaint : 1; quint32 dirtySceneTransform : 1; quint32 geometryChanged : 1; @@ -571,9 +571,9 @@ public: quint32 notifyBoundingRectChanged : 1; quint32 notifyInvalidated : 1; quint32 mouseSetsFocus : 1; - quint32 explicitActivate : 1; // New 32 bits + quint32 explicitActivate : 1; quint32 wantsActive : 1; quint32 holesInSiblingIndex : 1; quint32 sequentialOrdering : 1; @@ -582,7 +582,7 @@ public: quint32 pendingPolish : 1; quint32 mayHaveChildWithGraphicsEffect : 1; quint32 isDeclarativeItem : 1; - quint32 padding : 24; + quint32 padding : 23; // Optional stacking order int globalStackingOrder; diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index ca3b56f..d04074a 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -1336,6 +1336,8 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou break; } } + if (item->d_ptr->flags & QGraphicsItem::ItemStopsClickFocusPropagation) + break; if (item->isPanel()) break; } diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index fe68c8e..31a6845 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -442,6 +442,7 @@ private slots: void updateMicroFocus(); void textItem_shortcuts(); void scroll(); + void stopClickFocusPropagation(); // task specific tests below me void task141694_textItemEnsureVisible(); @@ -10268,6 +10269,59 @@ void tst_QGraphicsItem::scroll() QCOMPARE(item2->lastExposedRect, expectedItem2Expose); } +void tst_QGraphicsItem::stopClickFocusPropagation() +{ + class MyItem : public QGraphicsRectItem + { + public: + MyItem() : QGraphicsRectItem(0, 0, 100, 100) {} + void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) + { + painter->fillRect(boundingRect(), hasFocus() ? QBrush(Qt::red) : brush()); + } + }; + + QGraphicsScene scene(-50, -50, 400, 400); + scene.setStickyFocus(true); + + QGraphicsRectItem *noFocusOnTop = new MyItem; + noFocusOnTop->setBrush(Qt::yellow); + noFocusOnTop->setFlag(QGraphicsItem::ItemStopsClickFocusPropagation); + + QGraphicsRectItem *focusableUnder = new MyItem; + focusableUnder->setBrush(Qt::blue); + focusableUnder->setFlag(QGraphicsItem::ItemIsFocusable); + focusableUnder->setPos(50, 50); + + QGraphicsRectItem *itemWithFocus = new MyItem; + itemWithFocus->setBrush(Qt::black); + itemWithFocus->setFlag(QGraphicsItem::ItemIsFocusable); + itemWithFocus->setPos(250, 10); + + scene.addItem(noFocusOnTop); + scene.addItem(focusableUnder); + scene.addItem(itemWithFocus); + focusableUnder->stackBefore(noFocusOnTop); + itemWithFocus->setFocus(); + + QGraphicsView view(&scene); + view.show(); + QTest::qWaitForWindowShown(&view); + + QApplication::setActiveWindow(&view); + QTRY_COMPARE(QApplication::activeWindow(), static_cast(&view)); + QVERIFY(itemWithFocus->hasFocus()); + + QPointF mousePressPoint = noFocusOnTop->mapToScene(QPointF()); + mousePressPoint.rx() += 60; + mousePressPoint.ry() += 60; + const QList itemsAtMousePressPosition = scene.items(mousePressPoint); + QVERIFY(itemsAtMousePressPosition.contains(focusableUnder)); + + sendMousePress(&scene, mousePressPoint); + QVERIFY(itemWithFocus->hasFocus()); +} + void tst_QGraphicsItem::QTBUG_5418_textItemSetDefaultColor() { struct Item : public QGraphicsTextItem -- cgit v0.12 From 8d88f35f5f5c06277e2a54b6aea48b7f3e2e1c51 Mon Sep 17 00:00:00 2001 From: axis Date: Thu, 24 Jun 2010 16:23:16 +0200 Subject: Fixed incorrect parsing of TARGET.EPOCHEAPSIZE. RevBy: Trust me --- mkspecs/features/symbian/symbian_building.prf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf index bdab8d5..08ab3e7 100644 --- a/mkspecs/features/symbian/symbian_building.prf +++ b/mkspecs/features/symbian/symbian_building.prf @@ -10,6 +10,8 @@ isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000 isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000 +epoc_heap_size = $$split(TARGET.EPOCHEAPSIZE, " ") +epoc_heap_size = $$join(epoc_heap_size, ",") symbianObjdir=$$OBJECTS_DIR isEmpty(symbianObjdir) { @@ -118,7 +120,7 @@ contains(TEMPLATE, lib):!contains(CONFIG, static):!contains(CONFIG, staticlib) { --dso=$${symbianDestdir}/$${TARGET}.dso \ --defoutput=$$symbianObjdir/$${TARGET}.def \ --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].dll \ - --heap=$$join(TARGET.EPOCHEAPSIZE, ",") \ + --heap=$$epoc_heap_size \ --stack=$$TARGET.EPOCSTACKSIZE \ $$elf2e32_LIBPATH \ $$capability \ @@ -164,7 +166,7 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@.*") { --elfinput=$${symbianDestdir}/$${TARGET}.sym \ --output=$${symbianDestdir}/$${TARGET}.exe \ --linkas=$${TARGET}\\{$${hexVersion}\\}\\[$${intUid3}\\].exe \ - --heap=$$join(TARGET.EPOCHEAPSIZE, ",") \ + --heap=$$epoc_heap_size \ --stack=$$TARGET.EPOCSTACKSIZE \ $$elf2e32_LIBPATH \ $$capability \ -- cgit v0.12 From 72acc2eac69a5f58f8d99c25cb58f0afaebec7a4 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Thu, 24 Jun 2010 13:38:49 +0200 Subject: qmake: Fix CONFIG += exceptions_off with the MSVC project generator, take 2. The previous patch caused the pch header to be compiled without exception handling since the compilertool for the pch compilation do not get its options filled from the compiler flags. This patch instead set the value to off before calling parseOptions. This also reverts commit 73fa311f67b21c9b897de0196d3b8227f27d828f. Reviewed-by: Oswald Buddenhagen --- qmake/generators/win32/msbuild_objectmodel.cpp | 1 - qmake/generators/win32/msvc_objectmodel.cpp | 7 ++----- qmake/generators/win32/msvc_vcproj.cpp | 1 + qmake/generators/win32/msvc_vcxproj.cpp | 1 + 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index bf874b2..75fc910 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -385,7 +385,6 @@ VCXCLCompilerTool::VCXCLCompilerTool() DisableLanguageExtensions(unset), EnableFiberSafeOptimizations(unset), EnablePREfast(unset), - ExceptionHandling("false"), ExpandAttributedSource(unset), FloatingPointExceptions(unset), ForceConformanceInForLoopScope(unset), diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index e23e119..1e060a0 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -360,11 +360,8 @@ inline XmlOutput::xml_output xformUsePrecompiledHeaderForNET2005(pchOption whatP inline XmlOutput::xml_output xformExceptionHandlingNET2005(exceptionHandling eh, DotNET compilerVersion) { - if (eh == ehDefault) { - if (compilerVersion >= NET2005) - return attrE(_ExceptionHandling, ehNone); - return attrS(_ExceptionHandling, "false"); - } + if (eh == ehDefault) + return noxml(); if (compilerVersion >= NET2005) return attrE(_ExceptionHandling, eh); diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 35e4896..8686ae8 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -900,6 +900,7 @@ void VcprojGenerator::initCompilerTool() conf.compiler.AssemblerListingLocation = placement ; conf.compiler.ProgramDataBaseFileName = ".\\" ; conf.compiler.ObjectFile = placement ; + conf.compiler.ExceptionHandling = ehNone; // PCH if (usePCH) { conf.compiler.UsePrecompiledHeader = pchUseUsingSpecific; diff --git a/qmake/generators/win32/msvc_vcxproj.cpp b/qmake/generators/win32/msvc_vcxproj.cpp index 05c1511..f68a435 100644 --- a/qmake/generators/win32/msvc_vcxproj.cpp +++ b/qmake/generators/win32/msvc_vcxproj.cpp @@ -274,6 +274,7 @@ void VcxprojGenerator::initCompilerTool() conf.compiler.AssemblerListingLocation = placement ; conf.compiler.ProgramDataBaseFileName = ".\\" ; conf.compiler.ObjectFileName = placement ; + conf.compiler.ExceptionHandling = "false"; // PCH if (usePCH) { conf.compiler.PrecompiledHeader = "Use"; -- cgit v0.12 From 2b61fd0d8720bf34ce7f2d4124fbac0ad306090e Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 24 Jun 2010 19:44:23 +0200 Subject: Expand on warning message --- demos/qtdemo/qmlShell.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/qtdemo/qmlShell.qml b/demos/qtdemo/qmlShell.qml index 5c5f96c..f168ccc 100644 --- a/demos/qtdemo/qmlShell.qml +++ b/demos/qtdemo/qmlShell.qml @@ -130,7 +130,7 @@ Item { textFormat: Text.RichText //Note that if loader is Error, it is because the file was found but there was an error creating the component //This means either we have a bug in our demos, or the required modules (which ship with Qt) did not deploy correctly - text: "The example has failed to load.
If you installed Qt's QML modules this is a bug!
" + text: "The example has failed to load.
If you installed all Qt's C++ and QML modules then this is a bug!
" + 'Report it at http://bugreports.qt.nokia.com'; onLinkActivated: Qt.openUrlExternally(link); } -- cgit v0.12 From 46b53708a668e317de5a0f77d8dfd6ba632290e3 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Thu, 24 Jun 2010 19:45:40 +0200 Subject: Stop other mouse buttons propagating --- demos/qtdemo/qmlShell.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/demos/qtdemo/qmlShell.qml b/demos/qtdemo/qmlShell.qml index f168ccc..1fea4a8 100644 --- a/demos/qtdemo/qmlShell.qml +++ b/demos/qtdemo/qmlShell.qml @@ -145,6 +145,7 @@ Item { z: 8 enabled: main.show hoverEnabled: main.show //To steal focus from the buttons + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton anchors.fill: parent onClicked: main.show=false; } -- cgit v0.12 From a0d4f94c0eb3f724df979d9d22c4c944f34d547a Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 25 Jun 2010 10:51:56 +1000 Subject: Force font selection (and so ensure visual test passes). --- .../declarative/qdeclarativetext/data/alignments.qml | 2 -- .../declarative/qdeclarativetext/data/alignments_cb.png | Bin 528 -> 496 bytes .../declarative/qdeclarativetext/data/alignments_cc.png | Bin 549 -> 556 bytes .../declarative/qdeclarativetext/data/alignments_ct.png | Bin 564 -> 533 bytes .../declarative/qdeclarativetext/data/alignments_lb.png | Bin 522 -> 496 bytes .../declarative/qdeclarativetext/data/alignments_lc.png | Bin 541 -> 535 bytes .../declarative/qdeclarativetext/data/alignments_lt.png | Bin 558 -> 514 bytes .../declarative/qdeclarativetext/data/alignments_rb.png | Bin 530 -> 505 bytes .../declarative/qdeclarativetext/data/alignments_rc.png | Bin 550 -> 559 bytes .../declarative/qdeclarativetext/data/alignments_rt.png | Bin 564 -> 539 bytes .../qdeclarativetext/tst_qdeclarativetext.cpp | 7 +++++++ .../qdeclarativetextedit/data/alignments.qml | 2 -- .../qdeclarativetextedit/data/alignments_cb.png | Bin 528 -> 496 bytes .../qdeclarativetextedit/data/alignments_cc.png | Bin 549 -> 556 bytes .../qdeclarativetextedit/data/alignments_ct.png | Bin 564 -> 533 bytes .../qdeclarativetextedit/data/alignments_lb.png | Bin 522 -> 496 bytes .../qdeclarativetextedit/data/alignments_lc.png | Bin 541 -> 535 bytes .../qdeclarativetextedit/data/alignments_lt.png | Bin 558 -> 514 bytes .../qdeclarativetextedit/data/alignments_rb.png | Bin 530 -> 505 bytes .../qdeclarativetextedit/data/alignments_rc.png | Bin 550 -> 559 bytes .../qdeclarativetextedit/data/alignments_rt.png | Bin 564 -> 539 bytes .../qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 7 +++++++ 22 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments.qml b/tests/auto/declarative/qdeclarativetext/data/alignments.qml index b10c335..b1f701b 100644 --- a/tests/auto/declarative/qdeclarativetext/data/alignments.qml +++ b/tests/auto/declarative/qdeclarativetext/data/alignments.qml @@ -20,8 +20,6 @@ Rectangle { id: t anchors.fill: parent - font.family: "Misc Fixed" - font.pixelSize: 8 horizontalAlignment: TextEdit.AlignRight verticalAlignment: TextEdit.AlignBottom wrapMode: TextEdit.WordWrap diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png index b0ad381..99de219 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_cb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png index 98232ce..cb85251 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_cc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png index b606ba5..ddca549 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_ct.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png index a8f095d..1b50a81 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_lb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png index c2a0679..f041b86 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_lc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png b/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png index c019551..c75e0d1 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_lt.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png index 08d581a..b06a5da 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_rb.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png index d607955..e468857 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_rc.png differ diff --git a/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png b/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png index 2acfb9e..576715f 100644 Binary files a/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png and b/tests/auto/declarative/qdeclarativetext/data/alignments_rt.png differ diff --git a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp index 91b3ca0..dc92f07 100644 --- a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp +++ b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp @@ -424,6 +424,13 @@ void tst_qdeclarativetext::alignments() QFETCH(int, vAlign); QFETCH(QString, expectfile); +#ifdef Q_OS_LINUX + // Font-specific, but not likely platform-specific, so only test on one platform + QFont fn; + fn.setRawName("-misc-fixed-medium-r-*-*-8-*-*-*-*-*-*-*"); + QApplication::setFont(fn); +#endif + QDeclarativeView *canvas = createView(SRCDIR "/data/alignments.qml"); canvas->show(); diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml b/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml index b10c335..b1f701b 100644 --- a/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml +++ b/tests/auto/declarative/qdeclarativetextedit/data/alignments.qml @@ -20,8 +20,6 @@ Rectangle { id: t anchors.fill: parent - font.family: "Misc Fixed" - font.pixelSize: 8 horizontalAlignment: TextEdit.AlignRight verticalAlignment: TextEdit.AlignBottom wrapMode: TextEdit.WordWrap diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png index b0ad381..99de219 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png index 98232ce..cb85251 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_cc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png index b606ba5..ddca549 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_ct.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png index a8f095d..1b50a81 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png index c2a0679..f041b86 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png index c019551..c75e0d1 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_lt.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png index 08d581a..b06a5da 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rb.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png index d607955..e468857 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rc.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png index 2acfb9e..576715f 100644 Binary files a/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png and b/tests/auto/declarative/qdeclarativetextedit/data/alignments_rt.png differ diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 009d354..adf8348 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -325,6 +325,13 @@ void tst_qdeclarativetextedit::alignments() QFETCH(int, vAlign); QFETCH(QString, expectfile); +#ifdef Q_OS_LINUX + // Font-specific, but not likely platform-specific, so only test on one platform + QFont fn; + fn.setRawName("-misc-fixed-medium-r-*-*-8-*-*-*-*-*-*-*"); + QApplication::setFont(fn); +#endif + QDeclarativeView *canvas = createView(SRCDIR "/data/alignments.qml"); canvas->show(); -- cgit v0.12 From cfa9eee32081dc49ab0697b1f483db01c8aee7cd Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 25 Jun 2010 12:44:12 +1000 Subject: Reading a property that doesn't exist throws a ReferenceError test QTBUG-11606 --- .../declarative/qdeclarativeecmascript/data/qtbug_11606.qml | 12 ++++++++++++ .../qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp | 10 ++++++++++ 2 files changed, 22 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11606.qml diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11606.qml b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11606.qml new file mode 100644 index 0000000..6efb9c1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11606.qml @@ -0,0 +1,12 @@ +import Qt 4.7 + +QtObject { + property bool test: false + Component.onCompleted: { + try { + console.log(sorryNoSuchProperty); + } catch (e) { + test = true; + } + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 50da55d..7e8a272 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -155,6 +155,7 @@ private slots: void eval(); void function(); void qtbug_10696(); + void qtbug_11606(); void include(); @@ -2503,6 +2504,15 @@ void tst_qdeclarativeecmascript::qtbug_10696() delete o; } +void tst_qdeclarativeecmascript::qtbug_11606() +{ + QDeclarativeComponent component(&engine, TEST_FILE("qtbug_11606.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + QCOMPARE(o->property("test").toBool(), true); + delete o; +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" -- cgit v0.12 From 2426502f372f1c1a33ccaba3549dc0eda2a754de Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 25 Jun 2010 13:11:09 +1000 Subject: Disallow global object properties as property names QTBUG-11605 --- src/declarative/qml/qdeclarativecompiler.cpp | 8 ++++++++ src/declarative/qml/qdeclarativeglobalscriptclass.cpp | 4 ++++ tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml | 4 ++-- tests/auto/declarative/qdeclarativeecmascript/testtypes.h | 2 ++ .../qdeclarativelanguage/data/invalidProperty.errors.txt | 1 + .../declarative/qdeclarativelanguage/data/invalidProperty.qml | 5 +++++ .../declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp | 1 + 7 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.errors.txt create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.qml diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 80a1093..60128b7 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -2199,6 +2199,10 @@ bool QDeclarativeCompiler::checkDynamicMeta(QDeclarativeParser::Object *obj) if (QString::fromUtf8(prop.name).at(0).isUpper()) COMPILE_EXCEPTION(&prop, tr("Property names cannot begin with an upper case letter")); + + if (QDeclarativeEnginePrivate::get(engine)->globalClass->illegalNames().contains(prop.name)) + COMPILE_EXCEPTION(&prop, tr("Illegal property name")); + propNames.insert(prop.name); } @@ -2208,6 +2212,8 @@ bool QDeclarativeCompiler::checkDynamicMeta(QDeclarativeParser::Object *obj) COMPILE_EXCEPTION(obj, tr("Duplicate signal name")); if (QString::fromUtf8(name).at(0).isUpper()) COMPILE_EXCEPTION(obj, tr("Signal names cannot begin with an upper case letter")); + if (QDeclarativeEnginePrivate::get(engine)->globalClass->illegalNames().contains(name)) + COMPILE_EXCEPTION(obj, tr("Illegal signal name")); methodNames.insert(name); } for (int ii = 0; ii < obj->dynamicSlots.count(); ++ii) { @@ -2216,6 +2222,8 @@ bool QDeclarativeCompiler::checkDynamicMeta(QDeclarativeParser::Object *obj) COMPILE_EXCEPTION(obj, tr("Duplicate method name")); if (QString::fromUtf8(name).at(0).isUpper()) COMPILE_EXCEPTION(obj, tr("Method names cannot begin with an upper case letter")); + if (QDeclarativeEnginePrivate::get(engine)->globalClass->illegalNames().contains(name)) + COMPILE_EXCEPTION(obj, tr("Illegal method name")); methodNames.insert(name); } diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp index f29b3f4..3e22c82 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp @@ -55,6 +55,7 @@ QDeclarativeGlobalScriptClass::QDeclarativeGlobalScriptClass(QScriptEngine *engi : QScriptClass(engine) { QString eval = QLatin1String("eval"); + QString version = QLatin1String("version"); QScriptValue globalObject = engine->globalObject(); @@ -68,6 +69,9 @@ QDeclarativeGlobalScriptClass::QDeclarativeGlobalScriptClass(QScriptEngine *engi QString name = iter.name(); + if (name == version) + continue; + if (name != eval) m_globalObject.setProperty(iter.scriptName(), iter.value()); newGlobalObject.setProperty(iter.scriptName(), iter.value()); diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml index 4395ba3..2548005 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml @@ -1,10 +1,10 @@ import Qt 4.7 +import Qt.test 1.0 -Item { +MyQmlObject { id: root property int foo: 12 - property int console: 11 property bool test1: foo == 12 property bool test2: console != 11 diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h index 7bb8a8e..fef76ef 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h +++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h @@ -86,6 +86,7 @@ class MyQmlObject : public QObject Q_PROPERTY(bool trueProperty READ trueProperty CONSTANT) Q_PROPERTY(bool falseProperty READ falseProperty CONSTANT) Q_PROPERTY(int value READ value WRITE setValue) + Q_PROPERTY(int console READ console CONSTANT) Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty NOTIFY stringChanged) Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty NOTIFY objectChanged) Q_PROPERTY(QDeclarativeListProperty objectListProperty READ objectListProperty CONSTANT) @@ -142,6 +143,7 @@ public: QRegExp regExp() { return m_regExp; } void setRegExp(const QRegExp ®Exp) { m_regExp = regExp; } + int console() const { return 11; } signals: void basicSignal(); void argumentSignal(int a, QString b, qreal c); diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.errors.txt new file mode 100644 index 0000000..c83e5ae --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.errors.txt @@ -0,0 +1 @@ +4:5:Illegal property name diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.qml new file mode 100644 index 0000000..6077de4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidProperty.qml @@ -0,0 +1,5 @@ +import Qt 4.7 + +QtObject { + property int parseInt +} diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 413843a..3ce356e 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -370,6 +370,7 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("destroyedSignal") << "destroyedSignal.qml" << "destroyedSignal.errors.txt" << false; QTest::newRow("assignToNamespace") << "assignToNamespace.qml" << "assignToNamespace.errors.txt" << false; QTest::newRow("invalidOn") << "invalidOn.qml" << "invalidOn.errors.txt" << false; + QTest::newRow("invalidProperty") << "invalidProperty.qml" << "invalidProperty.errors.txt" << false; } -- cgit v0.12 From 5272bfe03522e671e832a8cbd9e5b2d4d71a18f2 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 25 Jun 2010 13:22:08 +1000 Subject: Fix assert QTBUG-11600 --- src/declarative/qml/qdeclarativetypenamescriptclass.cpp | 4 ++-- .../declarative/qdeclarativeecmascript/data/qtbug_11600.js | 1 + .../declarative/qdeclarativeecmascript/data/qtbug_11600.qml | 8 ++++++++ .../qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp | 11 +++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.js create mode 100644 tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.qml diff --git a/src/declarative/qml/qdeclarativetypenamescriptclass.cpp b/src/declarative/qml/qdeclarativetypenamescriptclass.cpp index 2a3417a..764a8db 100644 --- a/src/declarative/qml/qdeclarativetypenamescriptclass.cpp +++ b/src/declarative/qml/qdeclarativetypenamescriptclass.cpp @@ -107,8 +107,7 @@ QDeclarativeTypeNameScriptClass::queryProperty(Object *obj, const Identifier &na return 0; } - } else { - Q_ASSERT(data->type); + } else if (data->type) { QString strName = toString(name); @@ -134,6 +133,7 @@ QDeclarativeTypeNameScriptClass::queryProperty(Object *obj, const Identifier &na if (!object) return 0; return ep->objectClass->queryProperty(object, name, flags, 0); } + } return 0; diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.js b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.js new file mode 100644 index 0000000..092bc2b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.js @@ -0,0 +1 @@ +; diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.qml b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.qml new file mode 100644 index 0000000..56e7885 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_11600.qml @@ -0,0 +1,8 @@ +import Qt 4.7 +import "qtbug_11600.js" as Test + +QtObject { + id: goo + + property bool test: undefined == goo.Test.foo +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 7e8a272..5619f22 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -156,6 +156,7 @@ private slots: void function(); void qtbug_10696(); void qtbug_11606(); + void qtbug_11600(); void include(); @@ -2513,6 +2514,16 @@ void tst_qdeclarativeecmascript::qtbug_11606() delete o; } +void tst_qdeclarativeecmascript::qtbug_11600() +{ + QDeclarativeComponent component(&engine, TEST_FILE("qtbug_11600.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + QCOMPARE(o->property("test").toBool(), true); + delete o; +} + + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" -- cgit v0.12 From e0913d038b3df628bc180d397681b9e6ec53a75c Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 25 Jun 2010 13:42:06 +1000 Subject: Allow components to be created from .pragma library JS files QTBUG-11507 --- src/declarative/qml/qdeclarativecomponent.cpp | 4 +++- src/declarative/qml/qdeclarativeengine.cpp | 24 +++++++++++++++++----- src/declarative/qml/qdeclarativeengine_p.h | 1 + .../qdeclarativeqt/data/createComponent_lib.js | 4 ++++ .../qdeclarativeqt/data/createComponent_lib.qml | 2 ++ .../qdeclarativeqt/tst_qdeclarativeqt.cpp | 6 ++---- 6 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index b4919ff..9d3032c 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -572,7 +572,9 @@ QScriptValue QDeclarativeComponent::createObject(QObject* parent) { Q_D(QDeclarativeComponent); QDeclarativeContext* ctxt = creationContext(); - if(!ctxt) + if(!ctxt && d->engine) + ctxt = d->engine->rootContext(); + if (!ctxt) return QScriptValue(QScriptValue::NullValue); QObject* ret = create(ctxt); if (!ret) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 5c4d229..98b4bbf 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1033,6 +1033,17 @@ QDeclarativeContextData *QDeclarativeEnginePrivate::getContext(QScriptContext *c return contextClass->contextFromValue(scopeNode); } +/*! + Returns the QUrl associated with the script \a ctxt for the case that there is + no QDeclarativeContext. +*/ +QUrl QDeclarativeEnginePrivate::getUrl(QScriptContext *ctxt) +{ + QScriptValue scopeNode = QScriptDeclarativeClass::scopeChainValue(ctxt, -3); + Q_ASSERT(scopeNode.isValid()); + Q_ASSERT(QScriptDeclarativeClass::scriptClass(scopeNode) == contextClass); + return contextClass->urlFromValue(scopeNode); +} QString QDeclarativeEnginePrivate::urlToLocalFileOrQrc(const QUrl& url) { @@ -1075,16 +1086,19 @@ QScriptValue QDeclarativeEnginePrivate::createComponent(QScriptContext *ctxt, QS static_cast(engine)->p; QDeclarativeEngine* activeEngine = activeEnginePriv->q_func(); - QDeclarativeContextData* context = activeEnginePriv->getContext(ctxt); - Q_ASSERT(context); - if(ctxt->argumentCount() != 1) { return ctxt->throwError(QLatin1String("Qt.createComponent(): Invalid arguments")); - }else{ + } else { + QString arg = ctxt->argument(0).toString(); if (arg.isEmpty()) return engine->nullValue(); - QUrl url = QUrl(context->resolvedUrl(QUrl(arg))); + QUrl url; + QDeclarativeContextData* context = activeEnginePriv->getContext(ctxt); + if (context) + url = QUrl(context->resolvedUrl(QUrl(arg))); + else + url = activeEnginePriv->getUrl(ctxt).resolved(QUrl(arg)); QDeclarativeComponent *c = new QDeclarativeComponent(activeEngine, url, activeEngine); QDeclarativeComponentPrivate::get(c)->creationContext = context; QDeclarativeData::get(c, true)->setImplicitDestructible(); diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index 3269e98..cfa9d73 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -315,6 +315,7 @@ public: static QDeclarativeEnginePrivate *get(QScriptEngine *e) { return static_cast(e)->p; } static QDeclarativeEngine *get(QDeclarativeEnginePrivate *p) { return p->q_func(); } QDeclarativeContextData *getContext(QScriptContext *); + QUrl getUrl(QScriptContext *); static QString urlToLocalFileOrQrc(const QUrl& url); diff --git a/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.js b/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.js index c165e29..30499e9 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.js +++ b/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.js @@ -5,3 +5,7 @@ function loadComponent() { return component.status; } +function createComponent() { + var component = Qt.createComponent("createComponentData.qml"); + return component.createObject(null); +} diff --git a/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.qml b/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.qml index aae7a91..33203c7 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/createComponent_lib.qml @@ -3,8 +3,10 @@ import "createComponent_lib.js" as Test Item { property int status: Component.Null + property int readValue: 0 Component.onCompleted: { status = Test.loadComponent() + readValue = Test.createComponent().test; } } diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp index fb100a5..895ee6c 100644 --- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp +++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp @@ -365,14 +365,12 @@ void tst_qdeclarativeqt::createComponent() void tst_qdeclarativeqt::createComponent_pragmaLibrary() { // Currently, just loading createComponent_lib.qml causes crash on some platforms - /* QDeclarativeComponent component(&engine, TEST_FILE("createComponent_lib.qml")); QObject *object = component.create(); QVERIFY(object != 0); - - QEXPECT_FAIL("", "QTBUG-11507", Continue); QCOMPARE(object->property("status").toInt(), int(QDeclarativeComponent::Ready)); - */ + QCOMPARE(object->property("readValue").toInt(), int(1913)); + delete object; } void tst_qdeclarativeqt::createQmlObject() -- cgit v0.12 From 2d7e341646e302506531cb0bf87b8da5d088c319 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 25 Jun 2010 14:26:23 +1000 Subject: Allow custom parsers to handle attached properties QTBUG-11283 --- src/declarative/qml/qdeclarativecompiler.cpp | 13 +++++++++---- src/declarative/qml/qdeclarativecustomparser_p.h | 12 +++++++++++- src/declarative/util/qdeclarativepropertychanges_p.h | 3 +++ .../qdeclarativestates/tst_qdeclarativestates.cpp | 1 - 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 60128b7..6917a5b 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -815,6 +815,10 @@ bool QDeclarativeCompiler::buildObject(Object *obj, const BindingContext &ctxt) } } + QDeclarativeCustomParser *cp = 0; + if (isCustomParser) + cp = output->types.at(obj->type).type->customParser(); + // Build all explicit properties specified foreach(Property *prop, obj->properties) { @@ -825,7 +829,9 @@ bool QDeclarativeCompiler::buildObject(Object *obj, const BindingContext &ctxt) bool canDefer = false; if (isCustomParser) { - if (doesPropertyExist(prop, obj)) { + if (doesPropertyExist(prop, obj) && + (!(cp->flags() & QDeclarativeCustomParser::AcceptsAttachedProperties) || + !isAttachedPropertyName(prop->name))) { int ids = compileState.ids.count(); COMPILE_CHECK(buildProperty(prop, obj, objCtxt)); canDefer = ids == compileState.ids.count(); @@ -876,8 +882,7 @@ bool QDeclarativeCompiler::buildObject(Object *obj, const BindingContext &ctxt) defaultProperty->release(); // Compile custom parser parts - if (isCustomParser/* && !customProps.isEmpty()*/) { - QDeclarativeCustomParser *cp = output->types.at(obj->type).type->customParser(); + if (isCustomParser && !customProps.isEmpty()) { cp->clearErrors(); cp->compiler = this; cp->object = obj; @@ -1356,7 +1361,7 @@ bool QDeclarativeCompiler::buildSignal(QDeclarativeParser::Property *prop, QDecl Returns true if (value) property \a prop exists on obj, false otherwise. */ bool QDeclarativeCompiler::doesPropertyExist(QDeclarativeParser::Property *prop, - QDeclarativeParser::Object *obj) + QDeclarativeParser::Object *obj) { if(isAttachedPropertyName(prop->name) || prop->name == "id") return true; diff --git a/src/declarative/qml/qdeclarativecustomparser_p.h b/src/declarative/qml/qdeclarativecustomparser_p.h index 0e397c5..1a746b4 100644 --- a/src/declarative/qml/qdeclarativecustomparser_p.h +++ b/src/declarative/qml/qdeclarativecustomparser_p.h @@ -113,10 +113,18 @@ private: class Q_DECLARATIVE_EXPORT QDeclarativeCustomParser { public: - QDeclarativeCustomParser() : compiler(0), object(0) {} + enum Flag { + NoFlag = 0x00000000, + AcceptsAttachedProperties = 0x00000001 + }; + Q_DECLARE_FLAGS(Flags, Flag); + + QDeclarativeCustomParser() : compiler(0), object(0), m_flags(NoFlag) {} + QDeclarativeCustomParser(Flags f) : compiler(0), object(0), m_flags(f) {} virtual ~QDeclarativeCustomParser() {} void clearErrors(); + Flags flags() const { return m_flags; } virtual QByteArray compile(const QList &)=0; virtual void setCustomData(QObject *, const QByteArray &)=0; @@ -134,8 +142,10 @@ private: QList exceptions; QDeclarativeCompiler *compiler; QDeclarativeParser::Object *object; + Flags m_flags; friend class QDeclarativeCompiler; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativeCustomParser::Flags); #if 0 #define QML_REGISTER_CUSTOM_TYPE(URI, VERSION_MAJ, VERSION_MIN, NAME, TYPE, CUSTOMTYPE) \ diff --git a/src/declarative/util/qdeclarativepropertychanges_p.h b/src/declarative/util/qdeclarativepropertychanges_p.h index c2ed466..bb0f944 100644 --- a/src/declarative/util/qdeclarativepropertychanges_p.h +++ b/src/declarative/util/qdeclarativepropertychanges_p.h @@ -79,6 +79,9 @@ public: class QDeclarativePropertyChangesParser : public QDeclarativeCustomParser { public: + QDeclarativePropertyChangesParser() + : QDeclarativeCustomParser(AcceptsAttachedProperties) {} + void compileList(QList > &list, const QByteArray &pre, const QDeclarativeCustomParserProperty &prop); virtual QByteArray compile(const QList &); diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp index 2913ddd..639b2f3 100644 --- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp +++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp @@ -263,7 +263,6 @@ void tst_qdeclarativestates::attachedPropertyChanges() MyAttached *att = qobject_cast(attObj); QVERIFY(att); - QEXPECT_FAIL("", "QTBUG-11283", Abort); QCOMPARE(att->foo(), 1); } -- cgit v0.12 From 46233eaa956e57a4c948cec759a3be606a8bdcb8 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 25 Jun 2010 15:13:20 +1000 Subject: Handle enums in method arguments in the same way as QtScript QML will now invoke methods with enums as arguments, in the same fashion as QtScript. QTBUG-11313 --- .../qml/qdeclarativeobjectscriptclass.cpp | 24 +++++++++++++++++++++- .../qml/qdeclarativeobjectscriptclass_p.h | 2 ++ .../declarative/qdeclarativeecmascript/testtypes.h | 4 ++++ .../tst_qdeclarativeecmascript.cpp | 7 +++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp index aca01b2..3af892d 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp @@ -797,6 +797,26 @@ QScriptDeclarativeClass::Value MetaCallArgument::toValue(QDeclarativeEngine *e) } } +int QDeclarativeObjectMethodScriptClass::enumType(const QMetaObject *meta, const QString &strname) +{ + QByteArray str = strname.toUtf8(); + QByteArray scope; + QByteArray name; + int scopeIdx = str.lastIndexOf("::"); + if (scopeIdx != -1) { + scope = str.left(scopeIdx); + name = str.mid(scopeIdx + 2); + } else { + name = str; + } + for (int i = meta->enumeratorCount() - 1; i >= 0; --i) { + QMetaEnum m = meta->enumerator(i); + if ((m.name() == name) && (scope.isEmpty() || (m.scope() == scope))) + return QVariant::Int; + } + return QVariant::Invalid; +} + QDeclarativeObjectMethodScriptClass::Value QDeclarativeObjectMethodScriptClass::call(Object *o, QScriptContext *ctxt) { MethodData *method = static_cast(o); @@ -810,7 +830,9 @@ QDeclarativeObjectMethodScriptClass::Value QDeclarativeObjectMethodScriptClass:: // ### Cache for (int ii = 0; ii < argTypeNames.count(); ++ii) { argTypes[ii] = QMetaType::type(argTypeNames.at(ii)); - if (argTypes[ii] == QVariant::Invalid) + if (argTypes[ii] == QVariant::Invalid) + argTypes[ii] = enumType(method->object->metaObject(), argTypeNames.at(ii)); + if (argTypes[ii] == QVariant::Invalid) return Value(ctxt, ctxt->throwError(QString::fromLatin1("Unknown method parameter type: %1").arg(QLatin1String(argTypeNames.at(ii))))); } diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h index 4b27e53..75e384c 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h +++ b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h @@ -80,6 +80,8 @@ protected: virtual Value property(Object *, const Identifier &); private: + int enumType(const QMetaObject *, const QString &); + PersistentIdentifier m_connectId; PersistentIdentifier m_disconnectId; QScriptValue m_connect; diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h index fef76ef..849879e 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h +++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h @@ -557,7 +557,9 @@ Q_DECLARE_METATYPE(QScriptValue); class MyInvokableObject : public QObject { Q_OBJECT + Q_ENUMS(TestEnum) public: + enum TestEnum { EnumValue1, EnumValue2 }; MyInvokableObject() { reset(); } int invoked() const { return m_invoked; } @@ -589,6 +591,8 @@ public: Q_INVOKABLE void method_overload(int a) { invoke(16); m_actuals << a; } Q_INVOKABLE void method_overload(int a, int b) { invoke(17); m_actuals << a << b; } + Q_INVOKABLE void method_with_enum(TestEnum e) { invoke(18); m_actuals << (int)e; } + private: void invoke(int idx) { if (m_invoked != -1) m_invokedError = true; m_invoked = idx;} int m_invoked; diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 5619f22..43900ae 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -1721,6 +1721,13 @@ void tst_qdeclarativeecmascript::callQtInvokables() QCOMPARE(o.actuals().count(), 2); QCOMPARE(o.actuals().at(0), QVariant(10)); QCOMPARE(o.actuals().at(1), QVariant(11)); + + o.reset(); + QCOMPARE(engine->evaluate("object.method_with_enum(9)").isUndefined(), true); + QCOMPARE(o.error(), false); + QCOMPARE(o.invoked(), 18); + QCOMPARE(o.actuals().count(), 1); + QCOMPARE(o.actuals().at(0), QVariant(9)); } // QTBUG-5675 -- cgit v0.12 From c91030e308f8cd9ad66e7de127a1f9dbbedd11d3 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 25 Jun 2010 16:30:59 +1000 Subject: Test only on X11, not only on Linux (which includes embedded). --- tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp | 4 ++-- .../declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp index dc92f07..8a4f152 100644 --- a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp +++ b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp @@ -424,7 +424,7 @@ void tst_qdeclarativetext::alignments() QFETCH(int, vAlign); QFETCH(QString, expectfile); -#ifdef Q_OS_LINUX +#ifdef Q_WS_X11 // Font-specific, but not likely platform-specific, so only test on one platform QFont fn; fn.setRawName("-misc-fixed-medium-r-*-*-8-*-*-*-*-*-*-*"); @@ -450,7 +450,7 @@ void tst_qdeclarativetext::alignments() QImage expect(expectfile); -#ifdef Q_OS_LINUX +#ifdef Q_WS_X11 // Font-specific, but not likely platform-specific, so only test on one platform QCOMPARE(actual,expect); #endif diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index adf8348..f1a367f 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -325,7 +325,7 @@ void tst_qdeclarativetextedit::alignments() QFETCH(int, vAlign); QFETCH(QString, expectfile); -#ifdef Q_OS_LINUX +#ifdef Q_WS_X11 // Font-specific, but not likely platform-specific, so only test on one platform QFont fn; fn.setRawName("-misc-fixed-medium-r-*-*-8-*-*-*-*-*-*-*"); @@ -351,7 +351,7 @@ void tst_qdeclarativetextedit::alignments() QImage expect(expectfile); -#ifdef Q_OS_LINUX +#ifdef Q_WS_X11 // Font-specific, but not likely platform-specific, so only test on one platform QCOMPARE(actual,expect); #endif -- cgit v0.12 From 03df7f73de6a1fd482876caaf377a61593df8a38 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 25 Jun 2010 16:37:28 +1000 Subject: Test ListElement type via type system, not string comparison. Task-number: QTBUG-11222 Reviewed-by: Aaron Kennedy --- src/declarative/qml/qdeclarativecompiler.cpp | 12 ++++++++++++ src/declarative/qml/qdeclarativecompiler_p.h | 1 + src/declarative/qml/qdeclarativecustomparser.cpp | 10 ++++++++++ src/declarative/qml/qdeclarativecustomparser_p.h | 2 ++ src/declarative/util/qdeclarativelistmodel.cpp | 11 ++++++++--- src/declarative/util/qdeclarativelistmodel_p.h | 2 ++ 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 80a1093..a7cfa62 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -2176,6 +2176,18 @@ int QDeclarativeCompiler::evaluateEnum(const QByteArray& script) const return -1; } +const QMetaObject *QDeclarativeCompiler::resolveType(const QByteArray& name) const +{ + QDeclarativeType *qmltype = 0; + if (!enginePrivate->importDatabase.resolveType(unit->imports, name, &qmltype, + 0, 0, 0, 0)) + return 0; + if (!qmltype) + return 0; + return qmltype->metaObject(); +} + + // Ensures that the dynamic meta specification on obj is valid bool QDeclarativeCompiler::checkDynamicMeta(QDeclarativeParser::Object *obj) { diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 908c703..caad376 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -161,6 +161,7 @@ public: static bool isSignalPropertyName(const QByteArray &); int evaluateEnum(const QByteArray& script) const; // for QDeclarativeCustomParser::evaluateEnum + const QMetaObject *resolveType(const QByteArray& name) const; // for QDeclarativeCustomParser::resolveType private: static void reset(QDeclarativeCompiledData *); diff --git a/src/declarative/qml/qdeclarativecustomparser.cpp b/src/declarative/qml/qdeclarativecustomparser.cpp index 472a883..97a6a00 100644 --- a/src/declarative/qml/qdeclarativecustomparser.cpp +++ b/src/declarative/qml/qdeclarativecustomparser.cpp @@ -295,4 +295,14 @@ int QDeclarativeCustomParser::evaluateEnum(const QByteArray& script) const return compiler->evaluateEnum(script); } +/*! + Resolves \a name to a type, or 0 if it is not a type. This can be used + to type-check object nodes. +*/ +const QMetaObject *QDeclarativeCustomParser::resolveType(const QByteArray& name) const +{ + return compiler->resolveType(name); +} + + QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativecustomparser_p.h b/src/declarative/qml/qdeclarativecustomparser_p.h index 0e397c5..8eb86e8 100644 --- a/src/declarative/qml/qdeclarativecustomparser_p.h +++ b/src/declarative/qml/qdeclarativecustomparser_p.h @@ -130,6 +130,8 @@ protected: int evaluateEnum(const QByteArray&) const; + const QMetaObject *resolveType(const QByteArray&) const; + private: QList exceptions; QDeclarativeCompiler *compiler; diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp index 9ed21a6..deb835d 100644 --- a/src/declarative/util/qdeclarativelistmodel.cpp +++ b/src/declarative/util/qdeclarativelistmodel.cpp @@ -551,9 +551,13 @@ bool QDeclarativeListModelParser::compileProperty(const QDeclarativeCustomParser QDeclarativeCustomParserNode node = qvariant_cast(value); - if (node.name() != "ListElement") { - error(node, QDeclarativeListModel::tr("ListElement: cannot contain nested elements")); - return false; + if (node.name() != listElementTypeName) { + const QMetaObject *mo = resolveType(node.name()); + if (mo != &QDeclarativeListElement::staticMetaObject) { + error(node, QDeclarativeListModel::tr("ListElement: cannot contain nested elements")); + return false; + } + listElementTypeName = node.name(); // cache right name for next time } { @@ -650,6 +654,7 @@ QByteArray QDeclarativeListModelParser::compile(const QList instr; QByteArray data; + listElementTypeName = QByteArray(); // unknown for(int ii = 0; ii < customProps.count(); ++ii) { const QDeclarativeCustomParserProperty &prop = customProps.at(ii); diff --git a/src/declarative/util/qdeclarativelistmodel_p.h b/src/declarative/util/qdeclarativelistmodel_p.h index d09062e..6aff9c6 100644 --- a/src/declarative/util/qdeclarativelistmodel_p.h +++ b/src/declarative/util/qdeclarativelistmodel_p.h @@ -135,6 +135,8 @@ private: bool compileProperty(const QDeclarativeCustomParserProperty &prop, QList &instr, QByteArray &data); bool definesEmptyList(const QString &); + + QByteArray listElementTypeName; }; -- cgit v0.12 From 543bbe2e122d1d3394ec589c32f9640d1fd88f3b Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Fri, 25 Jun 2010 16:39:28 +1000 Subject: Test QTBUG-11222 Task-number: QTBUG-11222 --- .../qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp index 3d66733..f15ac8f 100644 --- a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp +++ b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp @@ -559,6 +559,18 @@ void tst_qdeclarativelistmodel::error_data() QTest::newRow("QML elements not allowed in ListElement") << "import Qt 4.7\nListModel { ListElement { a: Item { } } }" << "ListElement: cannot contain nested elements"; + + QTest::newRow("qualified ListElement supported") + << "import Qt 4.7 as Foo\nFoo.ListModel { Foo.ListElement { a: 123 } }" + << ""; + + QTest::newRow("qualified ListElement required") + << "import Qt 4.7 as Foo\nFoo.ListModel { ListElement { a: 123 } }" + << "ListElement is not a type"; + + QTest::newRow("unknown qualified ListElement not allowed") + << "import Qt 4.7\nListModel { Foo.ListElement { a: 123 } }" + << "Foo.ListElement - Foo is not a namespace"; } void tst_qdeclarativelistmodel::error() -- cgit v0.12 From 156cabe79a64ffca8d6e1a2df99f35b413a48a39 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Mon, 21 Jun 2010 17:59:23 +0200 Subject: Make the QML viewer usable on the N900 --- tools/qml/deviceorientation_maemo.cpp | 127 --------- tools/qml/deviceorientation_maemo5.cpp | 127 +++++++++ tools/qml/loggerwidget.cpp | 25 +- tools/qml/loggerwidget.h | 16 +- tools/qml/main.cpp | 2 +- tools/qml/proxysettings.cpp | 5 +- tools/qml/proxysettings.h | 4 + tools/qml/proxysettings_maemo5.ui | 177 +++++++++++++ tools/qml/qml.pri | 10 +- tools/qml/qml.pro | 3 + tools/qml/qmlruntime.cpp | 471 +++++++++++++++++++++------------ tools/qml/qmlruntime.h | 19 +- tools/qml/recopts_maemo5.ui | 254 ++++++++++++++++++ tools/qml/texteditautoresizer_maemo5.h | 122 +++++++++ 14 files changed, 1036 insertions(+), 326 deletions(-) delete mode 100644 tools/qml/deviceorientation_maemo.cpp create mode 100644 tools/qml/deviceorientation_maemo5.cpp create mode 100644 tools/qml/proxysettings_maemo5.ui create mode 100644 tools/qml/recopts_maemo5.ui create mode 100644 tools/qml/texteditautoresizer_maemo5.h diff --git a/tools/qml/deviceorientation_maemo.cpp b/tools/qml/deviceorientation_maemo.cpp deleted file mode 100644 index 443edc8..0000000 --- a/tools/qml/deviceorientation_maemo.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the tools applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "deviceorientation.h" -#include - -#include -#include - -class MaemoOrientation : public DeviceOrientation -{ - Q_OBJECT -public: - MaemoOrientation() - : o(UnknownOrientation) - { - // enable the orientation sensor - QDBusConnection::systemBus().call( - QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH, - MCE_REQUEST_IF, MCE_ACCELEROMETER_ENABLE_REQ)); - - // query the initial orientation - QDBusMessage reply = QDBusConnection::systemBus().call( - QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH, - MCE_REQUEST_IF, MCE_DEVICE_ORIENTATION_GET)); - if (reply.type() == QDBusMessage::ErrorMessage) { - qWarning("Unable to retrieve device orientation: %s", qPrintable(reply.errorMessage())); - } else { - o = toOrientation(reply.arguments().value(0).toString()); - } - - // connect to the orientation change signal - QDBusConnection::systemBus().connect(QString(), MCE_SIGNAL_PATH, MCE_SIGNAL_IF, - MCE_DEVICE_ORIENTATION_SIG, - this, - SLOT(deviceOrientationChanged(QString))); - } - - ~MaemoOrientation() - { - // disable the orientation sensor - QDBusConnection::systemBus().call( - QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH, - MCE_REQUEST_IF, MCE_ACCELEROMETER_DISABLE_REQ)); - } - - inline Orientation orientation() const - { - return o; - } - - void setOrientation(Orientation o) - { - } - -private Q_SLOTS: - void deviceOrientationChanged(const QString &newOrientation) - { - o = toOrientation(newOrientation); - - emit orientationChanged(); -// printf("%d\n", o); - } - -private: - static Orientation toOrientation(const QString &nativeOrientation) - { - if (nativeOrientation == MCE_ORIENTATION_LANDSCAPE) - return Landscape; - else if (nativeOrientation == MCE_ORIENTATION_LANDSCAPE_INVERTED) - return LandscapeInverted; - else if (nativeOrientation == MCE_ORIENTATION_PORTRAIT) - return Portrait; - else if (nativeOrientation == MCE_ORIENTATION_PORTRAIT_INVERTED) - return PortraitInverted; - return UnknownOrientation; - } - -private: - Orientation o; -}; - -DeviceOrientation* DeviceOrientation::instance() -{ - static MaemoOrientation *o = new MaemoOrientation; - return o; -} - -#include "deviceorientation_maemo.moc" diff --git a/tools/qml/deviceorientation_maemo5.cpp b/tools/qml/deviceorientation_maemo5.cpp new file mode 100644 index 0000000..443edc8 --- /dev/null +++ b/tools/qml/deviceorientation_maemo5.cpp @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "deviceorientation.h" +#include + +#include +#include + +class MaemoOrientation : public DeviceOrientation +{ + Q_OBJECT +public: + MaemoOrientation() + : o(UnknownOrientation) + { + // enable the orientation sensor + QDBusConnection::systemBus().call( + QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH, + MCE_REQUEST_IF, MCE_ACCELEROMETER_ENABLE_REQ)); + + // query the initial orientation + QDBusMessage reply = QDBusConnection::systemBus().call( + QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH, + MCE_REQUEST_IF, MCE_DEVICE_ORIENTATION_GET)); + if (reply.type() == QDBusMessage::ErrorMessage) { + qWarning("Unable to retrieve device orientation: %s", qPrintable(reply.errorMessage())); + } else { + o = toOrientation(reply.arguments().value(0).toString()); + } + + // connect to the orientation change signal + QDBusConnection::systemBus().connect(QString(), MCE_SIGNAL_PATH, MCE_SIGNAL_IF, + MCE_DEVICE_ORIENTATION_SIG, + this, + SLOT(deviceOrientationChanged(QString))); + } + + ~MaemoOrientation() + { + // disable the orientation sensor + QDBusConnection::systemBus().call( + QDBusMessage::createMethodCall(MCE_SERVICE, MCE_REQUEST_PATH, + MCE_REQUEST_IF, MCE_ACCELEROMETER_DISABLE_REQ)); + } + + inline Orientation orientation() const + { + return o; + } + + void setOrientation(Orientation o) + { + } + +private Q_SLOTS: + void deviceOrientationChanged(const QString &newOrientation) + { + o = toOrientation(newOrientation); + + emit orientationChanged(); +// printf("%d\n", o); + } + +private: + static Orientation toOrientation(const QString &nativeOrientation) + { + if (nativeOrientation == MCE_ORIENTATION_LANDSCAPE) + return Landscape; + else if (nativeOrientation == MCE_ORIENTATION_LANDSCAPE_INVERTED) + return LandscapeInverted; + else if (nativeOrientation == MCE_ORIENTATION_PORTRAIT) + return Portrait; + else if (nativeOrientation == MCE_ORIENTATION_PORTRAIT_INVERTED) + return PortraitInverted; + return UnknownOrientation; + } + +private: + Orientation o; +}; + +DeviceOrientation* DeviceOrientation::instance() +{ + static MaemoOrientation *o = new MaemoOrientation; + return o; +} + +#include "deviceorientation_maemo.moc" diff --git a/tools/qml/loggerwidget.cpp b/tools/qml/loggerwidget.cpp index 3ae2b5e..71d20e8 100644 --- a/tools/qml/loggerwidget.cpp +++ b/tools/qml/loggerwidget.cpp @@ -39,29 +39,48 @@ ** ****************************************************************************/ -#include "loggerwidget.h" #include #include #include #include #include +#include +#ifdef Q_WS_MAEMO_5 +# include +# include +# include "texteditautoresizer_maemo5.h" +#endif + +#include "loggerwidget.h" QT_BEGIN_NAMESPACE LoggerWidget::LoggerWidget(QWidget *parent) : - QPlainTextEdit(parent), + QMainWindow(parent), m_visibilityOrigin(SettingsOrigin) { setAttribute(Qt::WA_QuitOnClose, false); setWindowTitle(tr("Warnings")); + m_plainTextEdit = new QPlainTextEdit(); + +#ifdef Q_WS_MAEMO_5 + new TextEditAutoResizer(m_plainTextEdit); + setAttribute(Qt::WA_Maemo5StackedWindow); + QScrollArea *area = new QScrollArea(); + area->setWidget(m_plainTextEdit); + area->setWidgetResizable(true); + setCentralWidget(area); +#else + setCentralWidget(m_plainTextEdit); +#endif readSettings(); setupPreferencesMenu(); } void LoggerWidget::append(const QString &msg) { - appendPlainText(msg); + m_plainTextEdit->appendPlainText(msg); if (!isVisible() && (defaultVisibility() == AutoShowWarnings)) setVisible(true); diff --git a/tools/qml/loggerwidget.h b/tools/qml/loggerwidget.h index fd20c41..0623432 100644 --- a/tools/qml/loggerwidget.h +++ b/tools/qml/loggerwidget.h @@ -42,12 +42,17 @@ #ifndef LOGGERWIDGET_H #define LOGGERWIDGET_H -#include +#include +#include -QT_BEGIN_NAMESPACE +QT_USE_NAMESPACE -class LoggerWidget : public QPlainTextEdit { -Q_OBJECT +class QPlainTextEdit; +class QMenu; +class QAction; + +class LoggerWidget : public QMainWindow { + Q_OBJECT public: LoggerWidget(QWidget *parent=0); @@ -80,14 +85,13 @@ private: QMenu *m_preferencesMenu; QAction *m_showWidgetAction; + QPlainTextEdit *m_plainTextEdit; enum ConfigOrigin { CommandLineOrigin, SettingsOrigin }; ConfigOrigin m_visibilityOrigin; Visibility m_visibility; }; -QT_END_NAMESPACE - Q_DECLARE_METATYPE(LoggerWidget::Visibility) #endif // LOGGERWIDGET_H diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index a75023b..de5bca2 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -346,7 +346,7 @@ int main(int argc, char ** argv) if (stayOnTop) wflags |= Qt::WindowStaysOnTopHint; - QDeclarativeViewer *viewer = new QDeclarativeViewer(0, wflags); + QDeclarativeViewer *viewer = QDeclarativeViewer::instance(0, wflags); viewer->setAttribute(Qt::WA_DeleteOnClose, true); if (!scriptopts.isEmpty()) { QStringList options = diff --git a/tools/qml/proxysettings.cpp b/tools/qml/proxysettings.cpp index 3255e42..ffaa4c0 100644 --- a/tools/qml/proxysettings.cpp +++ b/tools/qml/proxysettings.cpp @@ -48,11 +48,14 @@ QT_BEGIN_NAMESPACE ProxySettings::ProxySettings (QWidget * parent) - : QDialog (parent), Ui::ProxySettings() + : QDialog (parent), Ui::ProxySettings() { setupUi (this); +#if !defined Q_WS_MAEMO_5 + // the onscreen keyboard can't cope with masks proxyServerEdit->setInputMask ("000.000.000.000;_"); +#endif QIntValidator *validator = new QIntValidator (0, 9999, this); proxyPortEdit->setValidator (validator); diff --git a/tools/qml/proxysettings.h b/tools/qml/proxysettings.h index 325929a..5d4d137 100644 --- a/tools/qml/proxysettings.h +++ b/tools/qml/proxysettings.h @@ -44,7 +44,11 @@ #include #include +#ifdef Q_WS_MAEMO_5 +#include "ui_proxysettings_maemo5.h" +#else #include "ui_proxysettings.h" +#endif QT_BEGIN_NAMESPACE /** diff --git a/tools/qml/proxysettings_maemo5.ui b/tools/qml/proxysettings_maemo5.ui new file mode 100644 index 0000000..83f0c2a --- /dev/null +++ b/tools/qml/proxysettings_maemo5.ui @@ -0,0 +1,177 @@ + + + ProxySettings + + + + 0 + 0 + 449 + 164 + + + + HTTP Proxy + + + + 16 + + + 0 + + + 16 + + + 8 + + + 16 + + + 0 + + + + + Use HTTP Proxy + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 16 + + + 0 + + + 0 + + + + + Server + + + + + + + Name or IP + + + + + + + Port + + + + + + + 8080 + + + + + + + Username + + + + + + + + + + Password + + + + + + + QLineEdit::Password + + + + + + + + + + Qt::Vertical + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + proxyCheckBox + proxyServerEdit + proxyPortEdit + usernameEdit + passwordEdit + buttonBox + + + + + buttonBox + accepted() + ProxySettings + accept() + + + 318 + 100 + + + 157 + 116 + + + + + buttonBox + rejected() + ProxySettings + reject() + + + 318 + 100 + + + 286 + 116 + + + + + diff --git a/tools/qml/qml.pri b/tools/qml/qml.pri index 58d8cc1..3e5a88b 100644 --- a/tools/qml/qml.pri +++ b/tools/qml/qml.pri @@ -19,10 +19,12 @@ SOURCES += $$PWD/qmlruntime.cpp \ RESOURCES = $$PWD/qmlruntime.qrc maemo5 { QT += dbus - SOURCES += $$PWD/deviceorientation_maemo.cpp + HEADERS += $$PWD/texteditautoresizer_maemo5.h + SOURCES += $$PWD/deviceorientation_maemo5.cpp + FORMS = $$PWD/recopts_maemo5.ui \ + $$PWD/proxysettings_maemo5.ui } else { SOURCES += $$PWD/deviceorientation.cpp + FORMS = $$PWD/recopts.ui \ + $$PWD/proxysettings.ui } - -FORMS = $$PWD/recopts.ui \ - $$PWD/proxysettings.ui diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro index 9cdec77..63efff1 100644 --- a/tools/qml/qml.pro +++ b/tools/qml/qml.pro @@ -29,6 +29,9 @@ wince* { QT += webkit } } +maemo5 { + QT += maemo5 +} symbian { TARGET.UID3 = 0x20021317 include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 676881d..090ca2a 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -44,7 +44,15 @@ #ifdef hz #undef hz #endif -#include "ui_recopts.h" +#ifdef Q_WS_MAEMO_5 +# include +# include +# include +# include +# include "ui_recopts_maemo5.h" +#else +# include "ui_recopts.h" +#endif #include "qmlruntime.h" #include @@ -136,24 +144,59 @@ private: }; -class SizedMenuBar : public QMenuBar -{ + +#if defined(Q_WS_MAEMO_5) + +class Maemo5PickerAction : public QWidgetAction { Q_OBJECT public: - SizedMenuBar(QWidget *parent, QWidget *referenceWidget) - : QMenuBar(parent), refWidget(referenceWidget) + Maemo5PickerAction(const QString &text, QActionGroup *actions, QObject *parent) + : QWidgetAction(parent), m_text(text), m_actions(actions) + { } + + QWidget *createWidget(QWidget *parent) { + QMaemo5ValueButton *button = new QMaemo5ValueButton(m_text, parent); + button->setValueLayout(QMaemo5ValueButton::ValueUnderTextCentered); + QMaemo5ListPickSelector *pick = new QMaemo5ListPickSelector(button); + button->setPickSelector(pick); + if (m_actions) { + QStringList sl; + int curIdx = -1, idx = 0; + foreach (QAction *a, m_actions->actions()) { + sl << a->text(); + if (a->isChecked()) + curIdx = idx; + idx++; + } + pick->setModel(new QStringListModel(sl)); + pick->setCurrentIndex(curIdx); + } else { + button->setEnabled(false); + } + connect(pick, SIGNAL(selected(QString)), this, SLOT(emitTriggered())); + return button; } - virtual QSize sizeHint() const +private slots: + void emitTriggered() { - return QSize(refWidget->sizeHint().width(), QMenuBar::sizeHint().height()); + QMaemo5ListPickSelector *pick = qobject_cast(sender()); + if (!pick) + return; + int idx = pick->currentIndex(); + + if (m_actions && idx >= 0 && idx < m_actions->actions().count()) + m_actions->actions().at(idx)->trigger(); } private: - QWidget *refWidget; + QString m_text; + QPointer m_actions; }; +#endif // Q_WS_MAEMO_5 + static struct { const char *name, *args; } ffmpegprofiles[] = { {"Maximum Quality", "-sameq"}, {"High Quality", "-qmax 2"}, @@ -170,7 +213,9 @@ public: RecordingDialog(QWidget *parent) : QDialog(parent) { setupUi(this); +#ifndef Q_WS_MAEMO_5 hz->setValidator(new QDoubleValidator(hz)); +#endif for (int i=0; ffmpegprofiles[i].name; ++i) { profile->addItem(ffmpegprofiles[i].name); } @@ -197,6 +242,132 @@ public: return ffmpegprofiles[i].args[0] ? QLatin1String(ffmpegprofiles[i].args) : customargs; } + void setOriginalSize(const QSize &s) + { + QString str = tr("Original (%1x%2)").arg(s.width()).arg(s.height()); + +#ifdef Q_WS_MAEMO_5 + sizeCombo->setItemText(0, str); +#else + sizeOriginal->setText(str); + if (sizeWidth->value()<=1) { + sizeWidth->setValue(s.width()); + sizeHeight->setValue(s.height()); + } +#endif + } + + void showffmpegOptions(bool b) + { +#ifdef Q_WS_MAEMO_5 + profileLabel->setVisible(b); + profile->setVisible(b); + ffmpegHelp->setVisible(b); + args->setVisible(b); +#else + ffmpegOptions->setVisible(b); +#endif + } + + void showRateOptions(bool b) + { +#ifdef Q_WS_MAEMO_5 + rateLabel->setVisible(b); + rateCombo->setVisible(b); +#else + rateOptions->setVisible(b); +#endif + } + + void setVideoRate(int rate) + { +#ifdef Q_WS_MAEMO_5 + int idx; + if (rate >= 60) + idx = 0; + else if (rate >= 50) + idx = 2; + else if (rate >= 25) + idx = 3; + else if (rate >= 24) + idx = 4; + else if (rate >= 20) + idx = 5; + else if (rate >= 15) + idx = 6; + else + idx = 7; + rateCombo->setCurrentIndex(idx); +#else + if (rate == 24) + hz24->setChecked(true); + else if (rate == 25) + hz25->setChecked(true); + else if (rate == 50) + hz50->setChecked(true); + else if (rate == 60) + hz60->setChecked(true); + else { + hzCustom->setChecked(true); + hz->setText(QString::number(rate)); + } +#endif + } + + int videoRate() const + { +#ifdef Q_WS_MAEMO_5 + switch (rateCombo->currentIndex()) { + case 0: return 60; + case 1: return 50; + case 2: return 25; + case 3: return 24; + case 4: return 20; + case 5: return 15; + case 7: return 10; + default: return 60; + } +#else + if (hz24->isChecked()) + return 24; + else if (hz25->isChecked()) + return 25; + else if (hz50->isChecked()) + return 50; + else if (hz60->isChecked()) + return 60; + else { + return hz->text().toInt(); + } +#endif + } + + QSize videoSize() const + { +#ifdef Q_WS_MAEMO_5 + switch (sizeCombo->currentIndex()) { + case 0: return QSize(); + case 1: return QSize(640,480); + case 2: return QSize(320,240); + case 3: return QSize(1280,720); + default: return QSize(); + } +#else + if (sizeOriginal->isChecked()) + return QSize(); + else if (size720p->isChecked()) + return QSize(1280,720); + else if (sizeVGA->isChecked()) + return QSize(640,480); + else if (sizeQVGA->isChecked()) + return QSize(320,240); + else + return QSize(sizeWidth->value(), sizeHeight->value()); +#endif + } + + + private slots: void pickProfile(int i) { @@ -363,15 +534,21 @@ QString QDeclarativeViewer::getVideoFileName() return QFileDialog::getSaveFileName(this, title, "", types.join(";; ")); } +QDeclarativeViewer *QDeclarativeViewer::inst = 0; + +QDeclarativeViewer *QDeclarativeViewer::instance(QWidget *parent, Qt::WindowFlags flags) +{ + if (!inst) { + inst = new QDeclarativeViewer(parent, flags); + inst->setAttribute(Qt::WA_DeleteOnClose); + } + return inst; +} QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) -#if defined(Q_OS_SYMBIAN) : QMainWindow(parent, flags) -#else - : QWidget(parent, flags) -#endif - , loggerWindow(new LoggerWidget()) - , frame_stream(0), mb(0) + , loggerWindow(new LoggerWidget(this)) + , frame_stream(0) , orientation(0) , showWarningsWindow(0) , m_scriptOptions(0) @@ -381,6 +558,10 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) { QDeclarativeViewer::registerTypes(); setWindowTitle(tr("Qt QML Viewer")); +#ifdef Q_WS_MAEMO_5 + setAttribute(Qt::WA_Maemo5StackedWindow); +// setPalette(QApplication::palette("QLabel")); +#endif devicemode = false; canvas = 0; @@ -393,9 +574,9 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) senseFfmpeg(); senseImageMagick(); if (!ffmpegAvailable) - recdlg->ffmpegOptions->hide(); + recdlg->showffmpegOptions(false); if (!ffmpegAvailable && !convertAvailable) - recdlg->rateOptions->hide(); + recdlg->showRateOptions(false); QString warn; if (!ffmpegAvailable) { if (!convertAvailable) @@ -422,21 +603,14 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) QObject::connect(warningsWidget(), SIGNAL(closed()), this, SLOT(warningsWidgetClosed())); if (!(flags & Qt::FramelessWindowHint)) { - createMenu(menuBar(),0); + createMenu(); changeOrientation(orientation->actions().value(0)); + } else { + setMenuBar(0); } -#if !defined(Q_OS_SYMBIAN) - QVBoxLayout *layout = new QVBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - setLayout(layout); - if (mb) - layout->addWidget(mb); - layout->addWidget(canvas); -#else setCentralWidget(canvas); -#endif + namFactory = new NetworkAccessManagerFactory; canvas->engine()->setNetworkAccessManagerFactory(namFactory); @@ -468,26 +642,6 @@ void QDeclarativeViewer::enableExperimentalGestures() canvas->viewport()->setAttribute(Qt::WA_AcceptTouchEvents); } -int QDeclarativeViewer::menuBarHeight() const -{ - if (!(windowFlags() & Qt::FramelessWindowHint)) - return menuBar()->height(); - else - return 0; // don't create menu -} - -QMenuBar *QDeclarativeViewer::menuBar() const -{ -#if !defined(Q_OS_SYMBIAN) - if (!mb) - mb = new SizedMenuBar((QWidget*)this, canvas); -#else - mb = QMainWindow::menuBar(); -#endif - - return mb; -} - QDeclarativeView *QDeclarativeViewer::view() const { return canvas; @@ -498,120 +652,128 @@ LoggerWidget *QDeclarativeViewer::warningsWidget() const return loggerWindow; } -void QDeclarativeViewer::createMenu(QMenuBar *menu, QMenu *flatmenu) +void QDeclarativeViewer::createMenu() { - QObject *parent = flatmenu ? (QObject*)flatmenu : (QObject*)menu; - - QMenu *fileMenu = flatmenu ? flatmenu : menu->addMenu(tr("&File")); - - QAction *openAction = new QAction(tr("&Open..."), parent); + QAction *openAction = new QAction(tr("&Open..."), this); openAction->setShortcut(QKeySequence("Ctrl+O")); connect(openAction, SIGNAL(triggered()), this, SLOT(openFile())); - fileMenu->addAction(openAction); - QAction *reloadAction = new QAction(tr("&Reload"), parent); + QAction *reloadAction = new QAction(tr("&Reload"), this); reloadAction->setShortcut(QKeySequence("Ctrl+R")); connect(reloadAction, SIGNAL(triggered()), this, SLOT(reload())); - fileMenu->addAction(reloadAction); -#if !defined(Q_OS_SYMBIAN) - if (flatmenu) flatmenu->addSeparator(); - - QMenu *recordMenu = flatmenu ? flatmenu : menu->addMenu(tr("&Recording")); - - QAction *snapshotAction = new QAction(tr("&Take Snapshot\tF3"), parent); + QAction *snapshotAction = new QAction(tr("&Take Snapshot"), this); + snapshotAction->setShortcut(QKeySequence("F3")); connect(snapshotAction, SIGNAL(triggered()), this, SLOT(takeSnapShot())); - recordMenu->addAction(snapshotAction); - recordAction = new QAction(tr("Start Recording &Video\tF9"), parent); + recordAction = new QAction(tr("Start Recording &Video"), this); + recordAction->setShortcut(QKeySequence("F9")); connect(recordAction, SIGNAL(triggered()), this, SLOT(toggleRecordingWithSelection())); - recordMenu->addAction(recordAction); - QAction *recordOptions = new QAction(tr("Video &Options..."), parent); + QAction *recordOptions = new QAction(tr("Video &Options..."), this); connect(recordOptions, SIGNAL(triggered()), this, SLOT(chooseRecordingOptions())); - if (flatmenu) - flatmenu->addAction(recordOptions); - - if (flatmenu) flatmenu->addSeparator(); - - QMenu *debugMenu = flatmenu ? flatmenu->addMenu(tr("&Debugging")) : menu->addMenu(tr("&Debugging")); - - QAction *slowAction = new QAction(tr("&Slow Down Animations"), parent); + QAction *slowAction = new QAction(tr("&Slow Down Animations"), this); slowAction->setShortcut(QKeySequence("Ctrl+.")); slowAction->setCheckable(true); connect(slowAction, SIGNAL(triggered(bool)), this, SLOT(setSlowMode(bool))); - debugMenu->addAction(slowAction); - showWarningsWindow = new QAction(tr("Show Warnings"), parent); + showWarningsWindow = new QAction(tr("Show Warnings"), this); showWarningsWindow->setCheckable((true)); showWarningsWindow->setChecked(loggerWindow->isVisible()); connect(showWarningsWindow, SIGNAL(triggered(bool)), this, SLOT(showWarnings(bool))); -#if !defined(Q_OS_SYMBIAN) - debugMenu->addAction(showWarningsWindow); -#endif - - if (flatmenu) flatmenu->addSeparator(); - -#endif // Q_OS_SYMBIAN - - QMenu *settingsMenu = flatmenu ? flatmenu : menu->addMenu(tr("S&ettings")); - QAction *proxyAction = new QAction(tr("Http &proxy..."), parent); + QAction *proxyAction = new QAction(tr("HTTP &Proxy..."), this); connect(proxyAction, SIGNAL(triggered()), this, SLOT(showProxySettings())); - settingsMenu->addAction(proxyAction); -#if !defined(Q_OS_SYMBIAN) - if (!flatmenu) - settingsMenu->addAction(recordOptions); - settingsMenu->addMenu(loggerWindow->preferencesMenu()); -#else - QAction *fullscreenAction = new QAction(tr("Full Screen"), parent); + QAction *fullscreenAction = new QAction(tr("Full Screen"), this); fullscreenAction->setCheckable(true); connect(fullscreenAction, SIGNAL(triggered()), this, SLOT(toggleFullScreen())); - settingsMenu->addAction(fullscreenAction); -#endif - if (flatmenu) flatmenu->addSeparator(); - - QMenu *propertiesMenu = settingsMenu->addMenu(tr("Properties")); - - orientation = new QActionGroup(parent); - - QAction *rotateOrientation = new QAction(tr("Rotate orientation"), parent); + QAction *rotateOrientation = new QAction(tr("Rotate orientation"), this); rotateOrientation->setShortcut(QKeySequence("Ctrl+T")); - settingsMenu->addAction(rotateOrientation); connect(rotateOrientation, SIGNAL(triggered()), this, SLOT(rotateOrientation())); + orientation = new QActionGroup(this); orientation->setExclusive(true); connect(orientation, SIGNAL(triggered(QAction*)), this, SLOT(changeOrientation(QAction*))); - orientation->addAction(tr("orientation: Portrait")); - orientation->addAction(tr("orientation: Landscape")); - orientation->addAction(tr("orientation: Portrait (Inverted)")); - orientation->addAction(tr("orientation: Landscape (Inverted)")); - QList actions = orientation->actions(); - for (int i=0; iaddAction(actions[i]); - actions[i]->setCheckable(true); - } + QAction *portraitAction = new QAction(tr("Portrait"), this); + portraitAction->setCheckable(true); + QAction *landscapeAction = new QAction(tr("Landscape"), this); + landscapeAction->setCheckable(true); + QAction *portraitInvAction = new QAction(tr("Portrait (inverted)"), this); + portraitInvAction->setCheckable(true); + QAction *landscapeInvAction = new QAction(tr("Landscape (inverted)"), this); + landscapeInvAction->setCheckable(true); - if (flatmenu) flatmenu->addSeparator(); - - QMenu *helpMenu = flatmenu ? flatmenu : menu->addMenu(tr("&Help")); - QAction *aboutAction = new QAction(tr("&About Qt..."), parent); + QAction *aboutAction = new QAction(tr("&About Qt..."), this); connect(aboutAction, SIGNAL(triggered()), qApp, SLOT(aboutQt())); - helpMenu->addAction(aboutAction); - QAction *quitAction = new QAction(tr("&Quit"), parent); + QAction *quitAction = new QAction(tr("&Quit"), this); quitAction->setShortcut(QKeySequence("Ctrl+Q")); connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); + + QMenuBar *menu = menuBar(); + if (!menu) + return; + +#if defined(Q_WS_MAEMO_5) + menu->addAction(openAction); + menu->addAction(reloadAction); + + menu->addAction(snapshotAction); + menu->addAction(recordAction); + + menu->addAction(recordOptions); + menu->addAction(proxyAction); + + menu->addAction(slowAction); + menu->addAction(showWarningsWindow); + + orientation->addAction(landscapeAction); + orientation->addAction(portraitAction); + menu->addAction(new Maemo5PickerAction(tr("Set orientation"), orientation, this)); + menu->addAction(fullscreenAction); + return; +#endif // Q_WS_MAEMO_5 + + QMenu *fileMenu = menu->addMenu(tr("&File")); + fileMenu->addAction(openAction); + fileMenu->addAction(reloadAction); fileMenu->addSeparator(); fileMenu->addAction(quitAction); - if (menu) { - menu->setFixedHeight(menu->sizeHint().height()); - menu->setMinimumWidth(10); - } + +#if !defined(Q_OS_SYMBIAN) + QMenu *recordMenu = menu->addMenu(tr("&Recording")); + recordMenu->addAction(snapshotAction); + recordMenu->addAction(recordAction); + + QMenu *debugMenu = menu->addMenu(tr("&Debugging")); + debugMenu->addAction(slowAction); + debugMenu->addAction(showWarningsWindow); +#endif // ! Q_OS_SYMBIAN + + QMenu *settingsMenu = menu->addMenu(tr("S&ettings")); + settingsMenu->addAction(proxyAction); +#if !defined(Q_OS_SYMBIAN) + settingsMenu->addAction(recordOptions); + settingsMenu->addMenu(loggerWindow->preferencesMenu()); +#else // ! Q_OS_SYMBIAN + settingsMenu->addAction(fullscreenAction); +#endif // Q_OS_SYMBIAN + settingsMenu->addAction(rotateOrientation); + + QMenu *propertiesMenu = settingsMenu->addMenu(tr("Properties")); + + orientation->addAction(portraitAction); + orientation->addAction(landscapeAction); + orientation->addAction(portraitInvAction); + orientation->addAction(landscapeInvAction); + propertiesMenu->addActions(orientation->actions()); + + QMenu *helpMenu = menu->addMenu(tr("&Help")); + helpMenu->addAction(aboutAction); } void QDeclarativeViewer::showProxySettings() @@ -685,25 +847,11 @@ void QDeclarativeViewer::chooseRecordingOptions() recdlg->file->setText(record_file); // Size - recdlg->sizeOriginal->setText(tr("Original (%1x%2)").arg(canvas->width()).arg(canvas->height())); - if (recdlg->sizeWidth->value()<=1) { - recdlg->sizeWidth->setValue(canvas->width()); - recdlg->sizeHeight->setValue(canvas->height()); - } + recdlg->setOriginalSize(canvas->size()); // Rate - if (record_rate == 24) - recdlg->hz24->setChecked(true); - else if (record_rate == 25) - recdlg->hz25->setChecked(true); - else if (record_rate == 50) - recdlg->hz50->setChecked(true); - else if (record_rate == 60) - recdlg->hz60->setChecked(true); - else { - recdlg->hzCustom->setChecked(true); - recdlg->hz->setText(QString::number(record_rate)); - } + recdlg->setVideoRate(record_rate); + // Profile recdlg->setArguments(record_args.join(" ")); @@ -711,28 +859,9 @@ void QDeclarativeViewer::chooseRecordingOptions() // File record_file = recdlg->file->text(); // Size - if (recdlg->sizeOriginal->isChecked()) - record_outsize = QSize(); - else if (recdlg->size720p->isChecked()) - record_outsize = QSize(1280,720); - else if (recdlg->sizeVGA->isChecked()) - record_outsize = QSize(640,480); - else if (recdlg->sizeQVGA->isChecked()) - record_outsize = QSize(320,240); - else - record_outsize = QSize(recdlg->sizeWidth->value(),recdlg->sizeHeight->value()); + record_outsize = recdlg->videoSize(); // Rate - if (recdlg->hz24->isChecked()) - record_rate = 24; - else if (recdlg->hz25->isChecked()) - record_rate = 25; - else if (recdlg->hz50->isChecked()) - record_rate = 50; - else if (recdlg->hz60->isChecked()) - record_rate = 60; - else { - record_rate = recdlg->hz->text().toDouble(); - } + record_rate = recdlg->videoRate(); // Profile record_args = recdlg->arguments().split(" ",QString::SkipEmptyParts); } @@ -807,7 +936,8 @@ void QDeclarativeViewer::statusChanged() initialSize = canvas->initialSize(); if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { if (!isFullScreen() && !isMaximized()) { - resize(QSize(initialSize.width(), initialSize.height()+menuBarHeight())); + canvas->setFixedSize(initialSize); + resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks updateSizeHints(); } } @@ -1181,14 +1311,14 @@ void QDeclarativeViewer::changeOrientation(QAction *action) return; action->setChecked(true); - QString o = action->text().split(QLatin1Char(':')).value(1).trimmed(); + QString o = action->text(); if (o == QLatin1String("Portrait")) DeviceOrientation::instance()->setOrientation(DeviceOrientation::Portrait); else if (o == QLatin1String("Landscape")) DeviceOrientation::instance()->setOrientation(DeviceOrientation::Landscape); - else if (o == QLatin1String("Portrait (Inverted)")) + else if (o == QLatin1String("Portrait (inverted)")) DeviceOrientation::instance()->setOrientation(DeviceOrientation::PortraitInverted); - else if (o == QLatin1String("Landscape (Inverted)")) + else if (o == QLatin1String("Landscape (inverted)")) DeviceOrientation::instance()->setOrientation(DeviceOrientation::LandscapeInverted); } @@ -1197,9 +1327,9 @@ void QDeclarativeViewer::orientationChanged() if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { if (canvas->rootObject()) { QSizeF rootObjectSize = canvas->rootObject()->boundingRect().size(); - QSize newSize(rootObjectSize.width(), rootObjectSize.height()+menuBarHeight()); - if (size() != newSize) { - resize(newSize); + if (size() != rootObjectSize.toSize()) { + canvas->setFixedSize(rootObjectSize.toSize()); + resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks } } } @@ -1253,16 +1383,13 @@ void QDeclarativeViewer::updateSizeHints() { if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) { QSize newWindowSize = canvas->sizeHint(); - newWindowSize.setHeight(newWindowSize.height()+menuBarHeight()); if (!isFullScreen() && !isMaximized()) { - resize(newWindowSize); - setFixedSize(newWindowSize); + canvas->setFixedSize(newWindowSize); + resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks } } else { // QDeclarativeView::SizeRootObjectToView canvas->setMinimumSize(QSize(0,0)); canvas->setMaximumSize(QSize(16777215,16777215)); - setMinimumSize(QSize(0,0)); - setMaximumSize(QSize(16777215,16777215)); } } diff --git a/tools/qml/qmlruntime.h b/tools/qml/qmlruntime.h index 27bd217..cb1b438 100644 --- a/tools/qml/qmlruntime.h +++ b/tools/qml/qmlruntime.h @@ -43,7 +43,6 @@ #define QDECLARATIVEVIEWER_H #include -#include #include #include #include @@ -62,17 +61,17 @@ class QNetworkReply; class QNetworkCookieJar; class NetworkAccessManagerFactory; class QTranslator; +class QActionGroup; class QDeclarativeViewer -#if defined(Q_OS_SYMBIAN) : public QMainWindow -#else - : public QWidget -#endif { -Q_OBJECT + Q_OBJECT + QDeclarativeViewer(QWidget *parent = 0, Qt::WindowFlags flags = 0); + static QDeclarativeViewer *inst; + public: - QDeclarativeViewer(QWidget *parent=0, Qt::WindowFlags flags=0); + static QDeclarativeViewer *instance(QWidget *parent = 0, Qt::WindowFlags flags = 0); ~QDeclarativeViewer(); static void registerTypes(); @@ -106,8 +105,6 @@ public: void updateSizeHints(); void setSizeToView(bool sizeToView); - QMenuBar *menuBar() const; - QDeclarativeView *view() const; LoggerWidget *warningsWidget() const; @@ -132,7 +129,7 @@ public slots: protected: virtual void keyPressEvent(QKeyEvent *); virtual bool event(QEvent *); - void createMenu(QMenuBar *menu, QMenu *flatmenu); + void createMenu(); private slots: void autoStartRecording(); @@ -150,7 +147,6 @@ private slots: private: QString getVideoFileName(); - int menuBarHeight() const; LoggerWidget *loggerWindow; QDeclarativeView *canvas; @@ -173,7 +169,6 @@ private: QAction *recordAction; QString currentSkin; bool scaleSkin; - mutable QMenuBar *mb; RecordingDialog *recdlg; void senseImageMagick(); diff --git a/tools/qml/recopts_maemo5.ui b/tools/qml/recopts_maemo5.ui new file mode 100644 index 0000000..3bb5eca --- /dev/null +++ b/tools/qml/recopts_maemo5.ui @@ -0,0 +1,254 @@ + + + RecordingOptions + + + + 0 + 0 + 469 + 142 + + + + Video options + + + + QLayout::SetMinAndMaxSize + + + 16 + + + 0 + + + 16 + + + 8 + + + 16 + + + 0 + + + + + + + + Qt::Vertical + + + + 72 + 56 + + + + + + + + Size + + + + + + + + + + + + + VGA + + + + + QVGA + + + + + 720p + + + + + + + + Rate + + + + + + + + 60 Hz + + + + + 50 Hz + + + + + 25 Hz + + + + + 24 Hz + + + + + 20 Hz + + + + + 15 Hz + + + + + 10 Hz + + + + + + + + + + + + + + Profile + + + + + + + warning + + + true + + + + + + + Qt::Vertical + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + File + + + + + + + Options + + + + + + + + + buttonBox + accepted() + RecordingOptions + accept() + + + 258 + 424 + + + 60 + 219 + + + + + buttonBox + rejected() + RecordingOptions + reject() + + + 258 + 424 + + + 92 + 219 + + + + + profile + activated(int) + RecordingOptions + pickProfile(int) + + + 92 + 329 + + + 48 + 194 + + + + + args + textEdited(QString) + RecordingOptions + storeCustomArgs(QString) + + + 128 + 357 + + + 102 + 189 + + + + + + filePicked(QString) + argumentsPicked(QString) + pickFile() + pickProfile(int) + storeCustomArgs(QString) + + diff --git a/tools/qml/texteditautoresizer_maemo5.h b/tools/qml/texteditautoresizer_maemo5.h new file mode 100644 index 0000000..2b9a5f9 --- /dev/null +++ b/tools/qml/texteditautoresizer_maemo5.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include + +#ifndef TEXTEDITAUTORESIZER_H +#define TEXTEDITAUTORESIZER_H + +class TextEditAutoResizer : public QObject +{ + Q_OBJECT +public: + TextEditAutoResizer(QWidget *parent) + : QObject(parent), plainTextEdit(qobject_cast(parent)), + textEdit(qobject_cast(parent)), edit(qobject_cast(parent)) + { + // parent must either inherit QPlainTextEdit or QTextEdit! + Q_ASSERT(plainTextEdit || textEdit); + + connect(parent, SIGNAL(textChanged()), this, SLOT(textEditChanged())); + connect(parent, SIGNAL(cursorPositionChanged()), this, SLOT(textEditChanged())); + + textEditChanged(); + } + +private Q_SLOTS: + inline void textEditChanged(); + +private: + QPlainTextEdit *plainTextEdit; + QTextEdit *textEdit; + QFrame *edit; +}; + +void TextEditAutoResizer::textEditChanged() +{ + QTextDocument *doc = textEdit ? textEdit->document() : plainTextEdit->document(); + QRect cursor = textEdit ? textEdit->cursorRect() : plainTextEdit->cursorRect(); + + QSize s = doc->size().toSize(); + if (plainTextEdit) + s.setHeight((s.height() + 2) * edit->fontMetrics().lineSpacing()); + + const QRect fr = edit->frameRect(); + const QRect cr = edit->contentsRect(); + + edit->setMinimumHeight(qMax(70, s.height() + (fr.height() - cr.height() - 1))); + +// QString s1; +// QDebug ts(&s1); +// ts << "DOC: " << s << " CURSOR: " << cursor << " MINH: " << edit->minimumHeight(); +// fprintf(stderr, "%s\n", qPrintable(s1)); + + // make sure the cursor is visible in case we have a QAbstractScrollArea parent + QPoint pos = edit->pos(); + QWidget *pw = edit->parentWidget(); + while (pw) { + if (qobject_cast(pw)) + break; + pw = pw->parentWidget(); + } + + if (pw) { + QScrollArea *area = static_cast(pw); + QPoint scrollto = area->widget()->mapFrom(edit, cursor.center()); + QPoint margin(10 + cursor.width(), 2 * cursor.height()); + + if (QAbstractKineticScroller *scroller = area->property("kineticScroller").value()) { + scroller->ensureVisible(scrollto, margin.x(), margin.y()); + } else { + area->ensureVisible(scrollto.x(), scrollto.y(), margin.x(), margin.y()); + } + } +// QDebug ts(&s2); +// ts << "ENSURE VIS: " << pos << " + " << cursor.center() << "(pos + cursor.center())" << scroller->isEnabled() << area; +// ts << "PW: " << pw << " PPW: " << (pw ? pw->parentWidget() : 0); //ENSURE VIS: " << pos << " + " << cursor.center() << "(pos + cursor.center())" << scroller->isEnabled() << area; +// fprintf(stderr, "%s\n", qPrintable(s2)); +} + +#endif -- cgit v0.12 From 7294f46ec0c5ea07e438c45a069a618ceb6e17a9 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Wed, 23 Jun 2010 12:15:36 +0200 Subject: forgot to cleanup the code a bit after adding Maemo5 support --- tools/qml/loggerwidget.cpp | 4 ++-- tools/qml/qmlruntime.cpp | 8 ++++---- tools/qml/texteditautoresizer_maemo5.h | 17 ++++------------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/tools/qml/loggerwidget.cpp b/tools/qml/loggerwidget.cpp index 71d20e8..8aa029f 100644 --- a/tools/qml/loggerwidget.cpp +++ b/tools/qml/loggerwidget.cpp @@ -63,7 +63,7 @@ LoggerWidget::LoggerWidget(QWidget *parent) : setWindowTitle(tr("Warnings")); m_plainTextEdit = new QPlainTextEdit(); - + #ifdef Q_WS_MAEMO_5 new TextEditAutoResizer(m_plainTextEdit); setAttribute(Qt::WA_Maemo5StackedWindow); @@ -71,7 +71,7 @@ LoggerWidget::LoggerWidget(QWidget *parent) : area->setWidget(m_plainTextEdit); area->setWidgetResizable(true); setCentralWidget(area); -#else +#else setCentralWidget(m_plainTextEdit); #endif readSettings(); diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 090ca2a..3a8af60 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -254,9 +254,9 @@ public: sizeWidth->setValue(s.width()); sizeHeight->setValue(s.height()); } -#endif +#endif } - + void showffmpegOptions(bool b) { #ifdef Q_WS_MAEMO_5 @@ -268,7 +268,7 @@ public: ffmpegOptions->setVisible(b); #endif } - + void showRateOptions(bool b) { #ifdef Q_WS_MAEMO_5 @@ -297,7 +297,7 @@ public: idx = 6; else idx = 7; - rateCombo->setCurrentIndex(idx); + rateCombo->setCurrentIndex(idx); #else if (rate == 24) hz24->setChecked(true); diff --git a/tools/qml/texteditautoresizer_maemo5.h b/tools/qml/texteditautoresizer_maemo5.h index 2b9a5f9..bb5567a 100644 --- a/tools/qml/texteditautoresizer_maemo5.h +++ b/tools/qml/texteditautoresizer_maemo5.h @@ -61,7 +61,7 @@ public: connect(parent, SIGNAL(textChanged()), this, SLOT(textEditChanged())); connect(parent, SIGNAL(cursorPositionChanged()), this, SLOT(textEditChanged())); - + textEditChanged(); } @@ -87,36 +87,27 @@ void TextEditAutoResizer::textEditChanged() const QRect cr = edit->contentsRect(); edit->setMinimumHeight(qMax(70, s.height() + (fr.height() - cr.height() - 1))); - -// QString s1; -// QDebug ts(&s1); -// ts << "DOC: " << s << " CURSOR: " << cursor << " MINH: " << edit->minimumHeight(); -// fprintf(stderr, "%s\n", qPrintable(s1)); // make sure the cursor is visible in case we have a QAbstractScrollArea parent QPoint pos = edit->pos(); QWidget *pw = edit->parentWidget(); - while (pw) { + while (pw) { if (qobject_cast(pw)) break; pw = pw->parentWidget(); } - + if (pw) { QScrollArea *area = static_cast(pw); QPoint scrollto = area->widget()->mapFrom(edit, cursor.center()); QPoint margin(10 + cursor.width(), 2 * cursor.height()); - + if (QAbstractKineticScroller *scroller = area->property("kineticScroller").value()) { scroller->ensureVisible(scrollto, margin.x(), margin.y()); } else { area->ensureVisible(scrollto.x(), scrollto.y(), margin.x(), margin.y()); } } -// QDebug ts(&s2); -// ts << "ENSURE VIS: " << pos << " + " << cursor.center() << "(pos + cursor.center())" << scroller->isEnabled() << area; -// ts << "PW: " << pw << " PPW: " << (pw ? pw->parentWidget() : 0); //ENSURE VIS: " << pos << " + " << cursor.center() << "(pos + cursor.center())" << scroller->isEnabled() << area; -// fprintf(stderr, "%s\n", qPrintable(s2)); } #endif -- cgit v0.12 From 9768a42358d1908701347d52887a964574b1b9b4 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Thu, 24 Jun 2010 18:37:32 +0200 Subject: fix QML Viewer resize modes --- tools/qml/qmlruntime.cpp | 10 ++++++---- tools/qml/qmlruntime.h | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 3a8af60..109de7d 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -937,8 +937,8 @@ void QDeclarativeViewer::statusChanged() if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { if (!isFullScreen() && !isMaximized()) { canvas->setFixedSize(initialSize); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks - updateSizeHints(); + resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrink + QTimer::singleShot(0, this, SLOT(updateSizeHints())); } } } @@ -1328,7 +1328,8 @@ void QDeclarativeViewer::orientationChanged() if (canvas->rootObject()) { QSizeF rootObjectSize = canvas->rootObject()->boundingRect().size(); if (size() != rootObjectSize.toSize()) { - canvas->setFixedSize(rootObjectSize.toSize()); + canvas->setMinimumSize(rootObjectSize.toSize()); + canvas->resize(rootObjectSize.toSize()); resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks } } @@ -1384,7 +1385,8 @@ void QDeclarativeViewer::updateSizeHints() if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) { QSize newWindowSize = canvas->sizeHint(); if (!isFullScreen() && !isMaximized()) { - canvas->setFixedSize(newWindowSize); + canvas->setMinimumSize(newWindowSize); + canvas->resize(newWindowSize); resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks } } else { // QDeclarativeView::SizeRootObjectToView diff --git a/tools/qml/qmlruntime.h b/tools/qml/qmlruntime.h index cb1b438..cec3204 100644 --- a/tools/qml/qmlruntime.h +++ b/tools/qml/qmlruntime.h @@ -102,7 +102,6 @@ public: void addPluginPath(const QString& plugin); void setUseGL(bool use); void setUseNativeFileBrowser(bool); - void updateSizeHints(); void setSizeToView(bool sizeToView); QDeclarativeView *view() const; @@ -145,6 +144,8 @@ private slots: void warningsWidgetOpened(); void warningsWidgetClosed(); + void updateSizeHints(); + private: QString getVideoFileName(); -- cgit v0.12 From 82e914952ad82063b31d11916e883e018111fe28 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Thu, 24 Jun 2010 18:53:30 +0200 Subject: fix namespace macros --- tools/qml/loggerwidget.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/qml/loggerwidget.h b/tools/qml/loggerwidget.h index 0623432..13c319f 100644 --- a/tools/qml/loggerwidget.h +++ b/tools/qml/loggerwidget.h @@ -45,7 +45,7 @@ #include #include -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE class QPlainTextEdit; class QMenu; @@ -92,6 +92,8 @@ private: Visibility m_visibility; }; +QT_END_NAMESPACE + Q_DECLARE_METATYPE(LoggerWidget::Visibility) #endif // LOGGERWIDGET_H -- cgit v0.12 From 842ccf428d4cbed3c4ce1e0c894fbebcfd59ce0e Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Thu, 24 Jun 2010 17:26:45 +0200 Subject: forget to rename the moc include when renaming deviceorientation_maemo.cpp --- tools/qml/deviceorientation_maemo5.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/qml/deviceorientation_maemo5.cpp b/tools/qml/deviceorientation_maemo5.cpp index 443edc8..e942579 100644 --- a/tools/qml/deviceorientation_maemo5.cpp +++ b/tools/qml/deviceorientation_maemo5.cpp @@ -124,4 +124,4 @@ DeviceOrientation* DeviceOrientation::instance() return o; } -#include "deviceorientation_maemo.moc" +#include "deviceorientation_maemo5.moc" -- cgit v0.12 From a91f8d704c3ff3826f0ea8b7e73fc6d91dd5b836 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Wed, 23 Jun 2010 17:22:47 +0200 Subject: Use custom static scopes to improve QML/JavaScript performance This commit introduces a new internal JS object type, QScriptStaticScopeObject, that enables the JS compiler to make more aggressive optimizations of scoped property access. QScriptStaticScopeObject registers all its properties in a symbol table that the JS compiler has access to. If the compiler finds the property in the symbol table, it will generate the fast index-based op_{get,put}_scoped_var bytecodes, rather than the dynamic (slow) op_resolve and friends. If the compiler _doesn't_ find the property in the symbol table, it infers that it's safe to skip the scope object when later resolving the property, which will also improve performance (see op_resolve_skip bytecode). QScriptStaticScopeObject is only safe to use when all relevant properties are known at JS compile time; that is, when a function that has the static scope object in its scope chain is compiled. It's up to the user of the class (e.g. QtDeclarative) to ensure that this constraint is not violated. The API for constructing QScriptStaticScopeObject instances is not public; it lives in QScriptDeclarativeClass for now, an internal class exported for the purpose of QML. The instance is returned as a QScriptValue and can be manipulated like any other JS object (e.g. by QScriptValue::setProperty()). The other part of this commit utilizes QScriptStaticScopeObject in QtDeclarative in the two major places where it's currently possible: 1) QML disallows adding properties to the Global Object. Furthermore, it's not possible for QML IDs and properties to "shadow" global variables. Hence, a QScriptStaticScopeObject can be used to hold all the standard ECMA properties, and this scope object can come _before_ the QML component in the scope chain. This enables binding expressions and scripts to have optimized (direct) access to e.g. Math.sin. 2) Imported scripts can have their properties (resulting from variable declarations ("var" statements) and function declarations) added to a static scope object. This enables functions in the script to have optimized (direct) access to the script's own properties, as well as to global properties such as Math. With this change, it's no longer possible to delete properties of the Global Object, nor delete properties of an imported script. It's a compromise we make in order to make the optimization safe. Task-number: QTBUG-8576 Reviewed-by: Aaron Kennedy Reviewed-by: Olivier Goffart Reviewed-by: Jedrzej Nowacki --- src/declarative/qml/qdeclarativecontext.cpp | 12 +- src/declarative/qml/qdeclarativeexpression.cpp | 8 +- .../qml/qdeclarativeglobalscriptclass.cpp | 39 ++-- .../qml/qdeclarativeglobalscriptclass_p.h | 4 +- src/declarative/qml/qdeclarativeinclude.cpp | 2 +- src/script/api/qscriptengine.cpp | 12 +- src/script/api/qscriptengine_p.h | 15 ++ src/script/bridge/bridge.pri | 2 + src/script/bridge/qscriptdeclarativeclass.cpp | 36 +++ src/script/bridge/qscriptdeclarativeclass_p.h | 5 + src/script/bridge/qscriptstaticscopeobject.cpp | 157 +++++++++++++ src/script/bridge/qscriptstaticscopeobject_p.h | 103 +++++++++ tests/auto/qscriptengine/tst_qscriptengine.cpp | 242 +++++++++++++++++++++ .../script/qscriptengine/tst_qscriptengine.cpp | 52 +++++ 14 files changed, 652 insertions(+), 37 deletions(-) create mode 100644 src/script/bridge/qscriptstaticscopeobject.cpp create mode 100644 src/script/bridge/qscriptstaticscopeobject_p.h diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp index 2221d78..60e9dd3 100644 --- a/src/declarative/qml/qdeclarativecontext.cpp +++ b/src/declarative/qml/qdeclarativecontext.cpp @@ -660,10 +660,9 @@ void QDeclarativeContextData::addImportedScript(const QDeclarativeParser::Object QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); scriptContext->pushScope(enginePriv->contextClass->newUrlContext(url)); - scriptContext->pushScope(enginePriv->globalClass->globalObject()); + scriptContext->pushScope(enginePriv->globalClass->staticGlobalObject()); - QScriptValue scope = scriptEngine->newObject(); - scriptContext->setActivationObject(scope); + QScriptValue scope = QScriptDeclarativeClass::newStaticScopeObject(scriptEngine); scriptContext->pushScope(scope); scriptEngine->evaluate(code, url, 1); @@ -686,10 +685,9 @@ void QDeclarativeContextData::addImportedScript(const QDeclarativeParser::Object QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); scriptContext->pushScope(enginePriv->contextClass->newUrlContext(this, 0, url)); - scriptContext->pushScope(enginePriv->globalClass->globalObject()); - - QScriptValue scope = scriptEngine->newObject(); - scriptContext->setActivationObject(scope); + scriptContext->pushScope(enginePriv->globalClass->staticGlobalObject()); + + QScriptValue scope = QScriptDeclarativeClass::newStaticScopeObject(scriptEngine); scriptContext->pushScope(scope); scriptEngine->evaluate(code, url, 1); diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp index b1aecfa..8ae5f2f 100644 --- a/src/declarative/qml/qdeclarativeexpression.cpp +++ b/src/declarative/qml/qdeclarativeexpression.cpp @@ -145,7 +145,7 @@ void QDeclarativeExpressionPrivate::init(QDeclarativeContextData *ctxt, void *ex if (!dd->cachedClosures.at(progIdx)) { QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); scriptContext->pushScope(ep->contextClass->newSharedContext()); - scriptContext->pushScope(ep->globalClass->globalObject()); + scriptContext->pushScope(ep->globalClass->staticGlobalObject()); dd->cachedClosures[progIdx] = new QScriptValue(scriptEngine->evaluate(data->expression, data->url, data->line)); scriptEngine->popContext(); } @@ -188,7 +188,7 @@ QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContex } else { scriptContext->pushScope(ep->contextClass->newContext(context, object)); } - scriptContext->pushScope(ep->globalClass->globalObject()); + scriptContext->pushScope(ep->globalClass->staticGlobalObject()); QScriptValue rv = ep->scriptEngine.evaluate(program, fileName, lineNumber); ep->scriptEngine.popContext(); return rv; @@ -206,7 +206,7 @@ QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContex } else { scriptContext->pushScope(ep->contextClass->newContext(context, object)); } - scriptContext->pushScope(ep->globalClass->globalObject()); + scriptContext->pushScope(ep->globalClass->staticGlobalObject()); QScriptValue rv = ep->scriptEngine.evaluate(program); ep->scriptEngine.popContext(); return rv; @@ -369,7 +369,7 @@ QScriptValue QDeclarativeExpressionPrivate::eval(QObject *secondaryScope, bool * QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(scriptEngine); data->expressionContext = ep->contextClass->newContext(data->context(), data->me); scriptContext->pushScope(data->expressionContext); - scriptContext->pushScope(ep->globalClass->globalObject()); + scriptContext->pushScope(ep->globalClass->staticGlobalObject()); if (data->expressionRewritten) { data->expressionFunction = scriptEngine->evaluate(data->expression, diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp index 6e107fb..39ea101 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp @@ -41,10 +41,13 @@ #include "private/qdeclarativeglobalscriptclass_p.h" +#include #include #include #include +#include + QT_BEGIN_NAMESPACE /* @@ -55,23 +58,31 @@ QDeclarativeGlobalScriptClass::QDeclarativeGlobalScriptClass(QScriptEngine *engi { QString eval = QLatin1String("eval"); - QScriptValue globalObject = engine->globalObject(); + QScriptValue originalGlobalObject = engine->globalObject(); - m_globalObject = engine->newObject(); QScriptValue newGlobalObject = engine->newObject(); - QScriptValueIterator iter(globalObject); - - while (iter.hasNext()) { - iter.next(); - - QString name = iter.name(); - - if (name != eval) - m_globalObject.setProperty(iter.scriptName(), iter.value()); - newGlobalObject.setProperty(iter.scriptName(), iter.value()); - - m_illegalNames.insert(name); + { + QScriptValueIterator iter(originalGlobalObject); + QVector names; + QVector values; + QVector flags; + while (iter.hasNext()) { + iter.next(); + + QString name = iter.name(); + + if (name != eval) { + names.append(name); + values.append(iter.value()); + flags.append(iter.flags() | QScriptValue::Undeletable); + } + newGlobalObject.setProperty(iter.scriptName(), iter.value()); + + m_illegalNames.insert(name); + } + m_staticGlobalObject = QScriptDeclarativeClass::newStaticScopeObject( + engine, names.size(), names.constData(), values.constData(), flags.constData()); } newGlobalObject.setScriptClass(this); diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass_p.h b/src/declarative/qml/qdeclarativeglobalscriptclass_p.h index 7690edd..414bf02 100644 --- a/src/declarative/qml/qdeclarativeglobalscriptclass_p.h +++ b/src/declarative/qml/qdeclarativeglobalscriptclass_p.h @@ -75,13 +75,13 @@ public: void explicitSetProperty(const QString &, const QScriptValue &); - const QScriptValue &globalObject() const { return m_globalObject; } + const QScriptValue &staticGlobalObject() const { return m_staticGlobalObject; } const QSet &illegalNames() const { return m_illegalNames; } private: QSet m_illegalNames; - QScriptValue m_globalObject; + QScriptValue m_staticGlobalObject; }; QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativeinclude.cpp b/src/declarative/qml/qdeclarativeinclude.cpp index c29005a..f26b54f 100644 --- a/src/declarative/qml/qdeclarativeinclude.cpp +++ b/src/declarative/qml/qdeclarativeinclude.cpp @@ -240,7 +240,7 @@ QScriptValue QDeclarativeInclude::include(QScriptContext *ctxt, QScriptEngine *e QScriptContext *scriptContext = QScriptDeclarativeClass::pushCleanContext(engine); scriptContext->pushScope(ep->contextClass->newUrlContext(context, 0, urlString)); - scriptContext->pushScope(ep->globalClass->globalObject()); + scriptContext->pushScope(ep->globalClass->staticGlobalObject()); QScriptValue scope = QScriptDeclarativeClass::scopeChainValue(ctxt, -5); scriptContext->pushScope(scope); scriptContext->setActivationObject(scope); diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index e2999c1..655026c 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -64,6 +64,7 @@ #include "bridge/qscriptqobject_p.h" #include "bridge/qscriptglobalobject_p.h" #include "bridge/qscriptactivationobject_p.h" +#include "bridge/qscriptstaticscopeobject_p.h" #ifndef QT_NO_QOBJECT #include @@ -905,6 +906,7 @@ QScriptEnginePrivate::QScriptEnginePrivate() JSC::ExecState* exec = globalObject->globalExec(); scriptObjectStructure = QScriptObject::createStructure(globalObject->objectPrototype()); + staticScopeObjectStructure = QScriptStaticScopeObject::createStructure(JSC::jsNull()); qobjectPrototype = new (exec) QScript::QObjectPrototype(exec, QScript::QObjectPrototype::createStructure(globalObject->objectPrototype()), globalObject->prototypeFunctionStructure()); qobjectWrapperObjectStructure = QScriptObject::createStructure(qobjectPrototype); @@ -1770,15 +1772,7 @@ void QScriptEnginePrivate::setProperty(JSC::ExecState *exec, JSC::JSValue object } else if (flags != QScriptValue::KeepExistingFlags) { if (thisObject->hasOwnProperty(exec, id)) thisObject->deleteProperty(exec, id); // ### hmmm - can't we just update the attributes? - unsigned attribs = 0; - if (flags & QScriptValue::ReadOnly) - attribs |= JSC::ReadOnly; - if (flags & QScriptValue::SkipInEnumeration) - attribs |= JSC::DontEnum; - if (flags & QScriptValue::Undeletable) - attribs |= JSC::DontDelete; - attribs |= flags & QScriptValue::UserRange; - thisObject->putWithAttributes(exec, id, value, attribs); + thisObject->putWithAttributes(exec, id, value, propertyFlagsToJSCAttributes(flags)); } else { JSC::PutPropertySlot slot; thisObject->put(exec, id, value, slot); diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h index 56366e2..1b35704 100644 --- a/src/script/api/qscriptengine_p.h +++ b/src/script/api/qscriptengine_p.h @@ -205,6 +205,7 @@ public: inline QScriptValue scriptValueFromJSCValue(JSC::JSValue value); inline JSC::JSValue scriptValueToJSCValue(const QScriptValue &value); + static inline unsigned propertyFlagsToJSCAttributes(const QScriptValue::PropertyFlags &flags); static inline JSC::JSValue jscValueFromVariant(JSC::ExecState*, const QVariant &value); static QVariant jscValueToVariant(JSC::ExecState*, JSC::JSValue value, int targetType); @@ -346,6 +347,7 @@ public: JSC::ExecState *currentFrame; WTF::RefPtr scriptObjectStructure; + WTF::RefPtr staticScopeObjectStructure; QScript::QObjectPrototype *qobjectPrototype; WTF::RefPtr qobjectWrapperObjectStructure; @@ -639,6 +641,19 @@ inline JSC::JSValue QScriptEnginePrivate::scriptValueToJSCValue(const QScriptVal return vv->jscValue; } +inline unsigned QScriptEnginePrivate::propertyFlagsToJSCAttributes(const QScriptValue::PropertyFlags &flags) +{ + unsigned attribs = 0; + if (flags & QScriptValue::ReadOnly) + attribs |= JSC::ReadOnly; + if (flags & QScriptValue::SkipInEnumeration) + attribs |= JSC::DontEnum; + if (flags & QScriptValue::Undeletable) + attribs |= JSC::DontDelete; + attribs |= flags & QScriptValue::UserRange; + return attribs; +} + inline QScriptValuePrivate::~QScriptValuePrivate() { if (engine) diff --git a/src/script/bridge/bridge.pri b/src/script/bridge/bridge.pri index 09e2dfb..ab0a322 100644 --- a/src/script/bridge/bridge.pri +++ b/src/script/bridge/bridge.pri @@ -6,6 +6,7 @@ SOURCES += \ $$PWD/qscriptqobject.cpp \ $$PWD/qscriptglobalobject.cpp \ $$PWD/qscriptactivationobject.cpp \ + $$PWD/qscriptstaticscopeobject.cpp \ $$PWD/qscriptdeclarativeobject.cpp \ $$PWD/qscriptdeclarativeclass.cpp @@ -17,5 +18,6 @@ HEADERS += \ $$PWD/qscriptqobject_p.h \ $$PWD/qscriptglobalobject_p.h \ $$PWD/qscriptactivationobject_p.h \ + $$PWD/qscriptstaticscopeobject_p.h \ $$PWD/qscriptdeclarativeobject_p.h \ $$PWD/qscriptdeclarativeclass_p.h diff --git a/src/script/bridge/qscriptdeclarativeclass.cpp b/src/script/bridge/qscriptdeclarativeclass.cpp index 1093448..8080b9f 100644 --- a/src/script/bridge/qscriptdeclarativeclass.cpp +++ b/src/script/bridge/qscriptdeclarativeclass.cpp @@ -24,6 +24,7 @@ #include "qscriptdeclarativeclass_p.h" #include "qscriptdeclarativeobject_p.h" #include "qscriptobject_p.h" +#include "qscriptstaticscopeobject_p.h" #include #include #include @@ -549,4 +550,39 @@ QScriptContext *QScriptDeclarativeClass::context() const return d_ptr->context; } +/*! + Creates a scope object with a fixed set of undeletable properties. +*/ +QScriptValue QScriptDeclarativeClass::newStaticScopeObject( + QScriptEngine *engine, int propertyCount, const QString *names, + const QScriptValue *values, const QScriptValue::PropertyFlags *flags) +{ + QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine); + QScript::APIShim shim(eng_p); + JSC::ExecState *exec = eng_p->currentFrame; + QScriptStaticScopeObject::PropertyInfo *props = new QScriptStaticScopeObject::PropertyInfo[propertyCount]; + for (int i = 0; i < propertyCount; ++i) { + unsigned attribs = QScriptEnginePrivate::propertyFlagsToJSCAttributes(flags[i]); + Q_ASSERT_X(attribs & JSC::DontDelete, Q_FUNC_INFO, "All properties must be undeletable"); + JSC::Identifier id = JSC::Identifier(exec, names[i]); + JSC::JSValue jsval = eng_p->scriptValueToJSCValue(values[i]); + props[i] = QScriptStaticScopeObject::PropertyInfo(id, jsval, attribs); + } + QScriptValue result = eng_p->scriptValueFromJSCValue(new (exec)QScriptStaticScopeObject(eng_p->staticScopeObjectStructure, + propertyCount, props)); + delete[] props; + return result; +} + +/*! + Creates a static scope object that's initially empty, but to which new + properties can be added. +*/ +QScriptValue QScriptDeclarativeClass::newStaticScopeObject(QScriptEngine *engine) +{ + QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine); + QScript::APIShim shim(eng_p); + return eng_p->scriptValueFromJSCValue(new (eng_p->currentFrame)QScriptStaticScopeObject(eng_p->staticScopeObjectStructure)); +} + QT_END_NAMESPACE diff --git a/src/script/bridge/qscriptdeclarativeclass_p.h b/src/script/bridge/qscriptdeclarativeclass_p.h index 714a67c..420b133 100644 --- a/src/script/bridge/qscriptdeclarativeclass_p.h +++ b/src/script/bridge/qscriptdeclarativeclass_p.h @@ -92,6 +92,11 @@ public: static QScriptValue scopeChainValue(QScriptContext *, int index); static QScriptContext *pushCleanContext(QScriptEngine *); + static QScriptValue newStaticScopeObject( + QScriptEngine *, int propertyCount, const QString *names, + const QScriptValue *values, const QScriptValue::PropertyFlags *flags); + static QScriptValue newStaticScopeObject(QScriptEngine *); + class Q_SCRIPT_EXPORT PersistentIdentifier { public: diff --git a/src/script/bridge/qscriptstaticscopeobject.cpp b/src/script/bridge/qscriptstaticscopeobject.cpp new file mode 100644 index 0000000..44548a4 --- /dev/null +++ b/src/script/bridge/qscriptstaticscopeobject.cpp @@ -0,0 +1,157 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtScript module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL-ONLY$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "config.h" +#include "qscriptstaticscopeobject_p.h" + +namespace JSC +{ + ASSERT_CLASS_FITS_IN_CELL(QT_PREPEND_NAMESPACE(QScriptStaticScopeObject)); +} + +QT_BEGIN_NAMESPACE + +/*! + \class QScriptStaticScopeObject + \internal + + Represents a static scope object. + + This class allows the VM to determine at JS script compile time whether + the object has a given property or not. If the object has the property, + a fast, index-based read/write operation will be used. If the object + doesn't have the property, the compiler knows it can safely skip this + object when dynamically resolving the property. Either way, this can + greatly improve performance. + + \sa QScriptContext::pushScope() +*/ + +const JSC::ClassInfo QScriptStaticScopeObject::info = { "QScriptStaticScopeObject", 0, 0, 0 }; + +/*! + Creates a static scope object with a fixed set of undeletable properties. + + It's not possible to add new properties to the object after construction. +*/ +QScriptStaticScopeObject::QScriptStaticScopeObject(WTF::NonNullPassRefPtr structure, + int propertyCount, const PropertyInfo* props) + : JSC::JSVariableObject(structure, new Data(/*canGrow=*/false)) +{ + int index = growRegisterArray(propertyCount); + for (int i = 0; i < propertyCount; ++i, --index) { + const PropertyInfo& prop = props[i]; + JSC::SymbolTableEntry entry(index, prop.attributes); + symbolTable().add(prop.identifier.ustring().rep(), entry); + registerAt(index) = prop.value; + } +} + +/*! + Creates an empty static scope object. + + Properties can be added to the object after construction, either by + calling QScriptValue::setProperty(), or by pushing the object on the + scope chain; variable declarations ("var" statements) and function + declarations in JavaScript will create properties on the scope object. + + Note that once the scope object has been used in a closure and the + resulting function has been compiled, it's no longer safe to add + properties to the scope object (because the VM will bypass this + object the next time the function is executed). +*/ +QScriptStaticScopeObject::QScriptStaticScopeObject(WTF::NonNullPassRefPtr structure) + : JSC::JSVariableObject(structure, new Data(/*canGrow=*/true)) +{ +} + +QScriptStaticScopeObject::~QScriptStaticScopeObject() +{ + delete d; +} + +bool QScriptStaticScopeObject::getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot& slot) +{ + return symbolTableGet(propertyName, slot); +} + +bool QScriptStaticScopeObject::getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor& descriptor) +{ + return symbolTableGet(propertyName, descriptor); +} + +void QScriptStaticScopeObject::putWithAttributes(JSC::ExecState* exec, const JSC::Identifier &propertyName, JSC::JSValue value, unsigned attributes) +{ + if (symbolTablePutWithAttributes(propertyName, value, attributes)) + return; + Q_ASSERT(d_ptr()->canGrow); + addSymbolTableProperty(propertyName, value, attributes); +} + +void QScriptStaticScopeObject::put(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValue value, JSC::PutPropertySlot&) +{ + if (symbolTablePut(propertyName, value)) + return; + Q_ASSERT(d_ptr()->canGrow); + addSymbolTableProperty(propertyName, value, /*attributes=*/0); +} + +bool QScriptStaticScopeObject::deleteProperty(JSC::ExecState*, const JSC::Identifier&) +{ + return false; +} + +void QScriptStaticScopeObject::markChildren(JSC::MarkStack& markStack) +{ + JSC::Register* registerArray = d_ptr()->registerArray.get(); + if (!registerArray) + return; + markStack.appendValues(reinterpret_cast(registerArray), d_ptr()->registerArraySize); +} + +void QScriptStaticScopeObject::addSymbolTableProperty(const JSC::Identifier& name, JSC::JSValue value, unsigned attributes) +{ + int index = growRegisterArray(1); + JSC::SymbolTableEntry newEntry(index, attributes | JSC::DontDelete); + symbolTable().add(name.ustring().rep(), newEntry); + registerAt(index) = value; +} + +/*! + Grows the register array by \a count elements, and returns the offset of + the newly added elements (note that the register file grows downwards, + starting at index -1). +*/ +int QScriptStaticScopeObject::growRegisterArray(int count) +{ + size_t oldSize = d_ptr()->registerArraySize; + size_t newSize = oldSize + count; + JSC::Register* registerArray = new JSC::Register[newSize]; + if (d_ptr()->registerArray) + memcpy(registerArray + count, d_ptr()->registerArray.get(), oldSize * sizeof(JSC::Register)); + setRegisters(registerArray + newSize, registerArray); + d_ptr()->registerArraySize = newSize; + return -oldSize - 1; +} + +QT_END_NAMESPACE diff --git a/src/script/bridge/qscriptstaticscopeobject_p.h b/src/script/bridge/qscriptstaticscopeobject_p.h new file mode 100644 index 0000000..0a0e7ef --- /dev/null +++ b/src/script/bridge/qscriptstaticscopeobject_p.h @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtScript module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL-ONLY$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QSCRIPTSTATICSCOPEOBJECT_P_H +#define QSCRIPTSTATICSCOPEOBJECT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include + +#include "JSVariableObject.h" + +QT_BEGIN_NAMESPACE + +class QScriptStaticScopeObject : public JSC::JSVariableObject { +public: + struct PropertyInfo { + PropertyInfo(const JSC::Identifier& i, JSC::JSValue v, unsigned a) + : identifier(i), value(v), attributes(a) + { } + PropertyInfo() {} + + JSC::Identifier identifier; + JSC::JSValue value; + unsigned attributes; + }; + + QScriptStaticScopeObject(WTF::NonNullPassRefPtr structure, + int propertyCount, const PropertyInfo*); + QScriptStaticScopeObject(WTF::NonNullPassRefPtr structure); + virtual ~QScriptStaticScopeObject(); + + virtual bool isDynamicScope() const { return false; } + + virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&); + virtual bool getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor&); + + virtual void putWithAttributes(JSC::ExecState *exec, const JSC::Identifier &propertyName, JSC::JSValue value, unsigned attributes); + virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue value, JSC::PutPropertySlot&); + + virtual bool deleteProperty(JSC::ExecState*, const JSC::Identifier& propertyName); + + virtual void markChildren(JSC::MarkStack&); + + virtual const JSC::ClassInfo* classInfo() const { return &info; } + static const JSC::ClassInfo info; + + static WTF::PassRefPtr createStructure(JSC::JSValue proto) { + return JSC::Structure::create(proto, JSC::TypeInfo(JSC::ObjectType, StructureFlags)); + } + +protected: + static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::NeedsThisConversion | JSC::OverridesMarkChildren | JSC::OverridesGetPropertyNames | JSC::JSVariableObject::StructureFlags; + + struct Data : public JSVariableObjectData { + Data(bool canGrow_) + : JSVariableObjectData(&symbolTable, /*registers=*/0), + canGrow(canGrow_), registerArraySize(0) + { } + bool canGrow; + int registerArraySize; + JSC::SymbolTable symbolTable; + }; + + Data* d_ptr() const { return static_cast(JSVariableObject::d); } + +private: + void addSymbolTableProperty(const JSC::Identifier&, JSC::JSValue, unsigned attributes); + int growRegisterArray(int); +}; + +QT_END_NAMESPACE + +#endif diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp index 5e59950..6885adf 100644 --- a/tests/auto/qscriptengine/tst_qscriptengine.cpp +++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp @@ -51,6 +51,8 @@ #include #include +#include + Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QObjectList) Q_DECLARE_METATYPE(QScriptProgram) @@ -169,6 +171,8 @@ private slots: void qRegExpInport_data(); void qRegExpInport(); void reentrency(); + void newFixedStaticScopeObject(); + void newGrowingStaticScopeObject(); }; tst_QScriptEngine::tst_QScriptEngine() @@ -4955,5 +4959,243 @@ void tst_QScriptEngine::reentrency() QCOMPARE(eng.evaluate("foo() + hello").toInt32(), 5+6+9); } +void tst_QScriptEngine::newFixedStaticScopeObject() +{ + QScriptEngine eng; + static const int propertyCount = 4; + QString names[] = { "foo", "bar", "baz", "Math" }; + QScriptValue values[] = { 123, "ciao", true, false }; + QScriptValue::PropertyFlags flags[] = { QScriptValue::Undeletable, + QScriptValue::ReadOnly | QScriptValue::Undeletable, + QScriptValue::SkipInEnumeration | QScriptValue::Undeletable, + QScriptValue::Undeletable }; + QScriptValue scope = QScriptDeclarativeClass::newStaticScopeObject(&eng, propertyCount, names, values, flags); + + // Query property. + for (int i = 0; i < propertyCount; ++i) { + for (int x = 0; x < 2; ++x) { + if (x) { + // Properties can't be deleted. + scope.setProperty(names[i], QScriptValue()); + } + QVERIFY(scope.property(names[i]).equals(values[i])); + QCOMPARE(scope.propertyFlags(names[i]), flags[i]); + } + } + + // Property that doesn't exist. + QVERIFY(!scope.property("noSuchProperty").isValid()); + QCOMPARE(scope.propertyFlags("noSuchProperty"), QScriptValue::PropertyFlags()); + + // Write to writable property. + { + QScriptValue oldValue = scope.property("foo"); + QVERIFY(oldValue.isNumber()); + QScriptValue newValue = oldValue.toNumber() * 2; + scope.setProperty("foo", newValue); + QVERIFY(scope.property("foo").equals(newValue)); + scope.setProperty("foo", oldValue); + QVERIFY(scope.property("foo").equals(oldValue)); + } + + // Write to read-only property. + scope.setProperty("bar", 456); + QVERIFY(scope.property("bar").equals("ciao")); + + // Iterate. + { + QScriptValueIterator it(scope); + QSet iteratedNames; + while (it.hasNext()) { + it.next(); + iteratedNames.insert(it.name()); + } + for (int i = 0; i < propertyCount; ++i) + QVERIFY(iteratedNames.contains(names[i])); + } + + // Push it on the scope chain of a new context. + QScriptContext *ctx = eng.pushContext(); + ctx->pushScope(scope); + QCOMPARE(ctx->scopeChain().size(), 3); // Global Object, native activation, custom scope + QVERIFY(ctx->activationObject().equals(scope)); + + // Read property from JS. + for (int i = 0; i < propertyCount; ++i) { + for (int x = 0; x < 2; ++x) { + if (x) { + // Property can't be deleted from JS. + QScriptValue ret = eng.evaluate(QString::fromLatin1("delete %0").arg(names[i])); + QVERIFY(ret.equals(false)); + } + QVERIFY(eng.evaluate(names[i]).equals(values[i])); + } + } + + // Property that doesn't exist. + QVERIFY(eng.evaluate("noSuchProperty").equals("ReferenceError: Can't find variable: noSuchProperty")); + + // Write property from JS. + { + QScriptValue oldValue = eng.evaluate("foo"); + QVERIFY(oldValue.isNumber()); + QScriptValue newValue = oldValue.toNumber() * 2; + QVERIFY(eng.evaluate("foo = foo * 2; foo").equals(newValue)); + scope.setProperty("foo", oldValue); + QVERIFY(eng.evaluate("foo").equals(oldValue)); + } + + // Write to read-only property. + QVERIFY(eng.evaluate("bar = 456; bar").equals("ciao")); + + // Create a closure and return properties from there. + { + QScriptValue props = eng.evaluate("(function() { var baz = 'shadow'; return [foo, bar, baz, Math, Array]; })()"); + QVERIFY(props.isArray()); + // "foo" and "bar" come from scope object. + QVERIFY(props.property(0).equals(scope.property("foo"))); + QVERIFY(props.property(1).equals(scope.property("bar"))); + // "baz" shadows property in scope object. + QVERIFY(props.property(2).equals("shadow")); + // "Math" comes from scope object, and shadows Global Object's "Math". + QVERIFY(props.property(3).equals(scope.property("Math"))); + QVERIFY(!props.property(3).equals(eng.globalObject().property("Math"))); + // "Array" comes from Global Object. + QVERIFY(props.property(4).equals(eng.globalObject().property("Array"))); + } + + // As with normal JS, assigning to an undefined variable will create + // the property on the Global Object, not the inner scope. + QVERIFY(!eng.globalObject().property("newProperty").isValid()); + QVERIFY(eng.evaluate("(function() { newProperty = 789; })()").isUndefined()); + QVERIFY(!scope.property("newProperty").isValid()); + QVERIFY(eng.globalObject().property("newProperty").isNumber()); + + // Nested static scope. + { + static const int propertyCount2 = 2; + QString names2[] = { "foo", "hum" }; + QScriptValue values2[] = { 321, "hello" }; + QScriptValue::PropertyFlags flags2[] = { QScriptValue::Undeletable, + QScriptValue::ReadOnly | QScriptValue::Undeletable }; + QScriptValue scope2 = QScriptDeclarativeClass::newStaticScopeObject(&eng, propertyCount2, names2, values2, flags2); + ctx->pushScope(scope2); + + // "foo" shadows scope.foo. + QVERIFY(eng.evaluate("foo").equals(scope2.property("foo"))); + QVERIFY(!eng.evaluate("foo").equals(scope.property("foo"))); + // "hum" comes from scope2. + QVERIFY(eng.evaluate("hum").equals(scope2.property("hum"))); + // "Array" comes from Global Object. + QVERIFY(eng.evaluate("Array").equals(eng.globalObject().property("Array"))); + + ctx->popScope(); + } + + QScriptValue fun = eng.evaluate("(function() { return foo; })"); + QVERIFY(fun.isFunction()); + eng.popContext(); + // Function's scope chain persists after popContext(). + QVERIFY(fun.call().equals(scope.property("foo"))); +} + +void tst_QScriptEngine::newGrowingStaticScopeObject() +{ + QScriptEngine eng; + QScriptValue scope = QScriptDeclarativeClass::newStaticScopeObject(&eng); + + // Initially empty. + QVERIFY(!QScriptValueIterator(scope).hasNext()); + QVERIFY(!scope.property("foo").isValid()); + + // Add a static property. + scope.setProperty("foo", 123); + QVERIFY(scope.property("foo").equals(123)); + QCOMPARE(scope.propertyFlags("foo"), QScriptValue::Undeletable); + + // Modify existing property. + scope.setProperty("foo", 456); + QVERIFY(scope.property("foo").equals(456)); + + // Add a read-only property. + scope.setProperty("bar", "ciao", QScriptValue::ReadOnly); + QVERIFY(scope.property("bar").equals("ciao")); + QCOMPARE(scope.propertyFlags("bar"), QScriptValue::ReadOnly | QScriptValue::Undeletable); + + // Attempt to modify read-only property. + scope.setProperty("bar", "hello"); + QVERIFY(scope.property("bar").equals("ciao")); + + // Properties can't be deleted. + scope.setProperty("foo", QScriptValue()); + QVERIFY(scope.property("foo").equals(456)); + scope.setProperty("bar", QScriptValue()); + QVERIFY(scope.property("bar").equals("ciao")); + + // Iterate. + { + QScriptValueIterator it(scope); + QSet iteratedNames; + while (it.hasNext()) { + it.next(); + iteratedNames.insert(it.name()); + } + QCOMPARE(iteratedNames.size(), 2); + QVERIFY(iteratedNames.contains("foo")); + QVERIFY(iteratedNames.contains("bar")); + } + + // Push it on the scope chain of a new context. + QScriptContext *ctx = eng.pushContext(); + ctx->pushScope(scope); + QCOMPARE(ctx->scopeChain().size(), 3); // Global Object, native activation, custom scope + QVERIFY(ctx->activationObject().equals(scope)); + + // Read property from JS. + QVERIFY(eng.evaluate("foo").equals(scope.property("foo"))); + QVERIFY(eng.evaluate("bar").equals(scope.property("bar"))); + + // Write property from JS. + { + QScriptValue oldValue = eng.evaluate("foo"); + QVERIFY(oldValue.isNumber()); + QScriptValue newValue = oldValue.toNumber() * 2; + QVERIFY(eng.evaluate("foo = foo * 2; foo").equals(newValue)); + scope.setProperty("foo", oldValue); + QVERIFY(eng.evaluate("foo").equals(oldValue)); + } + + // Write to read-only property. + QVERIFY(eng.evaluate("bar = 456; bar").equals("ciao")); + + // Shadow property. + QVERIFY(eng.evaluate("Math").equals(eng.globalObject().property("Math"))); + scope.setProperty("Math", "fake Math"); + QVERIFY(eng.evaluate("Math").equals(scope.property("Math"))); + + // Variable declarations will create properties on the scope. + eng.evaluate("var baz = 456"); + QVERIFY(scope.property("baz").equals(456)); + + // Function declarations will create properties on the scope. + eng.evaluate("function fun() { return baz; }"); + QVERIFY(scope.property("fun").isFunction()); + QVERIFY(scope.property("fun").call().equals(scope.property("baz"))); + + // Demonstrate the limitation of a growable static scope: Once a function that + // uses the scope has been compiled, it won't pick up properties that are added + // to the scope later. + { + QScriptValue fun = eng.evaluate("(function() { return futureProperty; })"); + QVERIFY(fun.isFunction()); + QCOMPARE(fun.call().toString(), QString::fromLatin1("ReferenceError: Can't find variable: futureProperty")); + scope.setProperty("futureProperty", "added after the function was compiled"); + // If scope were dynamic, this would return the new property. + QCOMPARE(fun.call().toString(), QString::fromLatin1("ReferenceError: Can't find variable: futureProperty")); + } + + eng.popContext(); +} + QTEST_MAIN(tst_QScriptEngine) #include "tst_qscriptengine.moc" diff --git a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp index 35e2f28..4610046 100644 --- a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp +++ b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp @@ -42,6 +42,8 @@ #include #include +#include + //TESTED_FILES= class tst_QScriptEngine : public QObject @@ -74,6 +76,8 @@ private slots: void nativeCall(); void translation_data(); void translation(); + void readScopeProperty_data(); + void readScopeProperty(); }; tst_QScriptEngine::tst_QScriptEngine() @@ -288,5 +292,53 @@ void tst_QScriptEngine::translation() } } +void tst_QScriptEngine::readScopeProperty_data() +{ + QTest::addColumn("staticScope"); + QTest::addColumn("nestedScope"); + QTest::newRow("single dynamic scope") << false << false; + QTest::newRow("single static scope") << true << false; + QTest::newRow("double dynamic scope") << false << true; + QTest::newRow("double static scope") << true << true; +} + +void tst_QScriptEngine::readScopeProperty() +{ + QFETCH(bool, staticScope); + QFETCH(bool, nestedScope); + + QScriptEngine engine; + QScriptContext *ctx = engine.pushContext(); + + QScriptValue scope; + if (staticScope) + scope = QScriptDeclarativeClass::newStaticScopeObject(&engine); + else + scope = engine.newObject(); + scope.setProperty("foo", 123); + ctx->pushScope(scope); + + if (nestedScope) { + QScriptValue scope2; + if (staticScope) + scope2 = QScriptDeclarativeClass::newStaticScopeObject(&engine); + else + scope2 = engine.newObject(); + scope2.setProperty("bar", 456); // ensure a miss in inner scope + ctx->pushScope(scope2); + } + + QScriptValue fun = engine.evaluate("(function() {\n" + " for (var i = 0; i < 10000; ++i) {\n" + " foo; foo; foo; foo; foo; foo; foo; foo;\n" + " }\n" + "})"); + engine.popContext(); + QVERIFY(fun.isFunction()); + QBENCHMARK { + fun.call(); + } +} + QTEST_MAIN(tst_QScriptEngine) #include "tst_qscriptengine.moc" -- cgit v0.12 From 3b7ae67fe2715838c32ff28694761e57e4f79537 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Fri, 25 Jun 2010 09:36:50 +0200 Subject: Fix compilation when configured with -no-xrender Reviewed-by: Eskil --- src/gui/kernel/qapplication_x11.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp index 3664743..e4d9848 100644 --- a/src/gui/kernel/qapplication_x11.cpp +++ b/src/gui/kernel/qapplication_x11.cpp @@ -2155,7 +2155,7 @@ void qt_init(QApplicationPrivate *priv, int, X11->fc_scale = fc_scale; for (int s = 0; s < ScreenCount(X11->display); ++s) { int subpixel = FC_RGBA_UNKNOWN; -#if RENDER_MAJOR > 0 || RENDER_MINOR >= 6 +#if !defined(QT_NO_XRENDER) && (RENDER_MAJOR > 0 || RENDER_MINOR >= 6) if (X11->use_xrender) { int rsp = XRenderQuerySubpixelOrder(X11->display, s); switch (rsp) { -- cgit v0.12 From 06ea7cfc8f682904496889aedec03b1f00b0a8e7 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Fri, 25 Jun 2010 10:23:44 +0200 Subject: doc: Added more DITA output to the XML generator Output Q_PROPERTY as a cxxVariable. Task-number: QTBUG-11391 --- tools/qdoc3/cppcodeparser.cpp | 32 +++++++- tools/qdoc3/ditaxmlgenerator.cpp | 56 +++++++++++++- tools/qdoc3/ditaxmlgenerator.h | 1 + tools/qdoc3/node.cpp | 39 +++++++++- tools/qdoc3/node.h | 155 ++++++++++++++++++++++----------------- 5 files changed, 207 insertions(+), 76 deletions(-) diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp index 13678af..ce7eba3 100644 --- a/tools/qdoc3/cppcodeparser.cpp +++ b/tools/qdoc3/cppcodeparser.cpp @@ -1850,16 +1850,40 @@ bool CppCodeParser::matchProperty(InnerNode *parent) else if (key == "WRITE") { tre->addPropertyFunction(property, value, PropertyNode::Setter); property->setWritable(true); - } else if (key == "STORED") + } + else if (key == "STORED") property->setStored(value.toLower() == "true"); - else if (key == "DESIGNABLE") - property->setDesignable(value.toLower() == "true"); + else if (key == "DESIGNABLE") { + QString v = value.toLower(); + if (v == "true") + property->setDesignable(true); + else if (v == "false") + property->setDesignable(false); + else { + property->setDesignable(false); + property->setRuntimeDesFunc(value); + } + } else if (key == "RESET") tre->addPropertyFunction(property, value, PropertyNode::Resetter); else if (key == "NOTIFY") { tre->addPropertyFunction(property, value, PropertyNode::Notifier); } - + else if (key == "SCRIPTABLE") { + QString v = value.toLower(); + if (v == "true") + property->setScriptable(true); + else if (v == "false") + property->setScriptable(false); + else { + property->setScriptable(false); + property->setRuntimeScrFunc(value); + } + } + else if (key == "COSTANT") + property->setConstant(); + else if (key == "FINAL") + property->setFinal(); } match(Tok_RightParen); return true; diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp index be734ac..852d209 100644 --- a/tools/qdoc3/ditaxmlgenerator.cpp +++ b/tools/qdoc3/ditaxmlgenerator.cpp @@ -4914,9 +4914,9 @@ void DitaXmlGenerator::writeProperties(const Section& s, writer.writeAttribute("value",pn->accessString()); writer.writeEndElement(); // - if (!pn->dataType().isEmpty()) { + if (!pn->qualifiedDataType().isEmpty()) { writer.writeStartElement(CXXVARIABLEDECLAREDTYPE); - writer.writeCharacters(pn->dataType()); + writer.writeCharacters(pn->qualifiedDataType()); writer.writeEndElement(); // } QString fq = fullQualification(pn); @@ -4925,11 +4925,49 @@ void DitaXmlGenerator::writeProperties(const Section& s, writer.writeCharacters(fq); writer.writeEndElement(); // } + + writer.writeStartElement(CXXVARIABLEPROTOTYPE); + writer.writeCharacters("Q_PROPERTY("); + writer.writeCharacters(pn->qualifiedDataType()); + writer.writeCharacters(" "); + writer.writeCharacters(pn->name()); + writerFunctions("READ",pn->getters()); + writerFunctions("WRITE",pn->setters()); + writerFunctions("RESET",pn->resetters()); + writerFunctions("NOTIFY",pn->notifiers()); + if (pn->isDesignable() != pn->designableDefault()) { + writer.writeCharacters(" DESIGNABLE "); + if (!pn->runtimeDesignabilityFunction().isEmpty()) + writer.writeCharacters(pn->runtimeDesignabilityFunction()); + else + writer.writeCharacters(pn->isDesignable() ? "true" : "false"); + } + if (pn->isScriptable() != pn->scriptableDefault()) { + writer.writeCharacters(" SCRIPTABLE "); + if (!pn->runtimeScriptabilityFunction().isEmpty()) + writer.writeCharacters(pn->runtimeScriptabilityFunction()); + else + writer.writeCharacters(pn->isScriptable() ? "true" : "false"); + } + if (pn->isWritable() != pn->writableDefault()) { + writer.writeCharacters(" STORED "); + writer.writeCharacters(pn->isStored() ? "true" : "false"); + } + if (pn->isUser() != pn->userDefault()) { + writer.writeCharacters(" USER "); + writer.writeCharacters(pn->isUser() ? "true" : "false"); + } + if (pn->isConstant()) + writer.writeCharacters(" CONSTANT"); + if (pn->isFinal()) + writer.writeCharacters(" FINAL"); + writer.writeCharacters(")"); + writer.writeEndElement(); // + writer.writeStartElement(CXXVARIABLENAMELOOKUP); writer.writeCharacters(pn->parent()->name() + "::" + pn->name()); writer.writeEndElement(); // - if (pn->overriddenFrom() != 0) { PropertyNode* opn = (PropertyNode*)pn->overriddenFrom(); writer.writeStartElement(CXXVARIABLEREIMPLEMENTED); @@ -4954,4 +4992,16 @@ void DitaXmlGenerator::writeProperties(const Section& s, } } +void DitaXmlGenerator::writerFunctions(const QString& tag, const NodeList& nlist) +{ + NodeList::const_iterator n = nlist.begin(); + while (n != nlist.end()) { + writer.writeCharacters(" "); + writer.writeCharacters(tag); + writer.writeCharacters(" "); + writer.writeCharacters((*n)->name()); + ++n; + } +} + QT_END_NAMESPACE diff --git a/tools/qdoc3/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h index 8c7e439..26788d7 100644 --- a/tools/qdoc3/ditaxmlgenerator.h +++ b/tools/qdoc3/ditaxmlgenerator.h @@ -133,6 +133,7 @@ class DitaXmlGenerator : public PageGenerator void writeProperties(const Section& s, const ClassNode* cn, CodeMarker* marker); + void writerFunctions(const QString& tag, const NodeList& nlist); private: enum SubTitleSize { SmallSubTitle, LargeSubTitle }; diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp index 26957ac..7596825 100644 --- a/tools/qdoc3/node.cpp +++ b/tools/qdoc3/node.cpp @@ -1287,21 +1287,39 @@ void FunctionNode::debug() const /*! \class PropertyNode + + This class describes one instance of using the Q_PROPERTY macro. */ /*! + The constructor sets the \a parent and the \a name, but + everything else is set to default values. */ PropertyNode::PropertyNode(InnerNode *parent, const QString& name) : LeafNode(Property, parent, name), sto(Trool_Default), des(Trool_Default), + scr(Trool_Default), + wri(Trool_Default), + usr(Trool_Default), + cst(false), + fnl(false), overrides(0) { + // nothing. } /*! + Sets this property's \e {overridden from} property to + \a baseProperty, which indicates that this property + overrides \a baseProperty. To begin with, all the values + in this property are set to the corresponding values in + \a baseProperty. + + We probably should ensure that the constant and final + attributes are not being overridden improperly. */ -void PropertyNode::setOverriddenFrom(const PropertyNode *baseProperty) +void PropertyNode::setOverriddenFrom(const PropertyNode* baseProperty) { for (int i = 0; i < NumFunctionRoles; ++i) { if (funcs[i].isEmpty()) @@ -1311,6 +1329,12 @@ void PropertyNode::setOverriddenFrom(const PropertyNode *baseProperty) sto = baseProperty->sto; if (des == Trool_Default) des = baseProperty->des; + if (scr == Trool_Default) + scr = baseProperty->scr; + if (wri == Trool_Default) + wri = baseProperty->wri; + if (usr == Trool_Default) + usr = baseProperty->usr; overrides = baseProperty; } @@ -1336,7 +1360,9 @@ QString PropertyNode::qualifiedDataType() const } } -/*! +/*! Converts the \a boolean value to an enum representation + of the boolean type, which includes an enum value for the + \e {default value} of the item, i.e. true, false, or default. */ PropertyNode::Trool PropertyNode::toTrool(bool boolean) { @@ -1344,6 +1370,15 @@ PropertyNode::Trool PropertyNode::toTrool(bool boolean) } /*! + Converts the enum \a troolean back to a boolean value. + If \a troolean is neither the true enum value nor the + false enum value, the boolean value returned is + \a defaultValue. + + Note that runtimeDesignabilityFunction() should be called + first. If that function returns the name of a function, it + means the function must be called at runtime to determine + whether the property is Designable. */ bool PropertyNode::fromTrool(Trool troolean, bool defaultValue) { diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h index 37f2f26..b13e113 100644 --- a/tools/qdoc3/node.h +++ b/tools/qdoc3/node.h @@ -153,7 +153,7 @@ class Node void setStatus(Status status) { sta = status; } void setThreadSafeness(ThreadSafeness safeness) { saf = safeness; } void setSince(const QString &since) { sinc = since; } - void setRelates(InnerNode *pseudoParent); + void setRelates(InnerNode* pseudoParent); void setModuleName(const QString &module) { mod = module; } void setLink(LinkType linkType, const QString &link, const QString &desc); void setUrl(const QString &url); @@ -167,8 +167,8 @@ class Node virtual bool isQmlNode() const { return false; } Type type() const { return typ; } virtual SubType subType() const { return NoSubType; } - InnerNode *parent() const { return par; } - InnerNode *relates() const { return rel; } + InnerNode* parent() const { return par; } + InnerNode* relates() const { return rel; } const QString& name() const { return nam; } QMap > links() const { return linkMap; } QString moduleName() const; @@ -195,7 +195,7 @@ class Node QString ditaXmlHref(); protected: - Node(Type type, InnerNode *parent, const QString& name); + Node(Type type, InnerNode* parent, const QString& name); private: @@ -212,8 +212,8 @@ class Node PageType pageTyp : 4; Status sta : 3; #endif - InnerNode *par; - InnerNode *rel; + InnerNode* par; + InnerNode* rel; QString nam; Location loc; Doc d; @@ -228,35 +228,35 @@ class Node class FunctionNode; class EnumNode; -typedef QList NodeList; +typedef QList NodeList; class InnerNode : public Node { public: virtual ~InnerNode(); - Node *findNode(const QString& name); - Node *findNode(const QString& name, Type type); - FunctionNode *findFunctionNode(const QString& name); - FunctionNode *findFunctionNode(const FunctionNode *clone); + Node* findNode(const QString& name); + Node* findNode(const QString& name, Type type); + FunctionNode* findFunctionNode(const QString& name); + FunctionNode* findFunctionNode(const FunctionNode* clone); void addInclude(const QString &include); void setIncludes(const QStringList &includes); - void setOverload(const FunctionNode *func, bool overlode); + void setOverload(const FunctionNode* func, bool overlode); void normalizeOverloads(); void makeUndocumentedChildrenInternal(); void deleteChildren(); void removeFromRelated(); virtual bool isInnerNode() const; - const Node *findNode(const QString& name) const; - const Node *findNode(const QString& name, Type type) const; - const FunctionNode *findFunctionNode(const QString& name) const; - const FunctionNode *findFunctionNode(const FunctionNode *clone) const; - const EnumNode *findEnumNodeForValue(const QString &enumValue) const; + const Node* findNode(const QString& name) const; + const Node* findNode(const QString& name, Type type) const; + const FunctionNode* findFunctionNode(const QString& name) const; + const FunctionNode* findFunctionNode(const FunctionNode* clone) const; + const EnumNode* findEnumNodeForValue(const QString &enumValue) const; const NodeList & childNodes() const { return children; } const NodeList & relatedNodes() const { return related; } int count() const { return children.size(); } - int overloadNumber(const FunctionNode *func) const; + int overloadNumber(const FunctionNode* func) const; int numOverloads(const QString& funcName) const; NodeList overloads(const QString &funcName) const; const QStringList& includes() const { return inc; } @@ -269,23 +269,23 @@ class InnerNode : public Node virtual void setAbstract(bool ) { } protected: - InnerNode(Type type, InnerNode *parent, const QString& name); + InnerNode(Type type, InnerNode* parent, const QString& name); private: friend class Node; - static bool isSameSignature(const FunctionNode *f1, const FunctionNode *f2); - void addChild(Node *child); - void removeChild(Node *child); - void removeRelated(Node *pseudoChild); + static bool isSameSignature(const FunctionNode* f1, const FunctionNode* f2); + void addChild(Node* child); + void removeChild(Node* child); + void removeRelated(Node* pseudoChild); QStringList pageKeywds; QStringList inc; NodeList children; NodeList enumChildren; NodeList related; - QMap childMap; - QMap primaryFunctionMap; + QMap childMap; + QMap primaryFunctionMap; QMap secondaryFunctionMap; }; @@ -304,7 +304,7 @@ class LeafNode : public Node class NamespaceNode : public InnerNode { public: - NamespaceNode(InnerNode *parent, const QString& name); + NamespaceNode(InnerNode* parent, const QString& name); virtual ~NamespaceNode() { } }; @@ -329,11 +329,11 @@ struct RelatedClass class ClassNode : public InnerNode { public: - ClassNode(InnerNode *parent, const QString& name); + ClassNode(InnerNode* parent, const QString& name); virtual ~ClassNode() { } void addBaseClass(Access access, - ClassNode *node, + ClassNode* node, const QString &dataTypeWithTemplateArgs = ""); void fixBaseClasses(); @@ -363,12 +363,12 @@ class FakeNode : public InnerNode { public: - FakeNode(InnerNode *parent, const QString& name, SubType subType); + FakeNode(InnerNode* parent, const QString& name, SubType subType); virtual ~FakeNode() { } void setTitle(const QString &title) { tle = title; } void setSubTitle(const QString &subTitle) { stle = subTitle; } - void addGroupMember(Node *node) { gr.append(node); } + void addGroupMember(Node* node) { gr.append(node); } SubType subType() const { return sub; } QString title() const { return tle; } @@ -388,7 +388,7 @@ class FakeNode : public InnerNode class QmlClassNode : public FakeNode { public: - QmlClassNode(InnerNode *parent, + QmlClassNode(InnerNode* parent, const QString& name, const ClassNode* cn); virtual ~QmlClassNode(); @@ -411,7 +411,7 @@ class QmlClassNode : public FakeNode class QmlBasicTypeNode : public FakeNode { public: - QmlBasicTypeNode(InnerNode *parent, + QmlBasicTypeNode(InnerNode* parent, const QString& name); virtual ~QmlBasicTypeNode() { } virtual bool isQmlNode() const { return true; } @@ -498,41 +498,41 @@ class TypedefNode; class EnumNode : public LeafNode { public: - EnumNode(InnerNode *parent, const QString& name); + EnumNode(InnerNode* parent, const QString& name); virtual ~EnumNode() { } void addItem(const EnumItem& item); - void setFlagsType(TypedefNode *typedeff); + void setFlagsType(TypedefNode* typedeff); bool hasItem(const QString &name) const { return names.contains(name); } const QList& items() const { return itms; } Access itemAccess(const QString& name) const; - const TypedefNode *flagsType() const { return ft; } + const TypedefNode* flagsType() const { return ft; } QString itemValue(const QString &name) const; private: QList itms; QSet names; - const TypedefNode *ft; + const TypedefNode* ft; }; class TypedefNode : public LeafNode { public: - TypedefNode(InnerNode *parent, const QString& name); + TypedefNode(InnerNode* parent, const QString& name); virtual ~TypedefNode() { } - const EnumNode *associatedEnum() const { return ae; } + const EnumNode* associatedEnum() const { return ae; } private: - void setAssociatedEnum(const EnumNode *enume); + void setAssociatedEnum(const EnumNode* enume); friend class EnumNode; - const EnumNode *ae; + const EnumNode* ae; }; -inline void EnumNode::setFlagsType(TypedefNode *typedeff) +inline void EnumNode::setFlagsType(TypedefNode* typedeff) { ft = typedeff; typedeff->setAssociatedEnum(this); @@ -584,8 +584,8 @@ class FunctionNode : public LeafNode Native }; enum Virtualness { NonVirtual, ImpureVirtual, PureVirtual }; - FunctionNode(InnerNode *parent, const QString &name); - FunctionNode(Type type, InnerNode *parent, const QString &name, bool attached); + FunctionNode(InnerNode* parent, const QString &name); + FunctionNode(Type type, InnerNode* parent, const QString &name, bool attached); virtual ~FunctionNode() { } void setReturnType(const QString& returnType) { rt = returnType; } @@ -598,8 +598,8 @@ class FunctionNode : public LeafNode void setReimp(bool r); void addParameter(const Parameter& parameter); inline void setParameters(const QList& parameters); - void borrowParameterNames(const FunctionNode *source); - void setReimplementedFrom(FunctionNode *from); + void borrowParameterNames(const FunctionNode* source); + void setReimplementedFrom(FunctionNode* from); const QString& returnType() const { return rt; } Metaness metaness() const { return met; } @@ -616,9 +616,9 @@ class FunctionNode : public LeafNode int numOverloads() const; const QList& parameters() const { return params; } QStringList parameterNames() const; - const FunctionNode *reimplementedFrom() const { return rf; } - const QList &reimplementedBy() const { return rb; } - const PropertyNode *associatedProperty() const { return ap; } + const FunctionNode* reimplementedFrom() const { return rf; } + const QList &reimplementedBy() const { return rb; } + const PropertyNode* associatedProperty() const { return ap; } const QStringList& parentPath() const { return pp; } QStringList reconstructParams(bool values = false) const; @@ -632,7 +632,7 @@ class FunctionNode : public LeafNode void debug() const; private: - void setAssociatedProperty(PropertyNode *property); + void setAssociatedProperty(PropertyNode* property); friend class InnerNode; friend class PropertyNode; @@ -652,9 +652,9 @@ class FunctionNode : public LeafNode bool reimp: 1; bool att: 1; QList params; - const FunctionNode *rf; - const PropertyNode *ap; - QList rb; + const FunctionNode* rf; + const PropertyNode* ap; + QList rb; }; class PropertyNode : public LeafNode @@ -663,16 +663,22 @@ class PropertyNode : public LeafNode enum FunctionRole { Getter, Setter, Resetter, Notifier }; enum { NumFunctionRoles = Notifier + 1 }; - PropertyNode(InnerNode *parent, const QString& name); + PropertyNode(InnerNode* parent, const QString& name); virtual ~PropertyNode() { } void setDataType(const QString& dataType) { dt = dataType; } - void addFunction(FunctionNode *function, FunctionRole role); - void addSignal(FunctionNode *function, FunctionRole role); + void addFunction(FunctionNode* function, FunctionRole role); + void addSignal(FunctionNode* function, FunctionRole role); void setStored(bool stored) { sto = toTrool(stored); } void setDesignable(bool designable) { des = toTrool(designable); } + void setScriptable(bool scriptable) { scr = toTrool(scriptable); } void setWritable(bool writable) { wri = toTrool(writable); } - void setOverriddenFrom(const PropertyNode *baseProperty); + void setUser(bool user) { usr = toTrool(user); } + void setOverriddenFrom(const PropertyNode* baseProperty); + void setRuntimeDesFunc(const QString& rdf) { runtimeDesFunc = rdf; } + void setRuntimeScrFunc(const QString& scrf) { runtimeScrFunc = scrf; } + void setConstant() { cst = true; } + void setFinal() { fnl = true; } const QString &dataType() const { return dt; } QString qualifiedDataType() const; @@ -684,8 +690,20 @@ class PropertyNode : public LeafNode NodeList notifiers() const { return functions(Notifier); } bool isStored() const { return fromTrool(sto, storedDefault()); } bool isDesignable() const { return fromTrool(des, designableDefault()); } + bool isScriptable() const { return fromTrool(scr, scriptableDefault()); } + const QString& runtimeDesignabilityFunction() const { return runtimeDesFunc; } + const QString& runtimeScriptabilityFunction() const { return runtimeScrFunc; } bool isWritable() const { return fromTrool(wri, writableDefault()); } - const PropertyNode *overriddenFrom() const { return overrides; } + bool isUser() const { return fromTrool(usr, userDefault()); } + bool isConstant() const { return cst; } + bool isFinal() const { return fnl; } + const PropertyNode* overriddenFrom() const { return overrides; } + + bool storedDefault() const { return true; } + bool userDefault() const { return false; } + bool designableDefault() const { return !setters().isEmpty(); } + bool scriptableDefault() const { return true; } + bool writableDefault() const { return !setters().isEmpty(); } private: enum Trool { Trool_True, Trool_False, Trool_Default }; @@ -693,16 +711,18 @@ class PropertyNode : public LeafNode static Trool toTrool(bool boolean); static bool fromTrool(Trool troolean, bool defaultValue); - bool storedDefault() const { return true; } - bool designableDefault() const { return !setters().isEmpty(); } - bool writableDefault() const { return !setters().isEmpty(); } - QString dt; + QString runtimeDesFunc; + QString runtimeScrFunc; NodeList funcs[NumFunctionRoles]; Trool sto; Trool des; + Trool scr; Trool wri; - const PropertyNode *overrides; + Trool usr; + bool cst; + bool fnl; + const PropertyNode* overrides; }; inline void FunctionNode::setParameters(const QList ¶meters) @@ -710,13 +730,13 @@ inline void FunctionNode::setParameters(const QList ¶meters) params = parameters; } -inline void PropertyNode::addFunction(FunctionNode *function, FunctionRole role) +inline void PropertyNode::addFunction(FunctionNode* function, FunctionRole role) { funcs[(int)role].append(function); function->setAssociatedProperty(this); } -inline void PropertyNode::addSignal(FunctionNode *function, FunctionRole role) +inline void PropertyNode::addSignal(FunctionNode* function, FunctionRole role) { funcs[(int)role].append(function); } @@ -732,7 +752,7 @@ inline NodeList PropertyNode::functions() const class VariableNode : public LeafNode { public: - VariableNode(InnerNode *parent, const QString &name); + VariableNode(InnerNode* parent, const QString &name); virtual ~VariableNode() { } void setLeftType(const QString &leftType) { lt = leftType; } @@ -750,15 +770,16 @@ class VariableNode : public LeafNode bool sta; }; -inline VariableNode::VariableNode(InnerNode *parent, const QString &name) +inline VariableNode::VariableNode(InnerNode* parent, const QString &name) : LeafNode(Variable, parent, name), sta(false) { + // nothing. } class TargetNode : public LeafNode { public: - TargetNode(InnerNode *parent, const QString& name); + TargetNode(InnerNode* parent, const QString& name); virtual ~TargetNode() { } virtual bool isInnerNode() const; -- cgit v0.12 From 79342a635d71d1612795ab878b145f6e95ab23d2 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 25 Jun 2010 10:32:47 +0200 Subject: Updated Harfbuzz from git+ssh://git.freedesktop.org/git/harfbuzz to 4b88f595ab62b7c5f703a286c4f5f13f8784a936 * Fix crash/regression in thai line word breaking when libthai is installed: Commit 4b88f595ab62b7c5f703a286c4f5f13f8784a936 upstream ensures the zero termination of the string passed to libthai. --- src/3rdparty/harfbuzz/src/harfbuzz-thai.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c index fc2bdbf..e153ba9 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c +++ b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c @@ -53,6 +53,8 @@ static void to_tis620(const HB_UChar16 *string, hb_uint32 len, const char *cstr) else result[i] = '?'; } + + result[len] = 0; } static void thaiWordBreaks(const HB_UChar16 *string, hb_uint32 len, HB_CharAttributes *attributes) @@ -70,8 +72,8 @@ static void thaiWordBreaks(const HB_UChar16 *string, hb_uint32 len, HB_CharAttri if (!th_brk) return; - if (len > 128) - cstr = (char *)malloc(len*sizeof(char)); + if (len >= 128) + cstr = (char *)malloc(len*sizeof(char) + 1); to_tis620(string, len, cstr); @@ -96,7 +98,7 @@ static void thaiWordBreaks(const HB_UChar16 *string, hb_uint32 len, HB_CharAttri if (break_positions != brp) free(break_positions); - if (len > 128) + if (len >= 128) free(cstr); } -- cgit v0.12 From bae307e98aedb70d46ca0fd934d6fbca6044b151 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 25 Jun 2010 11:05:27 +0200 Subject: Fix linking on arm with def files Added two missing QIODevicePrivate exports used implicitly by QtNetwork Reviewed-by: Trust me --- src/s60installs/eabi/QtCoreu.def | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index 48cad39..7b9e777 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -3707,4 +3707,6 @@ EXPORTS _ZrsR11QDataStreamR12QEasingCurve @ 3706 NONAME _ZNK7QLocale13textDirectionEv @ 3707 NONAME _ZNK7QString13isRightToLeftEv @ 3708 NONAME + _ZN16QIODevicePrivate4peekEPcx @ 3709 NONAME + _ZN16QIODevicePrivate4peekEx @ 3710 NONAME -- cgit v0.12 From 65725d65882bd821c2a704307d201d246d8342b5 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Fri, 25 Jun 2010 11:14:22 +0200 Subject: Fix warnings in QSslSocketPrivate::systemCaCertificates() Reviewed-by: Markus Goetz --- src/network/ssl/qsslsocket_openssl.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 36a0cc7..9bd93a2 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -574,17 +574,17 @@ QList QSslSocketPrivate::systemCaCertificates() } } #elif defined(Q_OS_AIX) - systemCerts.append(QSslCertificate::fromPath("/var/ssl/certs/*.pem", QSsl::Pem, QRegExp::Wildcard)); + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/var/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); #elif defined(Q_OS_SOLARIS) - systemCerts.append(QSslCertificate::fromPath("/usr/local/ssl/certs/*.pem", QSsl::Pem, QRegExp::Wildcard)); + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); #elif defined(Q_OS_HPUX) - systemCerts.append(QSslCertificate::fromPath("/opt/openssl/certs/*.pem", QSsl::Pem, QRegExp::Wildcard)); + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/opt/openssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); #elif defined(Q_OS_LINUX) - systemCerts.append(QSslCertificate::fromPath("/etc/ssl/certs/*.pem", QSsl::Pem, QRegExp::Wildcard)); // (K)ubuntu, OpenSUSE, Mandriva, ... - systemCerts.append(QSslCertificate::fromPath("/etc/pki/tls/certs/ca-bundle.crt", QSsl::Pem)); // Fedora - systemCerts.append(QSslCertificate::fromPath("/usr/lib/ssl/certs/*.pem", QSsl::Pem, QRegExp::Wildcard)); // Gentoo, Mandrake - systemCerts.append(QSslCertificate::fromPath("/usr/share/ssl/*.pem", QSsl::Pem, QRegExp::Wildcard)); // Centos, Redhat, SuSE - systemCerts.append(QSslCertificate::fromPath("/usr/local/ssl/*.pem", QSsl::Pem, QRegExp::Wildcard)); // Normal OpenSSL Tarball + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // (K)ubuntu, OpenSUSE, Mandriva, ... + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/lib/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Gentoo, Mandrake + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/share/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Centos, Redhat, SuSE + systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Normal OpenSSL Tarball #endif return systemCerts; } -- cgit v0.12 From 1223f3f3d32bdc394a0fcd8d034fb3ad0afab0c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Thu, 24 Jun 2010 15:15:56 +0200 Subject: Fixed autotest failure in QPainter::setOpacity when NEON is used. Be more lenient in the comparison, rounding errors might lead to slightly different values. Reviewed-by: Trond --- tests/auto/qpainter/tst_qpainter.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp index 701dc2e..27ee6e7 100644 --- a/tests/auto/qpainter/tst_qpainter.cpp +++ b/tests/auto/qpainter/tst_qpainter.cpp @@ -2648,12 +2648,16 @@ void tst_QPainter::setOpacity() p.drawImage(imageRect, src, imageRect); p.end(); - QImage expected(imageSize, destFormat); - p.begin(&expected); - p.fillRect(imageRect, QColor(127, 127, 127)); - p.end(); - - QCOMPARE(dest, expected); + QImage actual = dest.convertToFormat(QImage::Format_RGB32); + + for (int y = 0; y < actual.height(); ++y) { + QRgb *p = (QRgb *)actual.scanLine(y); + for (int x = 0; x < actual.width(); ++x) { + QVERIFY(qAbs(qRed(p[x]) - 127) <= 0xf); + QVERIFY(qAbs(qGreen(p[x]) - 127) <= 0xf); + QVERIFY(qAbs(qBlue(p[x]) - 127) <= 0xf); + } + } } void tst_QPainter::drawhelper_blend_untransformed_data() -- cgit v0.12 From 6887d006ecf2b4a4250659c45a2d9ba002dbcb80 Mon Sep 17 00:00:00 2001 From: Iain Date: Fri, 25 Jun 2010 11:38:56 +0200 Subject: Update EABI and WINSCW DEF files for Symbian Reviewed-by: TrustMe --- src/s60installs/bwins/QtCoreu.def | 2 ++ src/s60installs/bwins/QtDeclarativeu.def | 4 ++++ src/s60installs/bwins/QtGuiu.def | 4 ++++ src/s60installs/eabi/QtDeclarativeu.def | 5 +++++ src/s60installs/eabi/QtGuiu.def | 3 +++ 5 files changed, 18 insertions(+) diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def index 45caeb0..101c6a8 100644 --- a/src/s60installs/bwins/QtCoreu.def +++ b/src/s60installs/bwins/QtCoreu.def @@ -4480,4 +4480,6 @@ EXPORTS ?trUtf8@QEventDispatcherSymbian@@SA?AVQString@@PBD0H@Z @ 4479 NONAME ; class QString QEventDispatcherSymbian::trUtf8(char const *, char const *, int) ?staticMetaObject@QEventDispatcherSymbian@@2UQMetaObject@@B @ 4480 NONAME ; struct QMetaObject const QEventDispatcherSymbian::staticMetaObject ?textDirection@QLocale@@QBE?AW4LayoutDirection@Qt@@XZ @ 4481 NONAME ; enum Qt::LayoutDirection QLocale::textDirection(void) const + ?peek@QIODevicePrivate@@UAE_JPAD_J@Z @ 4482 NONAME ; long long QIODevicePrivate::peek(char *, long long) + ?peek@QIODevicePrivate@@UAE?AVQByteArray@@_J@Z @ 4483 NONAME ; class QByteArray QIODevicePrivate::peek(long long) diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 0aac72b..ddc8cf4 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -4097,4 +4097,8 @@ EXPORTS ?setHeader@QDeclarativeGridView@@QAEXPAVQDeclarativeComponent@@@Z @ 4096 NONAME ; void QDeclarativeGridView::setHeader(class QDeclarativeComponent *) ?header@QDeclarativeGridView@@QBEPAVQDeclarativeComponent@@XZ @ 4097 NONAME ; class QDeclarativeComponent * QDeclarativeGridView::header(void) const ?footerChanged@QDeclarativeGridView@@IAEXXZ @ 4098 NONAME ; void QDeclarativeGridView::footerChanged(void) + ?registerAutoParentFunction@QDeclarativePrivate@@YAHP6A?AW4AutoParentResult@1@PAVQObject@@0@Z@Z @ 4099 NONAME ; int QDeclarativePrivate::registerAutoParentFunction(enum QDeclarativePrivate::AutoParentResult (*)(class QObject *, class QObject *)) + ?parentFunctions@QDeclarativeMetaType@@SA?AV?$QList@P6A?AW4AutoParentResult@QDeclarativePrivate@@PAVQObject@@0@Z@@XZ @ 4100 NONAME ; class QList QDeclarativeMetaType::parentFunctions(void) + ?inputMethodEvent@QDeclarativeTextInput@@MAEXPAVQInputMethodEvent@@@Z @ 4101 NONAME ; void QDeclarativeTextInput::inputMethodEvent(class QInputMethodEvent *) + ?doUpdate@QDeclarativeBorderImage@@AAEXXZ @ 4102 NONAME ; void QDeclarativeBorderImage::doUpdate(void) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index d439927..6e20131 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -12820,4 +12820,8 @@ EXPORTS ?textOption@QStaticText@@QBE?AVQTextOption@@XZ @ 12819 NONAME ; class QTextOption QStaticText::textOption(void) const ?isRightToLeft@QTextEngine@@QBE_NXZ @ 12820 NONAME ; bool QTextEngine::isRightToLeft(void) const ?textDirection@QTextBlock@@QBE?AW4LayoutDirection@Qt@@XZ @ 12821 NONAME ; enum Qt::LayoutDirection QTextBlock::textDirection(void) const + ?convertInPlace@QImageData@@QAE_NW4Format@QImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12822 NONAME ; bool QImageData::convertInPlace(enum QImage::Format, class QFlags) + ?createPixmapForImage@QRasterPixmapData@@IAEXAAVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@_N@Z @ 12823 NONAME ; void QRasterPixmapData::createPixmapForImage(class QImage &, class QFlags, bool) + ??0Tab@QTextOption@@QAE@MW4TabType@1@VQChar@@@Z @ 12824 NONAME ; QTextOption::Tab::Tab(float, enum QTextOption::TabType, class QChar) + ?fromData@QRasterPixmapData@@UAE_NPBEIPBDV?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12825 NONAME ; bool QRasterPixmapData::fromData(unsigned char const *, unsigned int, char const *, class QFlags) diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index f997454..96e74a6 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -3681,4 +3681,9 @@ EXPORTS _ZNK17QDeclarativeState7isNamedEv @ 3680 NONAME _ZNK20QDeclarativeGridView6footerEv @ 3681 NONAME _ZNK20QDeclarativeGridView6headerEv @ 3682 NONAME + _ZN19QDeclarativePrivate26registerAutoParentFunctionEPFNS_16AutoParentResultEP7QObjectS2_E @ 3683 NONAME + _ZN20QDeclarativeMetaType15parentFunctionsEv @ 3684 NONAME + _ZN21QDeclarativeTextInput16inputMethodEventEP17QInputMethodEvent @ 3685 NONAME + _ZN23QDeclarativeBorderImage8doUpdateEv @ 3686 NONAME + _ZThn8_N21QDeclarativeTextInput16inputMethodEventEP17QInputMethodEvent @ 3687 NONAME diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index b59ddee..e7d865b 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -12017,4 +12017,7 @@ EXPORTS _ZNK11QStaticText10textOptionEv @ 12016 NONAME _ZNK11QTextEngine13isRightToLeftEv @ 12017 NONAME _ZNK14QWidgetPrivate22childAtRecursiveHelperERK6QPointbb @ 12018 NONAME + _ZN10QImageData14convertInPlaceEN6QImage6FormatE6QFlagsIN2Qt19ImageConversionFlagEE @ 12019 NONAME + _ZN17QRasterPixmapData20createPixmapForImageER6QImage6QFlagsIN2Qt19ImageConversionFlagEEb @ 12020 NONAME + _ZN17QRasterPixmapData8fromDataEPKhjPKc6QFlagsIN2Qt19ImageConversionFlagEE @ 12021 NONAME -- cgit v0.12 From a144416f28ff256eed9913edc8453acb00760876 Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Fri, 25 Jun 2010 11:21:21 +0200 Subject: QSemaphore::tryAquire(timeout) -- never times out on an active semaphore If a thread trying to acquire multiple resources is continuously preempted by threads acquiring smaller amounts, the larger consumer would end up waiting forever (instead of for the given timeout). Fix this by keeping track of elapsed time between wakeups using QElapsedTimer. Task-number: QTBUG-11500 Reviewed-by: thiago --- src/corelib/thread/qsemaphore.cpp | 7 ++++- tests/auto/qsemaphore/tst_qsemaphore.cpp | 49 ++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp index 9dc828d..8e8a88a 100644 --- a/src/corelib/thread/qsemaphore.cpp +++ b/src/corelib/thread/qsemaphore.cpp @@ -44,6 +44,8 @@ #ifndef QT_NO_THREAD #include "qmutex.h" #include "qwaitcondition.h" +#include "qelapsedtimer.h" +#include "qdatetime.h" QT_BEGIN_NAMESPACE @@ -218,8 +220,11 @@ bool QSemaphore::tryAcquire(int n, int timeout) while (n > d->avail) d->cond.wait(locker.mutex()); } else { + QElapsedTimer timer; + timer.start(); while (n > d->avail) { - if (!d->cond.wait(locker.mutex(), timeout)) + if (timer.hasExpired(timeout) + || !d->cond.wait(locker.mutex(), timeout - timer.elapsed())) return false; } } diff --git a/tests/auto/qsemaphore/tst_qsemaphore.cpp b/tests/auto/qsemaphore/tst_qsemaphore.cpp index ace33dc..7cede30 100644 --- a/tests/auto/qsemaphore/tst_qsemaphore.cpp +++ b/tests/auto/qsemaphore/tst_qsemaphore.cpp @@ -63,6 +63,7 @@ private slots: void tryAcquire(); void tryAcquireWithTimeout_data(); void tryAcquireWithTimeout(); + void tryAcquireWithTimeoutStarvation(); void release(); void available(); void producerConsumer(); @@ -232,8 +233,8 @@ void tst_QSemaphore::tryAcquireWithTimeout_data() { QTest::addColumn("timeout"); - QTest::newRow("") << 1000; - QTest::newRow("") << 10000; + QTest::newRow("1s") << 1000; + QTest::newRow("10s") << 10000; } void tst_QSemaphore::tryAcquireWithTimeout() @@ -316,6 +317,50 @@ void tst_QSemaphore::tryAcquireWithTimeout() QCOMPARE(semaphore.available(), 0); } +void tst_QSemaphore::tryAcquireWithTimeoutStarvation() +{ + class Thread : public QThread + { + public: + QSemaphore startup; + QSemaphore *semaphore; + int amountToConsume, timeout; + + void run() + { + startup.release(); + forever { + if (!semaphore->tryAcquire(amountToConsume, timeout)) + break; + semaphore->release(amountToConsume); + } + } + }; + + QSemaphore semaphore; + semaphore.release(1); + + Thread consumer; + consumer.semaphore = &semaphore; + consumer.amountToConsume = 1; + consumer.timeout = 1000; + + // start the thread and wait for it to start consuming + consumer.start(); + consumer.startup.acquire(); + + // try to consume more than the thread we started is, and provide a longer + // timeout... we should timeout, not wait indefinitely + QVERIFY(!semaphore.tryAcquire(consumer.amountToConsume * 2, consumer.timeout * 2)); + + // the consumer should still be running + QVERIFY(consumer.isRunning() && !consumer.isFinished()); + + // acquire, and wait for smallConsumer to timeout + semaphore.acquire(); + QVERIFY(consumer.wait()); +} + void tst_QSemaphore::release() { DEPENDS_ON("acquire"); } -- cgit v0.12 From 451a017e4d819a53d22b5dd5b562f99bda7ac087 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Fri, 25 Jun 2010 13:29:45 +0200 Subject: doc: Added more DITA output to the XML generator Output the \variable stuff as a cxxVariable. Task-number: QTBUG-11391 --- tools/qdoc3/codechunk.h | 2 +- tools/qdoc3/ditaxmlgenerator.cpp | 72 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 8 deletions(-) diff --git a/tools/qdoc3/codechunk.h b/tools/qdoc3/codechunk.h index e78873c..a0c554e 100644 --- a/tools/qdoc3/codechunk.h +++ b/tools/qdoc3/codechunk.h @@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE /* The CodeChunk class represents a tiny piece of C++ code. - The class provides convertion between a list of lexemes and a string. It adds + The class provides conversion between a list of lexemes and a string. It adds spaces at the right place for consistent style. The tiny pieces of code it represents are data types, enum values, and default parameter values. diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp index 852d209..0135983 100644 --- a/tools/qdoc3/ditaxmlgenerator.cpp +++ b/tools/qdoc3/ditaxmlgenerator.cpp @@ -4573,7 +4573,8 @@ void DitaXmlGenerator::writeLocation(const Node* n) s2 = CXXTYPEDEFDECLARATIONFILE; s3 = CXXTYPEDEFDECLARATIONFILELINE; } - else if (n->type() == Node::Property) { + else if ((n->type() == Node::Property) || + (n->type() == Node::Variable)) { s1 = CXXVARIABLEAPIITEMLOCATION; s2 = CXXVARIABLEDECLARATIONFILE; s3 = CXXVARIABLEDECLARATIONFILELINE; @@ -4716,6 +4717,8 @@ void DitaXmlGenerator::writeParameters(const FunctionNode* fn, CodeMarker* marke writer.writeStartElement(CXXFUNCTIONPARAMETER); writer.writeStartElement(CXXFUNCTIONPARAMETERDECLAREDTYPE); writer.writeCharacters((*p).leftType()); + if (!(*p).rightType().isEmpty()) + writer.writeCharacters((*p).rightType()); writer.writeEndElement(); // writer.writeStartElement(CXXFUNCTIONPARAMETERDECLARATIONNAME); writer.writeCharacters((*p).name()); @@ -4888,12 +4891,6 @@ void DitaXmlGenerator::writeTypedefs(const Section& s, } } -void DitaXmlGenerator::writeDataMembers(const Section& s, - const ClassNode* cn, - CodeMarker* marker) -{ -} - void DitaXmlGenerator::writeProperties(const Section& s, const ClassNode* cn, CodeMarker* marker) @@ -4992,6 +4989,67 @@ void DitaXmlGenerator::writeProperties(const Section& s, } } +void DitaXmlGenerator::writeDataMembers(const Section& s, + const ClassNode* cn, + CodeMarker* marker) +{ + NodeList::ConstIterator m = s.members.begin(); + while (m != s.members.end()) { + if ((*m)->type() == Node::Variable) { + const VariableNode* vn = static_cast(*m); + writer.writeStartElement(CXXVARIABLE); + writer.writeAttribute("id",vn->guid()); + writer.writeStartElement(APINAME); + writer.writeCharacters(vn->name()); + writer.writeEndElement(); // + generateBrief(vn,marker); + writer.writeStartElement(CXXVARIABLEDETAIL); + writer.writeStartElement(CXXVARIABLEDEFINITION); + writer.writeStartElement(CXXVARIABLEACCESSSPECIFIER); + writer.writeAttribute("value",vn->accessString()); + writer.writeEndElement(); // + + writer.writeStartElement(CXXVARIABLEDECLAREDTYPE); + writer.writeCharacters(vn->leftType()); + if (!vn->rightType().isEmpty()) + writer.writeCharacters(vn->rightType()); + writer.writeEndElement(); // + + QString fq = fullQualification(vn); + if (!fq.isEmpty()) { + writer.writeStartElement(CXXVARIABLESCOPEDNAME); + writer.writeCharacters(fq); + writer.writeEndElement(); // + } + + writer.writeStartElement(CXXVARIABLEPROTOTYPE); + writer.writeCharacters(vn->leftType() + " "); + //writer.writeCharacters(vn->parent()->name() + "::" + vn->name()); + writer.writeCharacters(vn->name()); + if (!vn->rightType().isEmpty()) + writer.writeCharacters(vn->rightType()); + writer.writeEndElement(); // + + writer.writeStartElement(CXXVARIABLENAMELOOKUP); + writer.writeCharacters(vn->parent()->name() + "::" + vn->name()); + writer.writeEndElement(); // + + writeLocation(vn); + writer.writeEndElement(); // + writer.writeStartElement(APIDESC); + + if (!vn->doc().isEmpty()) { + generateBody(vn, marker); + } + + writer.writeEndElement(); // + writer.writeEndElement(); // + writer.writeEndElement(); // + } + ++m; + } +} + void DitaXmlGenerator::writerFunctions(const QString& tag, const NodeList& nlist) { NodeList::const_iterator n = nlist.begin(); -- cgit v0.12 From 287f6e933add5dc822c484170c5fece25c7ac846 Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Fri, 25 Jun 2010 14:08:21 +0200 Subject: Doc: fixing search bug --- tools/qdoc3/htmlgenerator.cpp | 12 +++++++++++- tools/qdoc3/test/qt-html-templates.qdocconf | 6 ++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 339c390..9e16676 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -1890,7 +1890,17 @@ void HtmlGenerator::generateFooter(const Node *node) } else { - out() << " \n"; + out() << " \n";\n"; + out() << " \n"; out() << "\n"; } out() << "\n"; diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf index 1fb000b..b82e337 100644 --- a/tools/qdoc3/test/qt-html-templates.qdocconf +++ b/tools/qdoc3/test/qt-html-templates.qdocconf @@ -11,7 +11,7 @@ HTML.postheader = "
\n" \ " Qt Reference Documentation\n" \ "
\n" \ "
\n" \ - " \n" \ + " \n" \ "
\n" \ "
\n" \ "
\n" \ @@ -160,7 +160,9 @@ HTML.footer = " \n" \ "
\n" \ "
X
\n" \ "
\n" \ - "

\n" \ + "

Thank you for giving your feedback.

Make sure it is related the page. For more general bugs and \n" \ + " requests, please use the Qt Bug Tracker

\n" \ + "

\n" \ "

\n" \ "
\n" \ "
\n" \ -- cgit v0.12 From ff7b6c0da57c37f39b72b9823c5b4d78c4e95cb7 Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Fri, 25 Jun 2010 15:43:56 +0200 Subject: Change the files to camelcase as avkon now does that In older avkon solutions all headers were lowercase in newer they are CamelCase... Reviewed-by: Axis --- mkspecs/common/symbian/header-wrappers/AknLayoutFont.h | 2 ++ .../header-wrappers/AknsBasicBackgroundControlContext.h | 1 + mkspecs/common/symbian/header-wrappers/AknsConstants.h | 1 + mkspecs/common/symbian/header-wrappers/AknsDrawUtils.h | 1 + mkspecs/common/symbian/header-wrappers/AknsItemID.h | 1 + mkspecs/common/symbian/header-wrappers/AknsSkinInstance.h | 1 + mkspecs/common/symbian/header-wrappers/AknsUtils.h | 1 + src/gui/styles/qs60style_s60.cpp | 14 +++++++------- 8 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 mkspecs/common/symbian/header-wrappers/AknLayoutFont.h create mode 100644 mkspecs/common/symbian/header-wrappers/AknsBasicBackgroundControlContext.h create mode 100644 mkspecs/common/symbian/header-wrappers/AknsConstants.h create mode 100644 mkspecs/common/symbian/header-wrappers/AknsDrawUtils.h create mode 100644 mkspecs/common/symbian/header-wrappers/AknsItemID.h create mode 100644 mkspecs/common/symbian/header-wrappers/AknsSkinInstance.h create mode 100644 mkspecs/common/symbian/header-wrappers/AknsUtils.h diff --git a/mkspecs/common/symbian/header-wrappers/AknLayoutFont.h b/mkspecs/common/symbian/header-wrappers/AknLayoutFont.h new file mode 100644 index 0000000..b5954e1 --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknLayoutFont.h @@ -0,0 +1,2 @@ +#include + diff --git a/mkspecs/common/symbian/header-wrappers/AknsBasicBackgroundControlContext.h b/mkspecs/common/symbian/header-wrappers/AknsBasicBackgroundControlContext.h new file mode 100644 index 0000000..d121122 --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknsBasicBackgroundControlContext.h @@ -0,0 +1 @@ +#include diff --git a/mkspecs/common/symbian/header-wrappers/AknsConstants.h b/mkspecs/common/symbian/header-wrappers/AknsConstants.h new file mode 100644 index 0000000..c262866 --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknsConstants.h @@ -0,0 +1 @@ +#include diff --git a/mkspecs/common/symbian/header-wrappers/AknsDrawUtils.h b/mkspecs/common/symbian/header-wrappers/AknsDrawUtils.h new file mode 100644 index 0000000..7d71624 --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknsDrawUtils.h @@ -0,0 +1 @@ +#include diff --git a/mkspecs/common/symbian/header-wrappers/AknsItemID.h b/mkspecs/common/symbian/header-wrappers/AknsItemID.h new file mode 100644 index 0000000..fe3b80e --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknsItemID.h @@ -0,0 +1 @@ +#include diff --git a/mkspecs/common/symbian/header-wrappers/AknsSkinInstance.h b/mkspecs/common/symbian/header-wrappers/AknsSkinInstance.h new file mode 100644 index 0000000..4a9dcd8 --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknsSkinInstance.h @@ -0,0 +1 @@ +#include diff --git a/mkspecs/common/symbian/header-wrappers/AknsUtils.h b/mkspecs/common/symbian/header-wrappers/AknsUtils.h new file mode 100644 index 0000000..1b9bece --- /dev/null +++ b/mkspecs/common/symbian/header-wrappers/AknsUtils.h @@ -0,0 +1 @@ +#include diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp index 4bb2ea8..2527662 100644 --- a/src/gui/styles/qs60style_s60.cpp +++ b/src/gui/styles/qs60style_s60.cpp @@ -50,17 +50,17 @@ #include "qapplication.h" #include -#include +#include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include -#include +#include #include #include #include -- cgit v0.12 From 15866a4436814da5da9348a8c930ee1d826ecb9a Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Fri, 25 Jun 2010 15:44:04 +0200 Subject: Make symbian/unix shadow builds work again. --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 5d97405..7f6d43b 100755 --- a/configure +++ b/configure @@ -2340,7 +2340,7 @@ if [ "$OPT_SHADOW" = "yes" ]; then chmod 755 "$outpath/bin/syncqt" fi - for i in createpackage patch_capabilities; do + for i in elf2e32_qtwrapper createpackage patch_capabilities; do rm -f "$outpath/bin/$i" if [ -x "$relpath/bin/$i" ]; then mkdir -p "$outpath/bin" -- cgit v0.12 From 075648e46650797f2b520f98513a7aed9f0ffec7 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Fri, 25 Jun 2010 15:47:58 +0200 Subject: Warn if surface creation fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Output the same warning that qegl.cpp does also in the X11 implementation. Reviewed-by: Trond Kjernåsen --- src/gui/egl/qegl_x11.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 969acc4..fea6e8d 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -415,7 +415,10 @@ EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig config, const QEg // At this point, the widget's window should be created and have the correct visual. Now we // just need to create the EGL surface for it: - return eglCreateWindowSurface(QEgl::display(), config, (EGLNativeWindowType)widget->winId(), 0); + EGLSurface surf = eglCreateWindowSurface(QEgl::display(), config, (EGLNativeWindowType)widget->winId(), 0); + if (surf == EGL_NO_SURFACE) + qWarning("QEglContext::createSurface(): Unable to create EGL surface, error = 0x%x", eglGetError()); + return surf; } if (x11PixmapData) { -- cgit v0.12 From 860094d4e2614c0926f2af0e3538412ece31f726 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Fri, 25 Jun 2010 16:05:25 +0200 Subject: Avoid memory allocation when converting from Gbk to unicode. This change is the equivalent of 19e1b32bdeeeb5c7865038cab97b40dbac0e6c42 and 987458462994497f764baf253baca0faabdb63cc but for the Gbk case. It improve performance by avoiding the constructor of QChar and by allocating the memory once instead of doing it for each character. This also fix QTBUG-11704. Reviewed-by: Andreas Kling --- src/plugins/codecs/cn/qgb18030codec.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/plugins/codecs/cn/qgb18030codec.cpp b/src/plugins/codecs/cn/qgb18030codec.cpp index 3f2eec7..e10c8b1 100644 --- a/src/plugins/codecs/cn/qgb18030codec.cpp +++ b/src/plugins/codecs/cn/qgb18030codec.cpp @@ -319,7 +319,7 @@ QString QGbkCodec::convertToUnicode(const char* chars, int len, ConverterState * { uchar buf[2]; int nbuf = 0; - QChar replacement = QChar::ReplacementCharacter; + ushort replacement = QChar::ReplacementCharacter; if (state) { if (state->flags & ConvertInvalidToNull) replacement = QChar::Null; @@ -330,6 +330,9 @@ QString QGbkCodec::convertToUnicode(const char* chars, int len, ConverterState * int invalid = 0; QString result; + result.resize(len); + int unicodeLen = 0; + ushort *const resultData = reinterpret_cast(result.data()); //qDebug("QGbkDecoder::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len); for (int i=0; i(u)); + ++unicodeLen; } else { - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; } nbuf = 0; } else { // Error - result += replacement; + resultData[unicodeLen] = replacement; + ++unicodeLen; ++invalid; nbuf = 0; } break; } } + result.resize(unicodeLen); if (state) { state->remainingChars = nbuf; -- cgit v0.12 From a179ae5dd94d0c51ebbf7d5c5b8eef5b3099c163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Fri, 25 Jun 2010 14:11:44 +0200 Subject: Fixed autotest failure in QPathClipper on N900. We need to use double precision for the angle computations, as they are crucial to build correct winged edge structures. Reviewed-by: Trond --- src/gui/painting/qpathclipper.cpp | 48 +++++++++++++-------------------------- src/gui/painting/qpathclipper_p.h | 4 ++-- 2 files changed, 18 insertions(+), 34 deletions(-) diff --git a/src/gui/painting/qpathclipper.cpp b/src/gui/painting/qpathclipper.cpp index 78553c9..a17b7c1 100644 --- a/src/gui/painting/qpathclipper.cpp +++ b/src/gui/painting/qpathclipper.cpp @@ -86,9 +86,11 @@ static qreal dot(const QPointF &a, const QPointF &b) return a.x() * b.x() + a.y() * b.y(); } -static QPointF normalize(const QPointF &p) +static void normalize(double &x, double &y) { - return p / qSqrt(p.x() * p.x() + p.y() * p.y()); + double reciprocal = 1 / qSqrt(x * x + y * y); + x *= reciprocal; + y *= reciprocal; } struct QIntersection @@ -1017,8 +1019,8 @@ qreal QWingedEdge::delta(int vertex, int a, int b) const const QPathEdge *ap = edge(a); const QPathEdge *bp = edge(b); - qreal a_angle = ap->angle; - qreal b_angle = bp->angle; + double a_angle = ap->angle; + double b_angle = bp->angle; if (vertex == ap->second) a_angle = ap->invAngle; @@ -1026,7 +1028,7 @@ qreal QWingedEdge::delta(int vertex, int a, int b) const if (vertex == bp->second) b_angle = bp->invAngle; - qreal result = b_angle - a_angle; + double result = b_angle - a_angle; if (result >= 128.) return result - 128.; @@ -1036,26 +1038,6 @@ qreal QWingedEdge::delta(int vertex, int a, int b) const return result; } -static inline QPointF tangentAt(const QWingedEdge &list, int vi, int ei) -{ - const QPathEdge *ep = list.edge(ei); - Q_ASSERT(ep); - - qreal sign; - - if (ep->first == vi) { - sign = 1; - } else { - sign = -1; - } - - const QPointF a = *list.vertex(ep->first); - const QPointF b = *list.vertex(ep->second); - QPointF normal = b - a; - - return normalize(sign * normal); -} - static inline QPointF midPoint(const QWingedEdge &list, int ei) { const QPathEdge *ep = list.edge(ei); @@ -1191,7 +1173,7 @@ static int commonEdge(const QWingedEdge &list, int a, int b) return -1; } -static qreal computeAngle(const QPointF &v) +static double computeAngle(const QPointF &v) { #if 1 if (v.x() == 0) { @@ -1200,15 +1182,17 @@ static qreal computeAngle(const QPointF &v) return v.x() <= 0 ? 32. : 96.; } - QPointF nv = normalize(v); - if (nv.y() < 0) { - if (nv.x() < 0) { // 0 - 32 - return -32. * nv.x(); + double vx = v.x(); + double vy = v.y(); + normalize(vx, vy); + if (vy < 0) { + if (vx < 0) { // 0 - 32 + return -32. * vx; } else { // 96 - 128 - return 128. - 32. * nv.x(); + return 128. - 32. * vx; } } else { // 32 - 96 - return 64. + 32 * nv.x(); + return 64. + 32. * vx; } #else // doesn't seem to be robust enough diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h index fab618d..bdad4e1 100644 --- a/src/gui/painting/qpathclipper_p.h +++ b/src/gui/painting/qpathclipper_p.h @@ -148,8 +148,8 @@ public: int first; int second; - qreal angle; - qreal invAngle; + double angle; + double invAngle; int next(Traversal traversal, Direction direction) const; -- cgit v0.12 From 0fa3175421a3329fe4cb3fb9f79f30807105b02f Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Fri, 25 Jun 2010 14:51:12 +0200 Subject: Fix conversion between JavaScript Date and QDateTime Use JavaScriptCore's conversion functions rather than our own (incomplete) implementation. Specifically, this means daylight saving time is finally handled correctly on Windows. Task-number: QTBUG-9770 Reviewed-by: Olivier Goffart --- src/script/api/qscriptengine.cpp | 47 +++++ src/script/api/qscriptengine_p.h | 10 +- src/script/script.pri | 1 - src/script/utils/qscriptdate.cpp | 365 --------------------------------------- src/script/utils/qscriptdate_p.h | 52 ------ src/script/utils/utils.pri | 5 - 6 files changed, 53 insertions(+), 427 deletions(-) delete mode 100644 src/script/utils/qscriptdate.cpp delete mode 100644 src/script/utils/qscriptdate_p.h delete mode 100644 src/script/utils/utils.pri diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 655026c..7bccffe 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -438,6 +438,53 @@ qsreal ToNumber(const QString &value) #endif +static const qsreal MsPerSecond = 1000.0; + +static inline int MsFromTime(qsreal t) +{ + int r = int(::fmod(t, MsPerSecond)); + return (r >= 0) ? r : r + int(MsPerSecond); +} + +/*! + \internal + Converts a JS date value (milliseconds) to a QDateTime (local time). +*/ +QDateTime MsToDateTime(JSC::ExecState *exec, qsreal t) +{ + if (qIsNaN(t)) + return QDateTime(); + JSC::GregorianDateTime tm; + JSC::msToGregorianDateTime(exec, t, /*output UTC=*/true, tm); + int ms = MsFromTime(t); + QDateTime convertedUTC = QDateTime(QDate(tm.year + 1900, tm.month + 1, tm.monthDay), + QTime(tm.hour, tm.minute, tm.second, ms), Qt::UTC); + return convertedUTC.toLocalTime(); +} + +/*! + \internal + Converts a QDateTime to a JS date value (milliseconds). +*/ +qsreal DateTimeToMs(JSC::ExecState *exec, const QDateTime &dt) +{ + if (!dt.isValid()) + return qSNaN(); + QDateTime utc = dt.toUTC(); + QDate date = utc.date(); + QTime time = utc.time(); + JSC::GregorianDateTime tm; + tm.year = date.year() - 1900; + tm.month = date.month() - 1; + tm.monthDay = date.day(); + tm.weekDay = date.dayOfWeek(); + tm.yearDay = date.dayOfYear(); + tm.hour = time.hour(); + tm.minute = time.minute(); + tm.second = time.second(); + return JSC::gregorianDateTimeToMS(exec, tm, time.msec(), /*inputIsUTC=*/true); +} + void GlobalClientData::mark(JSC::MarkStack& markStack) { engine->mark(markStack); diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h index 1b35704..c71465d 100644 --- a/src/script/api/qscriptengine_p.h +++ b/src/script/api/qscriptengine_p.h @@ -50,7 +50,6 @@ #include "bridge/qscriptobject_p.h" #include "bridge/qscriptqobject_p.h" #include "bridge/qscriptvariant_p.h" -#include "utils/qscriptdate_p.h" #include "DateConstructor.h" #include "DateInstance.h" @@ -119,6 +118,9 @@ namespace QScript inline QString ToString(qsreal); #endif + QDateTime MsToDateTime(JSC::ExecState *, qsreal); + qsreal DateTimeToMs(JSC::ExecState *, const QDateTime &); + //some conversion helper functions inline QScriptEnginePrivate *scriptEngineFromExec(const JSC::ExecState *exec); bool isFunction(JSC::JSValue value); @@ -861,7 +863,7 @@ inline JSC::JSValue QScriptEnginePrivate::newDate(JSC::ExecState *exec, qsreal v inline JSC::JSValue QScriptEnginePrivate::newDate(JSC::ExecState *exec, const QDateTime &value) { - return newDate(exec, QScript::FromDateTime(value)); + return newDate(exec, QScript::DateTimeToMs(exec, value)); } inline JSC::JSValue QScriptEnginePrivate::newObject() @@ -994,12 +996,12 @@ inline JSC::UString QScriptEnginePrivate::toString(JSC::ExecState *exec, JSC::JS return str; } -inline QDateTime QScriptEnginePrivate::toDateTime(JSC::ExecState *, JSC::JSValue value) +inline QDateTime QScriptEnginePrivate::toDateTime(JSC::ExecState *exec, JSC::JSValue value) { if (!isDate(value)) return QDateTime(); qsreal t = static_cast(JSC::asObject(value))->internalNumber(); - return QScript::ToDateTime(t, Qt::LocalTime); + return QScript::MsToDateTime(exec, t); } inline QObject *QScriptEnginePrivate::toQObject(JSC::ExecState *exec, JSC::JSValue value) diff --git a/src/script/script.pri b/src/script/script.pri index 2ee1a82..9cd71d3 100644 --- a/src/script/script.pri +++ b/src/script/script.pri @@ -1,4 +1,3 @@ include($$PWD/api/api.pri) include($$PWD/bridge/bridge.pri) include($$PWD/parser/parser.pri) -include($$PWD/utils/utils.pri) diff --git a/src/script/utils/qscriptdate.cpp b/src/script/utils/qscriptdate.cpp deleted file mode 100644 index 5980256..0000000 --- a/src/script/utils/qscriptdate.cpp +++ /dev/null @@ -1,365 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtScript module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL-ONLY$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qscriptdate_p.h" - -#include -#include - -#include - -#ifndef Q_WS_WIN -# include -# include -#else -# include -#endif - -QT_BEGIN_NAMESPACE - -namespace QScript { - -qsreal ToInteger(qsreal n); - -static const qsreal HoursPerDay = 24.0; -static const qsreal MinutesPerHour = 60.0; -static const qsreal SecondsPerMinute = 60.0; -static const qsreal msPerSecond = 1000.0; -static const qsreal msPerMinute = 60000.0; -static const qsreal msPerHour = 3600000.0; -static const qsreal msPerDay = 86400000.0; - -static qsreal LocalTZA = 0.0; // initialized at startup - -static inline qsreal TimeWithinDay(qsreal t) -{ - qsreal r = ::fmod(t, msPerDay); - return (r >= 0) ? r : r + msPerDay; -} - -static inline int HourFromTime(qsreal t) -{ - int r = int(::fmod(::floor(t / msPerHour), HoursPerDay)); - return (r >= 0) ? r : r + int(HoursPerDay); -} - -static inline int MinFromTime(qsreal t) -{ - int r = int(::fmod(::floor(t / msPerMinute), MinutesPerHour)); - return (r >= 0) ? r : r + int(MinutesPerHour); -} - -static inline int SecFromTime(qsreal t) -{ - int r = int(::fmod(::floor(t / msPerSecond), SecondsPerMinute)); - return (r >= 0) ? r : r + int(SecondsPerMinute); -} - -static inline int msFromTime(qsreal t) -{ - int r = int(::fmod(t, msPerSecond)); - return (r >= 0) ? r : r + int(msPerSecond); -} - -static inline qsreal Day(qsreal t) -{ - return ::floor(t / msPerDay); -} - -static inline qsreal DaysInYear(qsreal y) -{ - if (::fmod(y, 4)) - return 365; - - else if (::fmod(y, 100)) - return 366; - - else if (::fmod(y, 400)) - return 365; - - return 366; -} - -static inline qsreal DayFromYear(qsreal y) -{ - return 365 * (y - 1970) - + ::floor((y - 1969) / 4) - - ::floor((y - 1901) / 100) - + ::floor((y - 1601) / 400); -} - -static inline qsreal TimeFromYear(qsreal y) -{ - return msPerDay * DayFromYear(y); -} - -static inline qsreal YearFromTime(qsreal t) -{ - int y = 1970; - y += (int) ::floor(t / (msPerDay * 365.2425)); - - qsreal t2 = TimeFromYear(y); - return (t2 > t) ? y - 1 : ((t2 + msPerDay * DaysInYear(y)) <= t) ? y + 1 : y; -} - -static inline bool InLeapYear(qsreal t) -{ - qsreal x = DaysInYear(YearFromTime(t)); - if (x == 365) - return 0; - - Q_ASSERT (x == 366); - return 1; -} - -static inline qsreal DayWithinYear(qsreal t) -{ - return Day(t) - DayFromYear(YearFromTime(t)); -} - -static inline qsreal MonthFromTime(qsreal t) -{ - qsreal d = DayWithinYear(t); - qsreal l = InLeapYear(t); - - if (d < 31.0) - return 0; - - else if (d < 59.0 + l) - return 1; - - else if (d < 90.0 + l) - return 2; - - else if (d < 120.0 + l) - return 3; - - else if (d < 151.0 + l) - return 4; - - else if (d < 181.0 + l) - return 5; - - else if (d < 212.0 + l) - return 6; - - else if (d < 243.0 + l) - return 7; - - else if (d < 273.0 + l) - return 8; - - else if (d < 304.0 + l) - return 9; - - else if (d < 334.0 + l) - return 10; - - else if (d < 365.0 + l) - return 11; - - return qSNaN(); // ### assert? -} - -static inline qsreal DateFromTime(qsreal t) -{ - int m = (int) ToInteger(MonthFromTime(t)); - qsreal d = DayWithinYear(t); - qsreal l = InLeapYear(t); - - switch (m) { - case 0: return d + 1.0; - case 1: return d - 30.0; - case 2: return d - 58.0 - l; - case 3: return d - 89.0 - l; - case 4: return d - 119.0 - l; - case 5: return d - 150.0 - l; - case 6: return d - 180.0 - l; - case 7: return d - 211.0 - l; - case 8: return d - 242.0 - l; - case 9: return d - 272.0 - l; - case 10: return d - 303.0 - l; - case 11: return d - 333.0 - l; - } - - return qSNaN(); // ### assert -} - -static inline qsreal WeekDay(qsreal t) -{ - qsreal r = ::fmod (Day(t) + 4.0, 7.0); - return (r >= 0) ? r : r + 7.0; -} - - -static inline qsreal MakeTime(qsreal hour, qsreal min, qsreal sec, qsreal ms) -{ - return ((hour * MinutesPerHour + min) * SecondsPerMinute + sec) * msPerSecond + ms; -} - -static inline qsreal DayFromMonth(qsreal month, qsreal leap) -{ - switch ((int) month) { - case 0: return 0; - case 1: return 31.0; - case 2: return 59.0 + leap; - case 3: return 90.0 + leap; - case 4: return 120.0 + leap; - case 5: return 151.0 + leap; - case 6: return 181.0 + leap; - case 7: return 212.0 + leap; - case 8: return 243.0 + leap; - case 9: return 273.0 + leap; - case 10: return 304.0 + leap; - case 11: return 334.0 + leap; - } - - return qSNaN(); // ### assert? -} - -static qsreal MakeDay(qsreal year, qsreal month, qsreal day) -{ - year += ::floor(month / 12.0); - - month = ::fmod(month, 12.0); - if (month < 0) - month += 12.0; - - qsreal t = TimeFromYear(year); - qsreal leap = InLeapYear(t); - - day += ::floor(t / msPerDay); - day += DayFromMonth(month, leap); - - return day - 1; -} - -static inline qsreal MakeDate(qsreal day, qsreal time) -{ - return day * msPerDay + time; -} - -static inline qsreal DaylightSavingTA(double t) -{ -#ifndef Q_WS_WIN - long int tt = (long int)(t / msPerSecond); - struct tm *tmtm = localtime((const time_t*)&tt); - if (! tmtm) - return 0; - return (tmtm->tm_isdst > 0) ? msPerHour : 0; -#else - Q_UNUSED(t); - /// ### implement me - return 0; -#endif -} - -static inline qsreal LocalTime(qsreal t) -{ - return t + LocalTZA + DaylightSavingTA(t); -} - -static inline qsreal UTC(qsreal t) -{ - return t - LocalTZA - DaylightSavingTA(t - LocalTZA); -} - -static inline qsreal TimeClip(qsreal t) -{ - if (! qIsFinite(t) || fabs(t) > 8.64e15) - return qSNaN(); - return ToInteger(t); -} - -static qsreal getLocalTZA() -{ -#ifndef Q_WS_WIN - struct tm* t; - time_t curr; - time(&curr); - t = localtime(&curr); - time_t locl = mktime(t); - t = gmtime(&curr); - time_t globl = mktime(t); - return double(locl - globl) * 1000.0; -#else - TIME_ZONE_INFORMATION tzInfo; - GetTimeZoneInformation(&tzInfo); - return -tzInfo.Bias * 60.0 * 1000.0; -#endif -} - -/*! - \internal - - Converts the QDateTime \a dt to an ECMA Date value (in UTC form). -*/ -qsreal FromDateTime(const QDateTime &dt) -{ - if (!dt.isValid()) - return qSNaN(); - if (!LocalTZA) // ### move - LocalTZA = getLocalTZA(); - QDate date = dt.date(); - QTime taim = dt.time(); - int year = date.year(); - int month = date.month() - 1; - int day = date.day(); - int hours = taim.hour(); - int mins = taim.minute(); - int secs = taim.second(); - int ms = taim.msec(); - double t = MakeDate(MakeDay(year, month, day), - MakeTime(hours, mins, secs, ms)); - if (dt.timeSpec() == Qt::LocalTime) - t = UTC(t); - return TimeClip(t); -} - -/*! - \internal - - Converts the ECMA Date value \tt (in UTC form) to QDateTime - according to \a spec. -*/ -QDateTime ToDateTime(qsreal t, Qt::TimeSpec spec) -{ - if (qIsNaN(t)) - return QDateTime(); - if (!LocalTZA) // ### move - LocalTZA = getLocalTZA(); - if (spec == Qt::LocalTime) - t = LocalTime(t); - int year = int(YearFromTime(t)); - int month = int(MonthFromTime(t) + 1); - int day = int(DateFromTime(t)); - int hours = HourFromTime(t); - int mins = MinFromTime(t); - int secs = SecFromTime(t); - int ms = msFromTime(t); - return QDateTime(QDate(year, month, day), QTime(hours, mins, secs, ms), spec); -} - -} // namespace QScript - -QT_END_NAMESPACE diff --git a/src/script/utils/qscriptdate_p.h b/src/script/utils/qscriptdate_p.h deleted file mode 100644 index b9c9fd4..0000000 --- a/src/script/utils/qscriptdate_p.h +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtScript module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL-ONLY$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSCRIPTDATE_P_H -#define QSCRIPTDATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include - -QT_BEGIN_NAMESPACE - -typedef double qsreal; - -namespace QScript -{ - qsreal FromDateTime(const QDateTime &dt); - QDateTime ToDateTime(qsreal t, Qt::TimeSpec spec); -} - -QT_END_NAMESPACE - -#endif diff --git a/src/script/utils/utils.pri b/src/script/utils/utils.pri deleted file mode 100644 index d8302d5..0000000 --- a/src/script/utils/utils.pri +++ /dev/null @@ -1,5 +0,0 @@ -SOURCES += \ - $$PWD/qscriptdate.cpp - -HEADERS += \ - $$PWD/qscriptdate_p.h -- cgit v0.12 From 02e44e7d93dd5336ab9415af98f2021e542eff31 Mon Sep 17 00:00:00 2001 From: Michael Dominic K Date: Fri, 25 Jun 2010 16:22:50 +0200 Subject: Export the QGLPixmapData so that we can override it in a custom graphics system. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 2422 Reviewed-by: Samuel Rødal --- src/opengl/qpixmapdata_gl_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/qpixmapdata_gl_p.h b/src/opengl/qpixmapdata_gl_p.h index c239bcb..736a28e 100644 --- a/src/opengl/qpixmapdata_gl_p.h +++ b/src/opengl/qpixmapdata_gl_p.h @@ -96,7 +96,7 @@ private: }; -class QGLPixmapData : public QPixmapData +class Q_OPENGL_EXPORT QGLPixmapData : public QPixmapData { public: QGLPixmapData(PixelType type); -- cgit v0.12 From 535adbb4954caff9d88dc57bdb57bd09b872ddf1 Mon Sep 17 00:00:00 2001 From: Michael Dominic K Date: Fri, 25 Jun 2010 16:22:51 +0200 Subject: Export QGLWindowSurface too. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 2422 Reviewed-by: Samuel Rødal --- src/opengl/qwindowsurface_gl_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/qwindowsurface_gl_p.h b/src/opengl/qwindowsurface_gl_p.h index 8ea714c..624236c 100644 --- a/src/opengl/qwindowsurface_gl_p.h +++ b/src/opengl/qwindowsurface_gl_p.h @@ -77,7 +77,7 @@ public: QGLWindowSurfacePrivate* d; }; -class QGLWindowSurface : public QObject, public QWindowSurface // , public QPaintDevice +class Q_OPENGL_EXPORT QGLWindowSurface : public QObject, public QWindowSurface // , public QPaintDevice { Q_OBJECT public: -- cgit v0.12 From c5aa53243bca8261d55d81cfeb525739a68b7703 Mon Sep 17 00:00:00 2001 From: Michael Dominic K Date: Fri, 25 Jun 2010 16:22:52 +0200 Subject: Need to access extensionFuncs in subclasses too. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Merge-request: 2422 Reviewed-by: Samuel Rødal --- src/opengl/qgl.cpp | 7 +++++++ src/opengl/qgl_p.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index b4c85ac..71db7a8 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -2220,6 +2220,13 @@ static void convertToGLFormatHelper(QImage &dst, const QImage &img, GLenum textu } } +#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) +QGLExtensionFuncs& QGLContextPrivate::extensionFuncs(const QGLContext *) +{ + return qt_extensionFuncs; +} +#endif + QImage QGLContextPrivate::convertToGLFormat(const QImage &image, bool force_premul, GLenum texture_format) { diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 1727a41..c7fd111 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -415,7 +415,7 @@ public: #if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_QWS) static QGLExtensionFuncs qt_extensionFuncs; - static inline QGLExtensionFuncs& extensionFuncs(const QGLContext *) { return qt_extensionFuncs; } + static QGLExtensionFuncs& extensionFuncs(const QGLContext *); #endif static void setCurrentContext(QGLContext *context); -- cgit v0.12 From ea2ec1a4621bd80b3279ddc67e52cd16084a409b Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Fri, 25 Jun 2010 16:23:41 +0200 Subject: Add qDebug() operator for QGLFormat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Very handy to trace GL issues on a device with broken gdb Reviewed-by: Trond Kjernåsen --- src/opengl/qgl.cpp | 26 ++++++++++++++++++++++++++ src/opengl/qgl.h | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index b4c85ac..9effb34 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1521,6 +1521,32 @@ bool operator==(const QGLFormat& a, const QGLFormat& b) && a.d->profile == b.d->profile); } +#ifndef QT_NO_DEBUG_STREAM +QDebug operator<<(QDebug dbg, const QGLFormat &f) +{ + const QGLFormatPrivate * const d = f.d; + + dbg.nospace() << "QGLFormat(" + << "options " << d->opts + << ", plane " << d->pln + << ", depthBufferSize " << d->depthSize + << ", accumBufferSize " << d->accumSize + << ", stencilBufferSize " << d->stencilSize + << ", redBufferSize " << d->redSize + << ", greenBufferSize " << d->greenSize + << ", blueBufferSize " << d->blueSize + << ", alphaBufferSize " << d->alphaSize + << ", samples " << d->numSamples + << ", swapInterval " << d->swapInterval + << ", majorVersion " << d->majorVersion + << ", minorVersion " << d->minorVersion + << ", profile " << d->profile + << ')'; + + return dbg.space(); +} +#endif + /*! Returns false if all the options of the two QGLFormat objects diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h index f0b36f7..f85cad5 100644 --- a/src/opengl/qgl.h +++ b/src/opengl/qgl.h @@ -281,6 +281,9 @@ private: friend Q_OPENGL_EXPORT bool operator==(const QGLFormat&, const QGLFormat&); friend Q_OPENGL_EXPORT bool operator!=(const QGLFormat&, const QGLFormat&); +#ifndef QT_NO_DEBUG_STREAM + friend Q_OPENGL_EXPORT QDebug operator<<(QDebug, const QGLFormat &); +#endif }; Q_DECLARE_OPERATORS_FOR_FLAGS(QGLFormat::OpenGLVersionFlags) @@ -288,6 +291,10 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QGLFormat::OpenGLVersionFlags) Q_OPENGL_EXPORT bool operator==(const QGLFormat&, const QGLFormat&); Q_OPENGL_EXPORT bool operator!=(const QGLFormat&, const QGLFormat&); +#ifndef QT_NO_DEBUG_STREAM +Q_OPENGL_EXPORT QDebug operator<<(QDebug, const QGLFormat &); +#endif + class Q_OPENGL_EXPORT QGLContext { Q_DECLARE_PRIVATE(QGLContext) -- cgit v0.12 From cc75093e3b300a37d05a81921d7811caabbfb449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Fri, 25 Jun 2010 17:21:26 +0200 Subject: EGL plane levels are the same as all other GL backends. Qt has never used level 1 for the main plane, it's always been 0 and will always be 0. Reviewed-by: Harald Fernengel --- src/opengl/qgl_egl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index 0a19531..58d3b0a 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -138,7 +138,7 @@ void qt_glformat_from_eglconfig(QGLFormat& format, const EGLConfig config) format.setDepthBufferSize(depthSize); format.setStencilBufferSize(stencilSize); format.setSamples(sampleCount); - format.setPlane(level + 1); // EGL calls level 0 "normal" whereas Qt calls 1 "normal" + format.setPlane(level); format.setDirectRendering(true); // All EGL contexts are direct-rendered format.setRgba(true); // EGL doesn't support colour index rendering format.setStereo(false); // EGL doesn't support stereo buffers -- cgit v0.12 From aaa7dd6200ce272ea1e3dd78148844200ac698a7 Mon Sep 17 00:00:00 2001 From: Alan Alpert Date: Fri, 25 Jun 2010 19:35:34 +0200 Subject: Tweak Qt Demo Behaviour Don't close on right click inside the demo. --- demos/qtdemo/qmlShell.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/demos/qtdemo/qmlShell.qml b/demos/qtdemo/qmlShell.qml index 1fea4a8..e15d33c 100644 --- a/demos/qtdemo/qmlShell.qml +++ b/demos/qtdemo/qmlShell.qml @@ -99,6 +99,7 @@ Item { } MouseArea{ anchors.fill: parent + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton onClicked: loader.focus=true;/* and don't propogate to the 'exit' area*/ } -- cgit v0.12 From 8c39d25f58dbf5b401e102d73eb2371c68be141e Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Sat, 26 Jun 2010 21:25:15 +0200 Subject: Corrected filename case for wincrypt.h The case doesn't matter when building on Windows, but does when cross-compiling on Unix. Merge-request: 709 Reviewed-by: Andreas Kling --- src/network/ssl/qsslsocket_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h index 42ae98f..d3c3858 100644 --- a/src/network/ssl/qsslsocket_p.h +++ b/src/network/ssl/qsslsocket_p.h @@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE typedef OSStatus (*PtrSecTrustSettingsCopyCertificates)(int, CFArrayRef*); typedef OSStatus (*PtrSecTrustCopyAnchorCertificates)(CFArrayRef*); #elif defined(Q_OS_WIN) -#include +#include #ifndef HCRYPTPROV_LEGACY #define HCRYPTPROV_LEGACY HCRYPTPROV #endif -- cgit v0.12 From 1a72f98a15ef78004894dc6636b8a5d969d66fde Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Sun, 27 Jun 2010 09:28:54 +1000 Subject: Fixed copy-paste error in htmlgenerator.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: htmlgenerator.cpp:1893: error: stray ‘\’ in program --- tools/qdoc3/htmlgenerator.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 9e16676..b93db4f 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -1890,7 +1890,7 @@ void HtmlGenerator::generateFooter(const Node *node) } else { - out() << " \n";\n"; + out() << " \n"; out() << " \n" \ "
\n" \ "
X
\n" \ "
\n" \ - "

Thank you for giving your feedback.

Make sure it is related the page. For more general bugs and \n" \ + "

Thank you for giving your feedback.

Make sure it is related the page. For more general bugs and \n" \ " requests, please use the Qt Bug Tracker

\n" \ "

\n" \ "

\n" \ -- cgit v0.12 From 0a333e3e4f3ceb43ddad74e7a62605072ca1efcc Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Mon, 5 Jul 2010 13:07:57 +0200 Subject: QSslSocket::systemCaCertificates(): fix for WinCE on WinCE the function is called "CertOpenStore", and not "CertOpenSystemStoreW". Patch-by: Ismail Donmez Task-number: QTBUG-11905 --- src/network/ssl/qsslsocket_openssl.cpp | 14 ++++++++++++++ src/network/ssl/qsslsocket_p.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 54a580d..cad8ca7 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -515,9 +515,15 @@ void QSslSocketPrivate::ensureInitialized() #elif defined(Q_OS_WIN) HINSTANCE hLib = LoadLibraryW(L"Crypt32"); if (hLib) { +#if defined(Q_OS_WINCE) + ptrCertOpenSystemStoreW = (PtrCertOpenSystemStoreW)GetProcAddress(hLib, L"CertOpenStore"); + ptrCertFindCertificateInStore = (PtrCertFindCertificateInStore)GetProcAddress(hLib, L"CertFindCertificateInStore"); + ptrCertCloseStore = (PtrCertCloseStore)GetProcAddress(hLib, L"CertCloseStore"); +#else ptrCertOpenSystemStoreW = (PtrCertOpenSystemStoreW)GetProcAddress(hLib, "CertOpenSystemStoreW"); ptrCertFindCertificateInStore = (PtrCertFindCertificateInStore)GetProcAddress(hLib, "CertFindCertificateInStore"); ptrCertCloseStore = (PtrCertCloseStore)GetProcAddress(hLib, "CertCloseStore"); +#endif if (!ptrCertOpenSystemStoreW || !ptrCertFindCertificateInStore || !ptrCertCloseStore) qWarning("could not resolve symbols in crypt32 library"); // should never happen } else { @@ -601,7 +607,15 @@ QList QSslSocketPrivate::systemCaCertificates() #elif defined(Q_OS_WIN) if (ptrCertOpenSystemStoreW && ptrCertFindCertificateInStore && ptrCertCloseStore) { HCERTSTORE hSystemStore; +#if defined(Q_OS_WINCE) + hSystemStore = ptrCertOpenSystemStoreW(CERT_STORE_PROV_SYSTEM_W, + 0, + 0, + CERT_STORE_NO_CRYPT_RELEASE_FLAG|CERT_SYSTEM_STORE_CURRENT_USER, + L"ROOT"); +#else hSystemStore = ptrCertOpenSystemStoreW(0, L"ROOT"); +#endif if(hSystemStore) { PCCERT_CONTEXT pc = NULL; while(1) { diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h index 09775bc..72b3ef7 100644 --- a/src/network/ssl/qsslsocket_p.h +++ b/src/network/ssl/qsslsocket_p.h @@ -77,7 +77,11 @@ QT_BEGIN_NAMESPACE #ifndef HCRYPTPROV_LEGACY #define HCRYPTPROV_LEGACY HCRYPTPROV #endif +#if defined(Q_OS_WINCE) + typedef HCERTSTORE (WINAPI *PtrCertOpenSystemStoreW)(LPCSTR, DWORD, HCRYPTPROV_LEGACY, DWORD, const void*); +#else typedef HCERTSTORE (WINAPI *PtrCertOpenSystemStoreW)(HCRYPTPROV_LEGACY, LPCWSTR); +#endif typedef PCCERT_CONTEXT (WINAPI *PtrCertFindCertificateInStore)(HCERTSTORE, DWORD, DWORD, DWORD, const void*, PCCERT_CONTEXT); typedef BOOL (WINAPI *PtrCertCloseStore)(HCERTSTORE, DWORD); #endif -- cgit v0.12 From 43580da7e288258cd61bf48d54c58e1cec7ce36f Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Mon, 5 Jul 2010 14:06:50 +0200 Subject: qdoc: Added explanation of autmatically generated signal hanlers. Task-number: QTBUG-11575 --- doc/src/declarative/extending.qdoc | 70 +++++++++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 12 deletions(-) diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc index 6476dfb..28d4ed4 100644 --- a/doc/src/declarative/extending.qdoc +++ b/doc/src/declarative/extending.qdoc @@ -65,20 +65,22 @@ template int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const char *qmlName) \endcode -Calling qmlRegisterType() registers the C++ type \a T with the QML system, and makes it available in QML -under the name \a qmlName in library \a uri version \a versionMajor.versionMinor. -The \a qmlName can be the same as the C++ type name. +Calling qmlRegisterType() registers the C++ type \a T with the QML +system, and makes it available in QML under the name \a qmlName in +library \a uri version \a versionMajor.versionMinor. The \a qmlName +can be the same as the C++ type name. Type \a T must be a concrete type that inherits QObject and has a default constructor. + \endquotation -Types can be registered by libraries (such as Qt does), application code, -or by plugins (see QDeclarativeExtensionPlugin). +Types can be registered by libraries, application code, or by plugins +(see QDeclarativeExtensionPlugin). -Once registered, all of the \l {Qt's Property System}{properties} of a supported -type are available for use within QML. QML has intrinsic support for properties -of these types: +Once registered, all \l {Qt's Property System}{properties} of the +supported types are available in QML. QML has intrinsic support for +properties of these types: \list \o bool @@ -94,9 +96,14 @@ of these types: \o QVariant \endlist -QML is typesafe. Attempting to assign an invalid value to a property will -generate an error. For example, assuming the name property of the \c Person -element had a type of QString, this would cause an error: +When a property of a supported type is added to a C++ class, in a QML +element based on the C++ class, a \e{value-changed} signal handler +will be available. See \l{Signal Support} below. + +QML is typesafe. Attempting to assign an invalid value to a property +will generate an error. For example, assuming the \e{name} property +of the \c Person element had a type of QString, this would cause an +error: \code Person { @@ -412,7 +419,28 @@ value will not be accessible from script. implement the onPartyStarted signal property. If you want to use signals from items not created in QML, you can access their -signals with the \l {Connections} element. +signals with the \l {Connections} element. + +Additionally, if a property is added to a C++ class, all QML elements +based on that C++ class will have a \e{value-changed} signal handler +for that property. The name of the signal handler is \e{onChanged}, with the first letter of the property name being upper +cased. + +\note If the NOTIFY signal for the added property is not simply +\c{Changed()}, then you will get two equivalent signal +handlers, one because of the signal, one because of the property. For +example, if the property \c{test_property} with NOTIFY signal +\c{testPropChanged()} is added to a C++ class, then QML elements based +on that C++ class will have two signal handlers: +\c{onTest_propertyChanged} because of the property, and +\c{onTestPropChanged} because of the NOTIFY signal. For clarity, we +suggest that for properties exposed to QML in this way, the name of +the NOTIFY signal should be just \c{Changed()}, so that +there will be just one signal handler in QML and one naming +convention used. + +See also \l {Extending types from QML}. \section1 Property Value Sources @@ -705,6 +733,24 @@ controls the color of the inner rectangle. } \endcode +Adding a property to an item automatically adds a \e{value-changed} +signal handler to the item. The signal hander is named +\c{onChanged}, with the first letter of the property +name being upper case. + +Signal handlers can have arbitrary JavaScript code assigned. The following +example shows how to output to a text console a new value of property +\c{innerColor} whenever the value of this property changes. + +\code + Rectangle { + id: rect + property color innerColor: "black" + + onInnerColorChanged: { console.log(rect.innerColor); } + } +\endcode + \target qml-property-aliases \section2 Property aliases -- cgit v0.12 From f9ae198f02ebda5279ad7a98f68871f02f3a382b Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Mon, 5 Jul 2010 15:13:28 +0200 Subject: Network: Optimize HTTP proxy lookup on Windows Only try auto config retrieval once. Patch by Kai Koehne. Task-number: QTBUG-10106 --- src/network/kernel/qnetworkproxy_win.cpp | 37 +++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/network/kernel/qnetworkproxy_win.cpp b/src/network/kernel/qnetworkproxy_win.cpp index e801738..537107e 100644 --- a/src/network/kernel/qnetworkproxy_win.cpp +++ b/src/network/kernel/qnetworkproxy_win.cpp @@ -100,6 +100,10 @@ typedef struct { #define WINHTTP_NO_PROXY_NAME NULL #define WINHTTP_NO_PROXY_BYPASS NULL +#define WINHTTP_ERROR_BASE 12000 +#define ERROR_WINHTTP_LOGIN_FAILURE (WINHTTP_ERROR_BASE + 15) +#define ERROR_WINHTTP_AUTODETECTION_FAILED (WINHTTP_ERROR_BASE + 180) + QT_BEGIN_NAMESPACE typedef BOOL (WINAPI * PtrWinHttpGetProxyForUrl)(HINTERNET, LPCWSTR, WINHTTP_AUTOPROXY_OPTIONS*, WINHTTP_PROXY_INFO*); @@ -320,7 +324,7 @@ void QWindowsSystemProxy::init() isAutoConfig = true; memset(&autoProxyOptions, 0, sizeof autoProxyOptions); - autoProxyOptions.fAutoLogonIfChallenged = true; + autoProxyOptions.fAutoLogonIfChallenged = false; if (ieProxyConfig.fAutoDetect) { autoProxyOptions.dwFlags = WINHTTP_AUTOPROXY_AUTO_DETECT; autoProxyOptions.dwAutoDetectFlags = WINHTTP_AUTO_DETECT_TYPE_DHCP | @@ -377,10 +381,26 @@ QList QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro // change the scheme to https, maybe it'll work url.setScheme(QLatin1String("https")); } - if (ptrWinHttpGetProxyForUrl(sp->hHttpSession, - (LPCWSTR)url.toString().utf16(), - &sp->autoProxyOptions, - &proxyInfo)) { + + bool getProxySucceeded = ptrWinHttpGetProxyForUrl(sp->hHttpSession, + (LPCWSTR)url.toString().utf16(), + &sp->autoProxyOptions, + &proxyInfo); + DWORD getProxyError = GetLastError(); + + if (!getProxySucceeded + && (ERROR_WINHTTP_LOGIN_FAILURE == getProxyError)) { + // We first tried without AutoLogon, because this might prevent caching the result. + // But now we've to enable it (http://msdn.microsoft.com/en-us/library/aa383153%28v=VS.85%29.aspx) + sp->autoProxyOptions.fAutoLogonIfChallenged = TRUE; + getProxySucceeded = ptrWinHttpGetProxyForUrl(sp->hHttpSession, + (LPCWSTR)url.toString().utf16(), + &sp->autoProxyOptions, + &proxyInfo); + getProxyError = GetLastError(); + } + + if (getProxySucceeded) { // yes, we got a config for this URL QString proxyBypass = QString::fromWCharArray(proxyInfo.lpszProxyBypass); QStringList proxyServerList = splitSpaceSemicolon(QString::fromWCharArray(proxyInfo.lpszProxy)); @@ -395,6 +415,13 @@ QList QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro } // GetProxyForUrl failed + + if (ERROR_WINHTTP_AUTODETECTION_FAILED == getProxyError) { + //No config file could be retrieved on the network. + //Don't search for it next time again. + sp->isAutoConfig = false; + } + return sp->defaultResult; } -- cgit v0.12 From fa650284ad6a838118946be88ac9c73a83361391 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Mon, 5 Jul 2010 15:35:51 +0200 Subject: Support time zone designator in QDateTime::fromString() based on ISO 8601-2004 standard. Task-number: QTBUG-11623 Reviewed-by: Denis Dzyubenko Reviewed-by: David Boddie --- doc/src/external-resources.qdoc | 7 ++++++- src/corelib/global/qnamespace.qdoc | 5 +++-- src/corelib/tools/qdatetime.cpp | 27 ++++++++++++++++++++++++++- tests/auto/qdatetime/tst_qdatetime.cpp | 6 ++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc index d4dc2b1..cbd66ee 100644 --- a/doc/src/external-resources.qdoc +++ b/doc/src/external-resources.qdoc @@ -410,6 +410,11 @@ */ /*! + \externalpage http://www.iso.org/iso/date_and_time_format + \title ISO 8601 +*/ + +/*! \externalpage http://opensource.org/licenses/bsd-license.php \title New and Modified BSD Licenses -*/ +*/ \ No newline at end of file diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index d419759..ed2ae6e 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -565,8 +565,9 @@ be short, localized names. This is basically equivalent to using the date format string, "ddd MMM d yyyy". See QDate::toString() for more information. - \value ISODate ISO 8601 extended format: either \c{YYYY-MM-DD} for dates or - \c{YYYY-MM-DDTHH:MM:SS} for combined dates and times. + \value ISODate \l{ISO 8601} extended format: either \c{YYYY-MM-DD} for dates or + \c{YYYY-MM-DDTHH:MM:SS}, \c{YYYY-MM-DDTHH:MM:SSTZD} (e.g., 1997-07-16T19:20:30+01:00) + for combined dates and times. \value SystemLocaleShortDate The \l{QLocale::ShortFormat}{short format} used by the \l{QLocale::system()}{operating system}. diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 5edb364..ab7530d 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -3304,12 +3304,37 @@ QDateTime QDateTime::fromString(const QString& s, Qt::DateFormat f) if (tmp.size() == 10) return QDateTime(date); + tmp = tmp.mid(11); + // Recognize UTC specifications if (tmp.endsWith(QLatin1Char('Z'))) { ts = Qt::UTC; tmp.chop(1); } - return QDateTime(date, QTime::fromString(tmp.mid(11), Qt::ISODate), ts); + + // Recognize timezone specifications + QRegExp rx(QLatin1String("[+-]")); + if (tmp.contains(rx)) { + int idx = tmp.indexOf(rx); + QString tmp2 = tmp.mid(idx); + tmp = tmp.left(idx); + bool ok = true; + int ntzhour = 1; + int ntzminute = 3; + if ( tmp2.indexOf(QLatin1Char(':')) == 3 ) + ntzminute = 4; + const int tzhour(tmp2.mid(ntzhour, 2).toInt(&ok)); + const int tzminute(tmp2.mid(ntzminute, 2).toInt(&ok)); + QTime tzt(tzhour, tzminute); + int utcOffset = (tzt.hour() * 60 + tzt.minute()) * 60; + if ( utcOffset != 0 ) { + ts = Qt::OffsetFromUTC; + QDateTime dt(date, QTime::fromString(tmp, Qt::ISODate), ts); + dt.setUtcOffset( utcOffset * (tmp2.startsWith(QLatin1Char('-')) ? -1 : 1) ); + return dt; + } + } + return QDateTime(date, QTime::fromString(tmp, Qt::ISODate), ts); } case Qt::SystemLocaleDate: case Qt::SystemLocaleShortDate: diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp index 47c54a5..0900b35 100644 --- a/tests/auto/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/qdatetime/tst_qdatetime.cpp @@ -1456,6 +1456,12 @@ void tst_QDateTime::fromString() dt = QDateTime::fromString("2002-10-01", Qt::ISODate); QCOMPARE(dt, QDateTime(QDate(2002, 10, 1), QTime(0, 0, 0, 0))); + dt = QDateTime::fromString("1987-02-13T13:24:51+01:00", Qt::ISODate); + QCOMPARE(dt, QDateTime(QDate(1987, 2, 13), QTime(12, 24, 51), Qt::UTC)); + + dt = QDateTime::fromString("1987-02-13T13:24:51-01:00", Qt::ISODate); + QCOMPARE(dt, QDateTime(QDate(1987, 2, 13), QTime(14, 24, 51), Qt::UTC)); + dt = QDateTime::fromString("Thu Jan 1 00:12:34 1970 GMT"); QCOMPARE(dt.toUTC(), QDateTime(QDate(1970, 1, 1), QTime(0, 12, 34), Qt::UTC)); -- cgit v0.12 From 0ea104433855c65866f583f9f7d347b17679df33 Mon Sep 17 00:00:00 2001 From: kh1 Date: Mon, 5 Jul 2010 17:19:13 +0200 Subject: Set the registration time while using the collection generator to register. Task-number: QTBUG-11911 Reviewed-by: ck --- tools/assistant/tools/qcollectiongenerator/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/assistant/tools/qcollectiongenerator/main.cpp b/tools/assistant/tools/qcollectiongenerator/main.cpp index 7fcb4e1..b3f6bd9 100644 --- a/tools/assistant/tools/qcollectiongenerator/main.cpp +++ b/tools/assistant/tools/qcollectiongenerator/main.cpp @@ -459,6 +459,8 @@ int main(int argc, char *argv[]) return -1; } } + if (!config.filesToRegister().isEmpty()) + CollectionConfiguration::updateLastRegisterTime(helpEngine); if (!config.title().isEmpty()) CollectionConfiguration::setWindowTitle(helpEngine, config.title()); -- cgit v0.12 From cabdb16f5ea6458dec9a2ec3b70a01e498b27dbc Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 6 Jul 2010 09:59:41 +1000 Subject: Fix inconsistent reporting of module import errors when using versions. Task-number: QTBUG-11936 --- doc/src/declarative/modules.qdoc | 11 +++++++++-- src/declarative/qml/qdeclarativeimport.cpp | 18 +++++++++++++++--- .../data/lib/com/nokia/installedtest/qmldir | 1 - .../lib/com/nokia/installedtest0/InstalledTest.qml | 2 ++ .../lib/com/nokia/installedtest0/InstalledTest2.qml | 2 ++ .../data/lib/com/nokia/installedtest0/qmldir | 2 ++ .../qdeclarativelanguage/tst_qdeclarativelanguage.cpp | 9 +++++++-- 7 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest2.qml create mode 100644 tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/qmldir diff --git a/doc/src/declarative/modules.qdoc b/doc/src/declarative/modules.qdoc index a77c64e..938222a 100644 --- a/doc/src/declarative/modules.qdoc +++ b/doc/src/declarative/modules.qdoc @@ -103,9 +103,16 @@ the \c qmldir file. Types which you do not wish to export to users of your modul may be marked with the \c internal keyword: \c internal . The same type can be provided by different files in different versions, in which -case later earlier versions (eg. 1.2) must precede earlier versions (eg. 1.0), +case later versions (eg. 1.2) must precede earlier versions (eg. 1.0), since the \e first name-version match is used and a request for a version of a type -can be fulfilled by one defined in an earlier version of the module. +can be fulfilled by one defined in an earlier version of the module. If a user attempts +to import a version earlier than the earliest provided or later than the latest provided, +an error results, but if the user imports a version within the range of versions provided, +even if no type is specific to that version, no error results. + +A single module, in all versions, may only be provided in a single directory (and a single \c qmldir file). +If multiple are provided, only the first in the search path will be used (regardless of whether other versions +are provided by directories later in the search path). Installed and remote files without a namespace \e must be referred to by version information described above, local files \e may have it. diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp index fe05d20..8d81b34 100644 --- a/src/declarative/qml/qdeclarativeimport.cpp +++ b/src/declarative/qml/qdeclarativeimport.cpp @@ -447,11 +447,23 @@ bool QDeclarativeImportsPrivate::add(const QDeclarativeDirComponents &qmldircomp if (vmaj > -1 && vmin > -1 && !qmldircomponents.isEmpty()) { QList::ConstIterator it = qmldircomponents.begin(); + int lowest_maj = INT_MAX; + int lowest_min = INT_MAX; + int highest_maj = INT_MIN; + int highest_min = INT_MIN; for (; it != qmldircomponents.end(); ++it) { - if (it->majorVersion > vmaj || (it->majorVersion == vmaj && it->minorVersion >= vmin)) - break; + if (it->majorVersion > highest_maj || (it->majorVersion == highest_maj && it->minorVersion > highest_min)) { + highest_maj = it->majorVersion; + highest_min = it->minorVersion; + } + if (it->majorVersion < lowest_maj || (it->majorVersion == lowest_maj && it->minorVersion < lowest_min)) { + lowest_maj = it->majorVersion; + lowest_min = it->minorVersion; + } } - if (it == qmldircomponents.end()) { + if (lowest_maj > vmaj || (lowest_maj == vmaj && lowest_min > vmin) + || highest_maj < vmaj || (highest_maj == vmaj && highest_min < vmin)) + { *errorString = QDeclarativeImportDatabase::tr("module \"%1\" version %2.%3 is not installed").arg(uri_arg).arg(vmaj).arg(vmin); return false; } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir index 0adb0f6..d15720a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir @@ -2,4 +2,3 @@ Rectangle 1.5 InstalledTest2.qml LocalLast 1.0 LocalLast.qml InstalledTest 1.4 InstalledTest2.qml InstalledTest 1.0 InstalledTest.qml -InstalledTestTP 0.0 InstalledTest.qml diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest.qml b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest.qml new file mode 100644 index 0000000..303b5a5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest.qml @@ -0,0 +1,2 @@ +import Qt 4.7 as Qt47 +Qt47.Rectangle {} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest2.qml b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest2.qml new file mode 100644 index 0000000..8c953cb --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/InstalledTest2.qml @@ -0,0 +1,2 @@ +import Qt 4.7 +Text {} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/qmldir b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/qmldir new file mode 100644 index 0000000..b301226 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest0/qmldir @@ -0,0 +1,2 @@ +InstalledTest 1.4 InstalledTest2.qml +InstalledTestTP 0.0 InstalledTest.qml diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index cde25d7..fcdf926 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -1477,12 +1477,12 @@ void tst_qdeclarativelanguage::importsInstalled_data() // import installed QTest::newRow("installed import 0") - << "import com.nokia.installedtest 0.0\n" + << "import com.nokia.installedtest0 0.0\n" "InstalledTestTP {}" << "QDeclarativeRectangle" << ""; QTest::newRow("installed import 0 as TP") - << "import com.nokia.installedtest 0.0 as TP\n" + << "import com.nokia.installedtest0 0.0 as TP\n" "TP.InstalledTestTP {}" << "QDeclarativeRectangle" << ""; @@ -1501,6 +1501,11 @@ void tst_qdeclarativelanguage::importsInstalled_data() "InstalledTest {}" << "QDeclarativeText" << ""; + QTest::newRow("installed import minor version not available") // QTBUG-11936 + << "import com.nokia.installedtest 0.1\n" + "InstalledTest {}" + << "" + << "module \"com.nokia.installedtest\" version 0.1 is not installed"; QTest::newRow("installed import minor version not available") // QTBUG-9627 << "import com.nokia.installedtest 1.10\n" "InstalledTest {}" -- cgit v0.12 From 1c934d60291bd348ed9df7e1e4e9240ae20a7789 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Tue, 6 Jul 2010 10:13:37 +1000 Subject: doc --- src/declarative/qml/qdeclarativecomponent.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 5617ae9..80865c6 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -68,14 +68,14 @@ class QByteArray; /*! \class QDeclarativeComponent \since 4.7 - \brief The QDeclarativeComponent class encapsulates a QML component description. + \brief The QDeclarativeComponent class encapsulates a QML component definition. \mainclass */ /*! \qmlclass Component QDeclarativeComponent \since 4.7 - \brief The Component element encapsulates a QML component description. + \brief The Component element encapsulates a QML component definition. Components are reusable, encapsulated QML elements with well-defined interfaces. They are often defined in \l {qdeclarativedocuments.html}{Component Files}. -- cgit v0.12 From 8274fdc7ee8ecc03bb879ea79e9b3b3b4ca9ab37 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 6 Jul 2010 10:41:41 +1000 Subject: Export QDeclarativePixmap But its still a private class. --- src/declarative/util/qdeclarativepixmapcache_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/util/qdeclarativepixmapcache_p.h b/src/declarative/util/qdeclarativepixmapcache_p.h index 8278c35..b4d88bd 100644 --- a/src/declarative/util/qdeclarativepixmapcache_p.h +++ b/src/declarative/util/qdeclarativepixmapcache_p.h @@ -55,7 +55,7 @@ QT_MODULE(Declarative) class QDeclarativeEngine; class QDeclarativePixmapData; -class Q_AUTOTEST_EXPORT QDeclarativePixmap +class Q_DECLARATIVE_EXPORT QDeclarativePixmap { Q_DECLARE_TR_FUNCTIONS(QDeclarativePixmap) public: -- cgit v0.12 From 5500ffeeaee3412272f0f4af844fbc1d4d78a3bb Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 6 Jul 2010 11:11:59 +1000 Subject: Fix TextEdit with no color property defined is drawn with wrong color Task-number: QTBUG-11932 Reviewed-by: Martin Jones --- src/declarative/graphicsitems/qdeclarativetextedit.cpp | 9 +++++++++ .../qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index c066f11..5b4d80b 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -1263,6 +1263,15 @@ void QDeclarativeTextEditPrivate::init() control = new QTextControl(q); control->setIgnoreUnusedNavigationEvents(true); + // QTextControl follows the default text color + // defined by the platform, declarative text + // should be black by default + QPalette pal = control->palette(); + if (pal.color(QPalette::Text) != color) { + pal.setColor(QPalette::Text, color); + control->setPalette(pal); + } + QObject::connect(control, SIGNAL(updateRequest(QRectF)), q, SLOT(updateImgCache(QRectF))); QObject::connect(control, SIGNAL(textChanged()), q, SLOT(q_textChanged())); diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 65d45b1..2025504 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -57,6 +57,7 @@ #include #include #include +#include #ifdef Q_OS_SYMBIAN // In Symbian OS test data is located in applications private dir @@ -492,6 +493,23 @@ void tst_qdeclarativetextedit::font() void tst_qdeclarativetextedit::color() { + //test initial color + { + QString componentStr = "import Qt 4.7\nTextEdit { text: \"Hello World\" }"; + QDeclarativeComponent texteditComponent(&engine); + texteditComponent.setData(componentStr.toLatin1(), QUrl()); + QDeclarativeTextEdit *textEditObject = qobject_cast(texteditComponent.create()); + + QDeclarativeTextEditPrivate *textEditPrivate = static_cast(QDeclarativeItemPrivate::get(textEditObject)); + + QVERIFY(textEditObject); + QVERIFY(textEditPrivate); + QVERIFY(textEditPrivate->control); + + QPalette pal = textEditPrivate->control->palette(); + QCOMPARE(textEditPrivate->color, QColor("black")); + QCOMPARE(textEditPrivate->color, pal.color(QPalette::Text)); + } //test normal for (int i = 0; i < colorStrings.size(); i++) { -- cgit v0.12 From 3384a5bedabbbb406026b31ecfa4266ac3205bcc Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 6 Jul 2010 13:37:29 +1000 Subject: Document the QML enumeration basic type --- doc/src/declarative/basictypes.qdoc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc index 159f40d..109e6d5 100644 --- a/doc/src/declarative/basictypes.qdoc +++ b/doc/src/declarative/basictypes.qdoc @@ -400,3 +400,26 @@ \sa {QML Basic Types} */ + +/*! + \qmlbasictype enumeration + \ingroup qmlbasictypes + + \brief An enumeration type consists of a set of named values. + + An enumeration type consists of a set of named values. + + An enumeration value may be specifed as either a string: + \qml + Text { horizontalAlignment: "AlignRight" } + \endqml + + or as \c {.}: + \qml + Text { horizontalAlignment: Text.AlignRight } + \endqml + + The second form is preferred. + + \sa {QML Basic Types} +*/ -- cgit v0.12 From 98bfc8b8db811eb902290dbe87660ce799a44c27 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 6 Jul 2010 13:48:23 +1000 Subject: Fix input methods for TextInput elements with key handlers Task-number: QTBUG-10297 Reviewed-by: Martin Jones --- .../graphicsitems/qdeclarativetextinput.cpp | 1 + .../data/inputmethodhints.qml | 6 ----- .../qdeclarativetextinput/data/inputmethods.qml | 7 ++++++ .../tst_qdeclarativetextinput.cpp | 29 ++++++++++++++++------ 4 files changed, 29 insertions(+), 14 deletions(-) delete mode 100644 tests/auto/declarative/qdeclarativetextinput/data/inputmethodhints.qml create mode 100644 tests/auto/declarative/qdeclarativetextinput/data/inputmethods.qml diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index 374f371..c2eea6e 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -908,6 +908,7 @@ void QDeclarativeTextInput::keyPressEvent(QKeyEvent* ev) void QDeclarativeTextInput::inputMethodEvent(QInputMethodEvent *ev) { Q_D(QDeclarativeTextInput); + ev->ignore(); inputMethodPreHandler(ev); if (ev->isAccepted()) return; diff --git a/tests/auto/declarative/qdeclarativetextinput/data/inputmethodhints.qml b/tests/auto/declarative/qdeclarativetextinput/data/inputmethodhints.qml deleted file mode 100644 index da6b81f..0000000 --- a/tests/auto/declarative/qdeclarativetextinput/data/inputmethodhints.qml +++ /dev/null @@ -1,6 +0,0 @@ -import Qt 4.7 - -TextInput { - text: "Hello world!" - inputMethodHints: Qt.ImhNoPredictiveText -} diff --git a/tests/auto/declarative/qdeclarativetextinput/data/inputmethods.qml b/tests/auto/declarative/qdeclarativetextinput/data/inputmethods.qml new file mode 100644 index 0000000..405ee22 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetextinput/data/inputmethods.qml @@ -0,0 +1,7 @@ +import Qt 4.7 + +TextInput { + text: "Hello world!" + inputMethodHints: Qt.ImhNoPredictiveText + Keys.onLeftPressed: {} +} diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index b6ca7e5..5354f42 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -79,7 +79,7 @@ private slots: void maxLength(); void masks(); void validators(); - void inputMethodHints(); + void inputMethods(); void cursorDelegate(); void navigation(); @@ -609,18 +609,31 @@ void tst_qdeclarativetextinput::validators() delete canvas; } -void tst_qdeclarativetextinput::inputMethodHints() +void tst_qdeclarativetextinput::inputMethods() { - QDeclarativeView *canvas = createView(SRCDIR "/data/inputmethodhints.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/inputmethods.qml"); canvas->show(); canvas->setFocus(); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + // test input method hints QVERIFY(canvas->rootObject() != 0); - QDeclarativeTextInput *textinputObject = qobject_cast(canvas->rootObject()); - QVERIFY(textinputObject != 0); - QVERIFY(textinputObject->inputMethodHints() & Qt::ImhNoPredictiveText); - textinputObject->setInputMethodHints(Qt::ImhUppercaseOnly); - QVERIFY(textinputObject->inputMethodHints() & Qt::ImhUppercaseOnly); + QDeclarativeTextInput *input = qobject_cast(canvas->rootObject()); + QVERIFY(input != 0); + QVERIFY(input->inputMethodHints() & Qt::ImhNoPredictiveText); + input->setInputMethodHints(Qt::ImhUppercaseOnly); + QVERIFY(input->inputMethodHints() & Qt::ImhUppercaseOnly); + + QVERIFY(canvas->rootObject() != 0); + + input->setFocus(true); + QVERIFY(input->hasFocus() == true); + // test that input method event is committed + QInputMethodEvent event; + event.setCommitString( "My ", -12, 0); + QApplication::sendEvent(canvas, &event); + QCOMPARE(input->text(), QString("My Hello world!")); delete canvas; } -- cgit v0.12 From c09f58965e772064ca952892f2e7969082f03855 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 6 Jul 2010 15:04:15 +1000 Subject: Changing currentIndex shouldn't cancel a flick unnecessarily. If the new currentIndex is in view, then there is no need to cancel a flick that is in progress. Task-number: QTBUG-11405 --- .../graphicsitems/qdeclarativegridview.cpp | 35 +++++++++++++++------- .../graphicsitems/qdeclarativelistview.cpp | 34 +++++++++++++-------- 2 files changed, 45 insertions(+), 24 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index cb99129..3efb9ad 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -1216,6 +1216,11 @@ void QDeclarativeGridView::setModel(const QVariant &model) } else { d->moveReason = QDeclarativeGridViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); + if (d->highlight && d->currentItem) { + d->highlight->setPosition(d->currentItem->colPos(), d->currentItem->rowPos()); + d->updateTrackedItem(); + } + d->moveReason = QDeclarativeGridViewPrivate::Other; } } connect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); @@ -1274,6 +1279,11 @@ void QDeclarativeGridView::setDelegate(QDeclarativeComponent *delegate) refill(); d->moveReason = QDeclarativeGridViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); + if (d->highlight && d->currentItem) { + d->highlight->setPosition(d->currentItem->colPos(), d->currentItem->rowPos()); + d->updateTrackedItem(); + } + d->moveReason = QDeclarativeGridViewPrivate::Other; } emit delegateChanged(); } @@ -1300,7 +1310,6 @@ void QDeclarativeGridView::setCurrentIndex(int index) return; if (isComponentComplete() && d->isValid() && index != d->currentIndex && index < d->model->count() && index >= 0) { d->moveReason = QDeclarativeGridViewPrivate::SetIndex; - cancelFlick(); d->updateCurrent(index); } else if (index != d->currentIndex) { d->currentIndex = index; @@ -2158,7 +2167,7 @@ void QDeclarativeGridView::componentComplete() d->updateCurrent(0); else d->updateCurrent(d->currentIndex); - if (d->highlight) { + if (d->highlight && d->currentItem) { d->highlight->setPosition(d->currentItem->colPos(), d->currentItem->rowPos()); d->updateTrackedItem(); } @@ -2172,20 +2181,17 @@ void QDeclarativeGridView::trackedPositionChanged() Q_D(QDeclarativeGridView); if (!d->trackedItem || !d->currentItem) return; - if (!d->flickingHorizontally && !d->flickingVertically && !d->movingHorizontally && !d->movingVertically - && d->moveReason == QDeclarativeGridViewPrivate::SetIndex) { + if (d->moveReason == QDeclarativeGridViewPrivate::SetIndex) { const qreal trackedPos = d->trackedItem->rowPos(); const qreal viewPos = d->position(); + qreal pos = viewPos; if (d->haveHighlightRange) { if (d->highlightRange == StrictlyEnforceRange) { - qreal pos = viewPos; if (trackedPos > pos + d->highlightRangeEnd - d->rowSize()) pos = trackedPos - d->highlightRangeEnd + d->rowSize(); if (trackedPos < pos + d->highlightRangeStart) pos = trackedPos - d->highlightRangeStart; - d->setPosition(pos); } else { - qreal pos = viewPos; if (trackedPos < d->startPosition() + d->highlightRangeStart) { pos = d->startPosition(); } else if (d->trackedItem->endRowPos() > d->endPosition() - d->size() + d->highlightRangeEnd) { @@ -2199,14 +2205,12 @@ void QDeclarativeGridView::trackedPositionChanged() pos = trackedPos - d->highlightRangeEnd + d->rowSize(); } } - d->setPosition(pos); } } else { if (trackedPos < viewPos && d->currentItem->rowPos() < viewPos) { - d->setPosition(d->currentItem->rowPos() < trackedPos ? trackedPos : d->currentItem->rowPos()); + pos = d->currentItem->rowPos() < trackedPos ? trackedPos : d->currentItem->rowPos(); } else if (d->trackedItem->endRowPos() > viewPos + d->size() && d->currentItem->endRowPos() > viewPos + d->size()) { - qreal pos; if (d->trackedItem->endRowPos() < d->currentItem->endRowPos()) { pos = d->trackedItem->endRowPos() - d->size(); if (d->rowSize() > d->size()) @@ -2216,9 +2220,12 @@ void QDeclarativeGridView::trackedPositionChanged() if (d->rowSize() > d->size()) pos = d->currentItem->rowPos(); } - d->setPosition(pos); } } + if (viewPos != pos) { + cancelFlick(); + d->setPosition(pos); + } } } @@ -2563,6 +2570,12 @@ void QDeclarativeGridView::modelReset() refill(); d->moveReason = QDeclarativeGridViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); + if (d->highlight && d->currentItem) { + d->highlight->setPosition(d->currentItem->colPos(), d->currentItem->rowPos()); + d->updateTrackedItem(); + } + d->moveReason = QDeclarativeGridViewPrivate::Other; + emit countChanged(); } diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index e519bd9..9497cb7 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1547,6 +1547,10 @@ void QDeclarativeListView::setModel(const QVariant &model) } else { d->moveReason = QDeclarativeListViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); + if (d->highlight && d->currentItem) { + d->highlight->setPosition(d->currentItem->position()); + d->updateTrackedItem(); + } } } connect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int))); @@ -1610,6 +1614,10 @@ void QDeclarativeListView::setDelegate(QDeclarativeComponent *delegate) refill(); d->moveReason = QDeclarativeListViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); + if (d->highlight && d->currentItem) { + d->highlight->setPosition(d->currentItem->position()); + d->updateTrackedItem(); + } } } emit delegateChanged(); @@ -1636,7 +1644,6 @@ void QDeclarativeListView::setCurrentIndex(int index) return; if (isComponentComplete() && d->isValid() && index != d->currentIndex && index < d->model->count() && index >= 0) { d->moveReason = QDeclarativeListViewPrivate::SetIndex; - cancelFlick(); d->updateCurrent(index); } else if (index != d->currentIndex) { d->currentIndex = index; @@ -2439,7 +2446,6 @@ void QDeclarativeListView::incrementCurrentIndex() if (currentIndex() < d->model->count() - 1 || d->wrap) { d->moveReason = QDeclarativeListViewPrivate::SetIndex; int index = currentIndex()+1; - cancelFlick(); d->updateCurrent(index < d->model->count() ? index : 0); } } @@ -2458,7 +2464,6 @@ void QDeclarativeListView::decrementCurrentIndex() if (currentIndex() > 0 || d->wrap) { d->moveReason = QDeclarativeListViewPrivate::SetIndex; int index = currentIndex()-1; - cancelFlick(); d->updateCurrent(index >= 0 ? index : d->model->count()-1); } } @@ -2591,7 +2596,7 @@ void QDeclarativeListView::componentComplete() d->updateCurrent(0); else d->updateCurrent(d->currentIndex); - if (d->highlight) { + if (d->highlight && d->currentItem) { d->highlight->setPosition(d->currentItem->position()); d->updateTrackedItem(); } @@ -2611,20 +2616,17 @@ void QDeclarativeListView::trackedPositionChanged() Q_D(QDeclarativeListView); if (!d->trackedItem || !d->currentItem) return; - if (!d->flickingHorizontally && !d->flickingVertically && !d->movingHorizontally && !d->movingVertically - && d->moveReason == QDeclarativeListViewPrivate::SetIndex) { + if (d->moveReason == QDeclarativeListViewPrivate::SetIndex) { const qreal trackedPos = qCeil(d->trackedItem->position()); const qreal viewPos = d->position(); + qreal pos = viewPos; if (d->haveHighlightRange) { if (d->highlightRange == StrictlyEnforceRange) { - qreal pos = viewPos; if (trackedPos > pos + d->highlightRangeEnd - d->trackedItem->size()) pos = trackedPos - d->highlightRangeEnd + d->trackedItem->size(); if (trackedPos < pos + d->highlightRangeStart) pos = trackedPos - d->highlightRangeStart; - d->setPosition(pos); } else { - qreal pos = viewPos; if (trackedPos < d->startPosition() + d->highlightRangeStart) { pos = d->startPosition(); } else if (d->trackedItem->endPosition() > d->endPosition() - d->size() + d->highlightRangeEnd) { @@ -2638,14 +2640,12 @@ void QDeclarativeListView::trackedPositionChanged() pos = trackedPos - d->highlightRangeEnd + d->trackedItem->size(); } } - d->setPosition(pos); } } else { if (trackedPos < viewPos && d->currentItem->position() < viewPos) { - d->setPosition(d->currentItem->position() < trackedPos ? trackedPos : d->currentItem->position()); + pos = d->currentItem->position() < trackedPos ? trackedPos : d->currentItem->position(); } else if (d->trackedItem->endPosition() > viewPos + d->size() && d->currentItem->endPosition() > viewPos + d->size()) { - qreal pos; if (d->trackedItem->endPosition() < d->currentItem->endPosition()) { pos = d->trackedItem->endPosition() - d->size(); if (d->trackedItem->size() > d->size()) @@ -2655,9 +2655,12 @@ void QDeclarativeListView::trackedPositionChanged() if (d->currentItem->size() > d->size()) pos = d->currentItem->position(); } - d->setPosition(pos); } } + if (viewPos != pos) { + cancelFlick(); + d->setPosition(pos); + } } } @@ -3021,6 +3024,11 @@ void QDeclarativeListView::modelReset() refill(); d->moveReason = QDeclarativeListViewPrivate::SetIndex; d->updateCurrent(d->currentIndex); + if (d->highlight && d->currentItem) { + d->highlight->setPosition(d->currentItem->position()); + d->updateTrackedItem(); + } + d->moveReason = QDeclarativeListViewPrivate::Other; emit countChanged(); } -- cgit v0.12 From c9d487b6ed3ac9bb666c2a1fe08252f3c6dcb455 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Tue, 6 Jul 2010 15:30:33 +1000 Subject: doc improvements --- doc/src/declarative/extending.qdoc | 38 ++++++++++++++++-- doc/src/examples/qml-examples.qdoc | 7 +++- .../ui-components/tabwidget/TabWidget.qml | 7 +++- src/declarative/qml/qdeclarativecomponent.cpp | 30 +++++++++++++++ src/declarative/qml/qdeclarativecontext.cpp | 2 + src/declarative/qml/qdeclarativeexpression.cpp | 24 +++++++++++- .../qml/qdeclarativeextensionplugin.cpp | 4 +- src/declarative/util/qdeclarativepackage.cpp | 4 +- src/declarative/util/qdeclarativeview.cpp | 45 +++++++++++----------- src/declarative/util/qdeclarativexmllistmodel.cpp | 4 +- 10 files changed, 129 insertions(+), 36 deletions(-) diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc index 6476dfb..1ee3574 100644 --- a/doc/src/declarative/extending.qdoc +++ b/doc/src/declarative/extending.qdoc @@ -684,10 +684,6 @@ of some of the types. For the remaining types the default values are undefined. \row \o color \o #000000 (black) \endtable -If specified, the optional "default" attribute marks the new property as the -types default property, overriding any existing default property. Using the -default attribute twice in the same type block is an error. - The following example shows how to declare a new "innerColor" property that controls the color of the inner rectangle. @@ -705,6 +701,40 @@ controls the color of the inner rectangle. } \endcode + +\section3 Setting default properties + +The optional "default" attribute marks a property as the \e {default property} +for a type. This allows other items to specify the default property's value +as child elements. For example, the \l Item element's default property is its +\l{Item::children}{children} property. This allows the children of an \l Item +to be set like this: + +\qml +Item { + Rectangle {} + Rectangle {} +} +\endqml + +If the \l{Item::children}{children} property was not the default property for +\l Item, its value would have to be set like this instead: + +\qml +Item { + children: [ + Rectangle {} + Rectangle {} + ] +} +\endqml + +Specifying a default property overrides any existing default property (for +example, any default property inherited from a parent item). Using the +default attribute twice in the same type block is an error. + + + \target qml-property-aliases \section2 Property aliases diff --git a/doc/src/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc index c8a7403..dec5441 100644 --- a/doc/src/examples/qml-examples.qdoc +++ b/doc/src/examples/qml-examples.qdoc @@ -196,6 +196,9 @@ \o \l{declarative/cppextensions/qgraphicslayouts/qgraphicsgridlayout}{QGraphicsGridLayout} \o \l{declarative/cppextensions/qgraphicslayouts/qgraphicslinearlayout}{QGraphicsLinearLayout} \endlist + + Also see \l {Integrating QML with existing Qt UI code} for information on using QML + in Qt applications that use the Graphics View framework or ordinary QWidget-based views. */ /*! @@ -608,7 +611,9 @@ \title UI Components: Tab Widget \example declarative/ui-components/tabwidget - This example shows how to create a tab widget. + This example shows how to create a tab widget. It also demonstrates how + \l {Setting default properties}{default properties} can be used to collect and + assemble the child items declared within an \l Item. \image qml-tabwidget-example.png */ diff --git a/examples/declarative/ui-components/tabwidget/TabWidget.qml b/examples/declarative/ui-components/tabwidget/TabWidget.qml index 9642e04..ce57213 100644 --- a/examples/declarative/ui-components/tabwidget/TabWidget.qml +++ b/examples/declarative/ui-components/tabwidget/TabWidget.qml @@ -43,9 +43,14 @@ import Qt 4.7 Item { id: tabWidget - property int current: 0 + // Setting the default property to stack.children means any child items + // of the TabWidget are actually added to the 'stack' item's children. + // See the "Extending Types from QML" documentation for details on default + // properties. default property alias content: stack.children + property int current: 0 + onCurrentChanged: setOpacities() Component.onCompleted: setOpacities() diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 9d3032c..6d15278 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -70,6 +70,36 @@ class QByteArray; \since 4.7 \brief The QDeclarativeComponent class encapsulates a QML component description. \mainclass + + Components are reusable, encapsulated QML elements with well-defined interfaces. + They are often defined in \l {qdeclarativedocuments.html}{Component Files}. + + A QDeclarativeComponent instance can be created from a QML file. + For example, if there is a \c main.qml file like this: + + \qml + import Qt 4.7 + + Item { + width: 200 + height: 200 + } + \endqml + + The following code loads this QML file as a component, creates an instance of + this component using create(), and then queries the \l Item's \l {Item::}{width} + value: + + \code + QDeclarativeEngine *engine = new QDeclarativeEngine; + QDeclarativeComponent component(engine, QUrl::fromLocalFile("main.qml")); + + QObject *myObject = component.create(); + QDeclarativeItem *item = qobject_cast(myObject); + int width = item->width(); + \endcode + + \sa {Using QML in C++ Applications} */ /*! diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp index 60e9dd3..3d25291 100644 --- a/src/declarative/qml/qdeclarativecontext.cpp +++ b/src/declarative/qml/qdeclarativecontext.cpp @@ -145,6 +145,8 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate() has been created in that context is an expensive operation (essentially forcing all bindings to reevaluate). Thus whenever possible you should complete "setup" of the context before using it to create any objects. + + \sa {Using QML in C++ Applications} */ /*! \internal */ diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp index 8ae5f2f..96cdec1 100644 --- a/src/declarative/qml/qdeclarativeexpression.cpp +++ b/src/declarative/qml/qdeclarativeexpression.cpp @@ -214,8 +214,30 @@ QScriptValue QDeclarativeExpressionPrivate::evalInObjectScope(QDeclarativeContex /*! \class QDeclarativeExpression - \since 4.7 + \since 4.7 \brief The QDeclarativeExpression class evaluates JavaScript in a QML context. + + For example, given a file \c main.qml like this: + + \qml + import Qt 4.7 + + Item { + width: 200; height: 200 + } + \endqml + + The following code evaluates a JavaScript expression in the context of the + above QML: + + \code + QDeclarativeEngine *engine = new QDeclarativeEngine; + QDeclarativeComponent component(engine, QUrl::fromLocalFile("main.qml")); + + QObject *myObject = component.create(); + QDeclarativeExpression *expr = new QDeclarativeExpression(engine->rootContext(), myObject, "width * 2"); + int result = expr->evaluate().toInt(); // result = 400 + \endcode */ /*! diff --git a/src/declarative/qml/qdeclarativeextensionplugin.cpp b/src/declarative/qml/qdeclarativeextensionplugin.cpp index c2e8300..0660599 100644 --- a/src/declarative/qml/qdeclarativeextensionplugin.cpp +++ b/src/declarative/qml/qdeclarativeextensionplugin.cpp @@ -67,10 +67,8 @@ QT_BEGIN_NAMESPACE See \l {Tutorial: Writing QML extensions with C++} for details on creating QML extensions, including how to build a plugin with with QDeclarativeExtensionPlugin. For a simple overview, see the \l{declarative/cppextensions/plugins}{plugins} example. - - Also see \l {How to Create Qt Plugins} for general Qt plugin documentation. - \sa QDeclarativeEngine::importPlugin() + \sa QDeclarativeEngine::importPlugin(), {How to Create Qt Plugins} */ /*! diff --git a/src/declarative/util/qdeclarativepackage.cpp b/src/declarative/util/qdeclarativepackage.cpp index 1e49ad9..1a4f2a7 100644 --- a/src/declarative/util/qdeclarativepackage.cpp +++ b/src/declarative/util/qdeclarativepackage.cpp @@ -65,12 +65,12 @@ QT_BEGIN_NAMESPACE \snippet examples/declarative/modelviews/package/Delegate.qml 0 These named items are used as the delegates by the two views who - reference the special VisualDataModel.parts property to select + reference the special \l{VisualDataModel::parts} property to select a model which provides the chosen delegate. \snippet examples/declarative/modelviews/package/view.qml 0 - \sa {declarative/modelviews/package}{Package example}, QtDeclarative + \sa {declarative/modelviews/package}{Package example}, {demos/declarative/photoviewer}{Photo Viewer demo}, QtDeclarative */ /*! diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp index 12a8d3a..496f2ad 100644 --- a/src/declarative/util/qdeclarativeview.cpp +++ b/src/declarative/util/qdeclarativeview.cpp @@ -194,45 +194,46 @@ void QDeclarativeViewPrivate::itemGeometryChanged(QDeclarativeItem *resizeItem, \since 4.7 \brief The QDeclarativeView class provides a widget for displaying a Qt Declarative user interface. - Any QGraphicsObject or QDeclarativeItem - created via QML can be placed on a standard QGraphicsScene and viewed with a standard - QGraphicsView. + QDeclarativeItem objects can be placed on a standard QGraphicsScene and + displayed with QGraphicsView. QDeclarativeView is a QGraphicsView subclass + provided as a convenience for displaying QML files, and connecting between + QML and C++ Qt objects. - QDeclarativeView is a QGraphicsView subclass provided as a convenience for displaying QML - files, and connecting between QML and C++ Qt objects. - - QDeclarativeView performs the following functions: + QDeclarativeView provides: \list - \o Manages QDeclarativeComponent loading and object creation. - \o Initializes QGraphicsView for optimal performance with QML: + \o Management of QDeclarativeComponent loading and object creation + \o Initialization of QGraphicsView for optimal performance with QML using these settings: \list - \o QGraphicsView::setOptimizationFlags(QGraphicsView::DontSavePainterState); - \o QGraphicsView::setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate); - \o QGraphicsScene::setItemIndexMethod(QGraphicsScene::NoIndex); + \o QGraphicsView::setOptimizationFlags(QGraphicsView::DontSavePainterState) + \o QGraphicsView::setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate) + \o QGraphicsScene::setItemIndexMethod(QGraphicsScene::NoIndex) \endlist - \o Initializes QGraphicsView for QML key handling: + \o Initialization of QGraphicsView for QML key handling using these settings: \list - \o QGraphicsView::viewport()->setFocusPolicy(Qt::NoFocus); - \o QGraphicsView::setFocusPolicy(Qt::StrongFocus); - \o QGraphicsScene::setStickyFocus(true); + \o QGraphicsView::viewport()->setFocusPolicy(Qt::NoFocus) + \o QGraphicsView::setFocusPolicy(Qt::StrongFocus) + \o QGraphicsScene::setStickyFocus(true) \endlist \endlist Typical usage: - \code - ... - QDeclarativeView *view = new QDeclarativeView(this); - vbox->addWidget(view); - QUrl url = QUrl::fromLocalFile(fileName); - view->setSource(url); + \code + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile("myqmlfile.qml")); view->show(); \endcode + Since QDeclarativeView is a QWidget-based class, it can be used to + display QML interfaces within QWidget-based GUI applications that do not + use the Graphics View framework. + To receive errors related to loading and executing QML with QDeclarativeView, you can connect to the statusChanged() signal and monitor for QDeclarativeView::Error. The errors are available via QDeclarativeView::errors(). + + \sa {Integrating QML with existing Qt UI code}, {Using QML in C++ Applications} */ diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp index 5583007..00169db 100644 --- a/src/declarative/util/qdeclarativexmllistmodel.cpp +++ b/src/declarative/util/qdeclarativexmllistmodel.cpp @@ -667,7 +667,7 @@ QString QDeclarativeXmlListModel::toString(int role) const \qmlproperty url XmlListModel::source The location of the XML data source. - If both source and xml are set, xml will be used. + If both \c source and \l xml are set, \l xml is used. */ QUrl QDeclarativeXmlListModel::source() const { @@ -692,7 +692,7 @@ void QDeclarativeXmlListModel::setSource(const QUrl &src) The text is assumed to be UTF-8 encoded. - If both \l source and \c xml are set, \c xml will be used. + If both \l source and \c xml are set, \c xml is used. */ QString QDeclarativeXmlListModel::xml() const { -- cgit v0.12 From 23ef32dc0972d027617e5052192d1a17ba424f66 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 6 Jul 2010 16:31:09 +1000 Subject: Update QtDeclarative def files --- src/s60installs/bwins/QtDeclarativeu.def | 105 ++++++++++++++++++++----------- src/s60installs/eabi/QtDeclarativeu.def | 92 ++++++++++++++++++--------- 2 files changed, 131 insertions(+), 66 deletions(-) diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 9572b72..2ee1736 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -10,7 +10,7 @@ EXPORTS ??6QDeclarativeInfo@@QAEAAV0@_J@Z @ 9 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long long) ?propertyOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 10 NONAME ; int QDeclarativeOpenMetaObjectType::propertyOffset(void) const ??0QDeclarativeText@@QAE@PAVQDeclarativeItem@@@Z @ 11 NONAME ; QDeclarativeText::QDeclarativeText(class QDeclarativeItem *) - ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 12 NONAME ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 12 NONAME ABSENT ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *, int) ?propertyTypeName@QDeclarativeProperty@@QBEPBDXZ @ 13 NONAME ; char const * QDeclarativeProperty::propertyTypeName(void) const ?wantsFocusChanged@QDeclarativeItem@@IAEX_N@Z @ 14 NONAME ; void QDeclarativeItem::wantsFocusChanged(bool) ?getStaticMetaObject@QDeclarativeDebugService@@SAABUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const & QDeclarativeDebugService::getStaticMetaObject(void) @@ -22,7 +22,7 @@ EXPORTS ?elapsed@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 21 NONAME ; long long QDeclarativeItemPrivate::elapsed(class QElapsedTimer &) ?clearComponentCache@QDeclarativeEngine@@QAEXXZ @ 22 NONAME ; void QDeclarativeEngine::clearComponentCache(void) ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 23 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *, int) - ??_EQDeclarativePixmapReply@@UAE@I@Z @ 24 NONAME ; QDeclarativePixmapReply::~QDeclarativePixmapReply(unsigned int) + ??_EQDeclarativePixmapReply@@UAE@I@Z @ 24 NONAME ABSENT ; QDeclarativePixmapReply::~QDeclarativePixmapReply(unsigned int) ??1QDeclarativeParserStatus@@UAE@XZ @ 25 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(void) ?gradient@QDeclarativeRectangle@@QBEPAVQDeclarativeGradient@@XZ @ 26 NONAME ; class QDeclarativeGradient * QDeclarativeRectangle::gradient(void) const ?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 27 NONAME ; void QMetaPropertyBuilder::setReadable(bool) @@ -35,7 +35,7 @@ EXPORTS ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQString@@PAVQObject@@@Z @ 34 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QString const &, class QObject *) ?d_func@QDeclarativeContext@@AAEPAVQDeclarativeContextPrivate@@XZ @ 35 NONAME ; class QDeclarativeContextPrivate * QDeclarativeContext::d_func(void) ?resetLeft@QDeclarativeAnchors@@QAEXXZ @ 36 NONAME ; void QDeclarativeAnchors::resetLeft(void) - ?staticMetaObject@QDeclarativePixmapReply@@2UQMetaObject@@B @ 37 NONAME ; struct QMetaObject const QDeclarativePixmapReply::staticMetaObject + ?staticMetaObject@QDeclarativePixmapReply@@2UQMetaObject@@B @ 37 NONAME ABSENT ; struct QMetaObject const QDeclarativePixmapReply::staticMetaObject ?setOfflineStoragePath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 38 NONAME ; void QDeclarativeEngine::setOfflineStoragePath(class QString const &) ?getStaticMetaObject@QListModelInterface@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & QListModelInterface::getStaticMetaObject(void) ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *, int) @@ -82,7 +82,7 @@ EXPORTS ?registerType@QDeclarativePrivate@@YAHABURegisterInterface@1@@Z @ 81 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterInterface const &) ?classBegin@QDeclarativeItem@@MAEXXZ @ 82 NONAME ; void QDeclarativeItem::classBegin(void) ?setTransformOrigin@QDeclarativeItem@@QAEXW4TransformOrigin@1@@Z @ 83 NONAME ; void QDeclarativeItem::setTransformOrigin(enum QDeclarativeItem::TransformOrigin) - ?request@QDeclarativePixmapCache@@SAPAVQDeclarativePixmapReply@@PAVQDeclarativeEngine@@ABVQUrl@@HH@Z @ 84 NONAME ; class QDeclarativePixmapReply * QDeclarativePixmapCache::request(class QDeclarativeEngine *, class QUrl const &, int, int) + ?request@QDeclarativePixmapCache@@SAPAVQDeclarativePixmapReply@@PAVQDeclarativeEngine@@ABVQUrl@@HH@Z @ 84 NONAME ABSENT ; class QDeclarativePixmapReply * QDeclarativePixmapCache::request(class QDeclarativeEngine *, class QUrl const &, int, int) ?event@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 85 NONAME ; bool QDeclarativeItem::event(class QEvent *) ?setAttributes@QMetaMethodBuilder@@QAEXH@Z @ 86 NONAME ; void QMetaMethodBuilder::setAttributes(int) ??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 87 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int) @@ -137,7 +137,7 @@ EXPORTS ?transform_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 136 NONAME ; void QDeclarativeItemPrivate::transform_clear(class QDeclarativeListProperty *) ?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 137 NONAME ; struct QMetaObject const QDeclarativeValueType::staticMetaObject ?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 138 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const - ?getStaticMetaObject@QDeclarativePixmapReply@@SAABUQMetaObject@@XZ @ 139 NONAME ; struct QMetaObject const & QDeclarativePixmapReply::getStaticMetaObject(void) + ?getStaticMetaObject@QDeclarativePixmapReply@@SAABUQMetaObject@@XZ @ 139 NONAME ABSENT ; struct QMetaObject const & QDeclarativePixmapReply::getStaticMetaObject(void) ?focusChanged@QDeclarativeItem@@IAEX_N@Z @ 140 NONAME ; void QDeclarativeItem::focusChanged(bool) ?getStaticMetaObject@QDeclarativeBinding@@SAABUQMetaObject@@XZ @ 141 NONAME ; struct QMetaObject const & QDeclarativeBinding::getStaticMetaObject(void) ?copy@QDeclarativeMetaType@@SA_NHPAXPBX@Z @ 142 NONAME ; bool QDeclarativeMetaType::copy(int, void *, void const *) @@ -159,7 +159,7 @@ EXPORTS ?property@QMetaObjectBuilder@@QBE?AVQMetaPropertyBuilder@@H@Z @ 158 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::property(int) const ?index@QDeclarativeType@@QBEHXZ @ 159 NONAME ; int QDeclarativeType::index(void) const ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 160 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *) - ?release@QDeclarativePixmapReply@@AAE_N_N@Z @ 161 NONAME ; bool QDeclarativePixmapReply::release(bool) + ?release@QDeclarativePixmapReply@@AAE_N_N@Z @ 161 NONAME ABSENT ; bool QDeclarativePixmapReply::release(bool) ??0QDeclarativeScaleGrid@@QAE@PAVQObject@@@Z @ 162 NONAME ; QDeclarativeScaleGrid::QDeclarativeScaleGrid(class QObject *) ?engines@QDeclarativeDebugEnginesQuery@@QBE?AV?$QList@VQDeclarativeDebugEngineReference@@@@XZ @ 163 NONAME ; class QList QDeclarativeDebugEnginesQuery::engines(void) const ?qt_metacall@QDeclarativeDebugPropertyWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 164 NONAME ; int QDeclarativeDebugPropertyWatch::qt_metacall(enum QMetaObject::Call, int, void * *) @@ -212,7 +212,7 @@ EXPORTS ?setRight@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 211 NONAME ; void QDeclarativeAnchors::setRight(class QDeclarativeAnchorLine const &) ?needsNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 212 NONAME ; bool QDeclarativeProperty::needsNotifySignal(void) const ?fill@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 213 NONAME ; class QGraphicsObject * QDeclarativeAnchors::fill(void) const - ?url@QDeclarativePixmapReply@@QBEABVQUrl@@XZ @ 214 NONAME ; class QUrl const & QDeclarativePixmapReply::url(void) const + ?url@QDeclarativePixmapReply@@QBEABVQUrl@@XZ @ 214 NONAME ABSENT ; class QUrl const & QDeclarativePixmapReply::url(void) const ?top@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 215 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::top(void) const ?clear@QDeclarativeListReference@@QBE_NXZ @ 216 NONAME ; bool QDeclarativeListReference::clear(void) const ?parentChanged@QDeclarativeItem@@IAEXPAV1@@Z @ 217 NONAME ; void QDeclarativeItem::parentChanged(class QDeclarativeItem *) @@ -299,7 +299,7 @@ EXPORTS ??1QDeclarativeExpression@@UAE@XZ @ 298 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(void) ?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 299 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &) ?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 300 NONAME ; void QMetaObjectBuilder::removeMethod(int) - ?get@QDeclarativePixmapCache@@SA?AW4Status@QDeclarativePixmapReply@@ABVQUrl@@PAVQPixmap@@PAVQString@@PAVQSize@@_NHH@Z @ 301 NONAME ; enum QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(class QUrl const &, class QPixmap *, class QString *, class QSize *, bool, int, int) + ?get@QDeclarativePixmapCache@@SA?AW4Status@QDeclarativePixmapReply@@ABVQUrl@@PAVQPixmap@@PAVQString@@PAVQSize@@_NHH@Z @ 301 NONAME ABSENT ; enum QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(class QUrl const &, class QPixmap *, class QString *, class QSize *, bool, int, int) ?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 302 NONAME ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const ?methodCount@QMetaObjectBuilder@@QBEHXZ @ 303 NONAME ; int QMetaObjectBuilder::methodCount(void) const ?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 304 NONAME ; class QFont QDeclarativeText::font(void) const @@ -406,7 +406,7 @@ EXPORTS ?margins@QDeclarativeAnchors@@QBEMXZ @ 405 NONAME ; float QDeclarativeAnchors::margins(void) const ?length@QDeclarativeDomProperty@@QBEHXZ @ 406 NONAME ; int QDeclarativeDomProperty::length(void) const ??1QDeclarativeDomImport@@QAE@XZ @ 407 NONAME ; QDeclarativeDomImport::~QDeclarativeDomImport(void) - ?addRef@QDeclarativePixmapReply@@AAEXXZ @ 408 NONAME ; void QDeclarativePixmapReply::addRef(void) + ?addRef@QDeclarativePixmapReply@@AAEXXZ @ 408 NONAME ABSENT ; void QDeclarativePixmapReply::addRef(void) ?mouseReleaseEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 409 NONAME ; void QDeclarativeText::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) ?isCustomType@QDeclarativeDomObject@@QBE_NXZ @ 410 NONAME ; bool QDeclarativeDomObject::isCustomType(void) const ?registerType@QDeclarativePrivate@@YAHABURegisterType@1@@Z @ 411 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterType const &) @@ -414,7 +414,7 @@ EXPORTS ??0QDeclarativeComponent@@AAE@PAVQDeclarativeEngine@@PAVQDeclarativeCompiledData@@HHPAVQObject@@@Z @ 413 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QDeclarativeCompiledData *, int, int, class QObject *) ?resources_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 414 NONAME ; int QDeclarativeItemPrivate::resources_count(class QDeclarativeListProperty *) ?timerEvent@QDeclarativeView@@MAEXPAVQTimerEvent@@@Z @ 415 NONAME ; void QDeclarativeView::timerEvent(class QTimerEvent *) - ?finished@QDeclarativePixmapReply@@IAEXXZ @ 416 NONAME ; void QDeclarativePixmapReply::finished(void) + ?finished@QDeclarativePixmapReply@@IAEXXZ @ 416 NONAME ABSENT ; void QDeclarativePixmapReply::finished(void) ?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 417 NONAME ; void QDeclarativeTransition::setToState(class QString const &) ?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 418 NONAME ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const ?getStaticMetaObject@QDeclarativeView@@SAABUQMetaObject@@XZ @ 419 NONAME ; struct QMetaObject const & QDeclarativeView::getStaticMetaObject(void) @@ -485,12 +485,12 @@ EXPORTS ?staticMetaObject@QDeclarativeDebugService@@2UQMetaObject@@B @ 484 NONAME ; struct QMetaObject const QDeclarativeDebugService::staticMetaObject ?topMargin@QDeclarativeAnchors@@QBEMXZ @ 485 NONAME ; float QDeclarativeAnchors::topMargin(void) const ??0QDeclarativeDebugExpressionQuery@@AAE@PAVQObject@@@Z @ 486 NONAME ; QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(class QObject *) - ?qt_metacast@QDeclarativePixmapReply@@UAEPAXPBD@Z @ 487 NONAME ; void * QDeclarativePixmapReply::qt_metacast(char const *) + ?qt_metacast@QDeclarativePixmapReply@@UAEPAXPBD@Z @ 487 NONAME ABSENT ; void * QDeclarativePixmapReply::qt_metacast(char const *) ??0QPacket@@IAE@ABVQByteArray@@@Z @ 488 NONAME ; QPacket::QPacket(class QByteArray const &) ?setFlags@QMetaObjectBuilder@@QAEXV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@@Z @ 489 NONAME ; void QMetaObjectBuilder::setFlags(class QFlags) ?horizontalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 490 NONAME ; void QDeclarativeAnchors::horizontalCenterChanged(void) ?right@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 491 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::right(void) const - ?pendingRequests@QDeclarativePixmapCache@@SAHXZ @ 492 NONAME ; int QDeclarativePixmapCache::pendingRequests(void) + ?pendingRequests@QDeclarativePixmapCache@@SAHXZ @ 492 NONAME ABSENT ; int QDeclarativePixmapCache::pendingRequests(void) ?staticMetaObject@QDeclarativeDebugObjectQuery@@2UQMetaObject@@B @ 493 NONAME ; struct QMetaObject const QDeclarativeDebugObjectQuery::staticMetaObject ?propertyRead@QDeclarativeOpenMetaObject@@MAEXH@Z @ 494 NONAME ; void QDeclarativeOpenMetaObject::propertyRead(int) ?importPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 495 NONAME ; class QStringList QDeclarativeEngine::importPathList(void) const @@ -600,7 +600,7 @@ EXPORTS ?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 599 NONAME ; class QByteArray QDeclarativeType::typeName(void) const ?asStringList@Variant@QDeclarativeParser@@QBE?AVQStringList@@XZ @ 600 NONAME ; class QStringList QDeclarativeParser::Variant::asStringList(void) const ?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 601 NONAME ; void QMetaEnumBuilder::removeKey(int) - ?downloadProgress@QDeclarativePixmapReply@@IAEX_J0@Z @ 602 NONAME ; void QDeclarativePixmapReply::downloadProgress(long long, long long) + ?downloadProgress@QDeclarativePixmapReply@@IAEX_J0@Z @ 602 NONAME ABSENT ; void QDeclarativePixmapReply::downloadProgress(long long, long long) ?addRelatedMetaObject@QMetaObjectBuilder@@QAEHABQ6AABUQMetaObject@@XZ@Z @ 603 NONAME ; int QMetaObjectBuilder::addRelatedMetaObject(struct QMetaObject const & (* const)(void) const &) ??0QDeclarativeDomValueLiteral@@QAE@XZ @ 604 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(void) ??_EQDeclarativeDebugObjectExpressionWatch@@UAE@I@Z @ 605 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(unsigned int) @@ -626,7 +626,7 @@ EXPORTS ??0QDeclarativeCustomParserNode@@QAE@XZ @ 625 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(void) ?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 626 NONAME ; class QString QDeclarativeDomImport::version(void) const ?smooth@QDeclarativeItem@@QBE_NXZ @ 627 NONAME ; bool QDeclarativeItem::smooth(void) const - ?implicitSize@QDeclarativePixmapReply@@QBE?AVQSize@@XZ @ 628 NONAME ; class QSize QDeclarativePixmapReply::implicitSize(void) const + ?implicitSize@QDeclarativePixmapReply@@QBE?AVQSize@@XZ @ 628 NONAME ABSENT ; class QSize QDeclarativePixmapReply::implicitSize(void) const ??1QDeclarativeInfo@@QAE@XZ @ 629 NONAME ; QDeclarativeInfo::~QDeclarativeInfo(void) ?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 630 NONAME ; void * QDeclarativeStateOperation::qt_metacast(char const *) ??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 631 NONAME ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &) @@ -712,7 +712,7 @@ EXPORTS ?mapToItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 711 NONAME ; class QScriptValue QDeclarativeItem::mapToItem(class QScriptValue const &, float, float) const ?setPluginPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 712 NONAME ; void QDeclarativeEngine::setPluginPathList(class QStringList const &) ?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 713 NONAME ; struct QMetaObject const * QDeclarativeState::metaObject(void) const - ?errorString@QDeclarativePixmapReply@@QBE?AVQString@@XZ @ 714 NONAME ; class QString QDeclarativePixmapReply::errorString(void) const + ?errorString@QDeclarativePixmapReply@@QBE?AVQString@@XZ @ 714 NONAME ABSENT ; class QString QDeclarativePixmapReply::errorString(void) const ?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 715 NONAME ; class QRectF QDeclarativeRectangle::boundingRect(void) const ?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 716 NONAME ; class QString QDeclarativeDomImport::uri(void) const ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@PAVQObject@@@Z @ 717 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QObject *) @@ -758,14 +758,14 @@ EXPORTS ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 757 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *) ?staticMetaObject@QDeclarativeBinding@@2UQMetaObject@@B @ 758 NONAME ; struct QMetaObject const QDeclarativeBinding::staticMetaObject ?qualifier@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 759 NONAME ; class QString QDeclarativeDomImport::qualifier(void) const - ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 760 NONAME ; class QString QDeclarativePixmapCache::tr(char const *, char const *, int) + ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 760 NONAME ABSENT ; class QString QDeclarativePixmapCache::tr(char const *, char const *, int) ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 761 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeContext *) ?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 762 NONAME ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *) ?contains@QDeclarativePropertyMap@@QBE_NABVQString@@@Z @ 763 NONAME ; bool QDeclarativePropertyMap::contains(class QString const &) const ?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 764 NONAME ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *) ?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 765 NONAME ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 766 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *) - ??0QDeclarativePixmapReply@@AAE@PAVQDeclarativeImageReader@@ABVQUrl@@HH@Z @ 767 NONAME ; QDeclarativePixmapReply::QDeclarativePixmapReply(class QDeclarativeImageReader *, class QUrl const &, int, int) + ??0QDeclarativePixmapReply@@AAE@PAVQDeclarativeImageReader@@ABVQUrl@@HH@Z @ 767 NONAME ABSENT ; QDeclarativePixmapReply::QDeclarativePixmapReply(class QDeclarativeImageReader *, class QUrl const &, int, int) ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 768 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *, int) ?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 769 NONAME ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const ?hasNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 770 NONAME ; bool QDeclarativeProperty::hasNotifySignal(void) const @@ -811,7 +811,7 @@ EXPORTS ?setParentItem@QDeclarativeItem@@QAEXPAV1@@Z @ 810 NONAME ; void QDeclarativeItem::setParentItem(class QDeclarativeItem *) ?qmlAttachedProperties@QDeclarativeComponent@@SAPAVQDeclarativeComponentAttached@@PAVQObject@@@Z @ 811 NONAME ; class QDeclarativeComponentAttached * QDeclarativeComponent::qmlAttachedProperties(class QObject *) ??0QDeclarativeView@@QAE@ABVQUrl@@PAVQWidget@@@Z @ 812 NONAME ; QDeclarativeView::QDeclarativeView(class QUrl const &, class QWidget *) - ?qt_metacall@QDeclarativePixmapReply@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 813 NONAME ; int QDeclarativePixmapReply::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QDeclarativePixmapReply@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 813 NONAME ABSENT ; int QDeclarativePixmapReply::qt_metacall(enum QMetaObject::Call, int, void * *) ?valueChanged@QDeclarativeExpression@@IAEXXZ @ 814 NONAME ; void QDeclarativeExpression::valueChanged(void) ?childrenChanged@QDeclarativeItem@@IAEXXZ @ 815 NONAME ; void QDeclarativeItem::childrenChanged(void) ??_EQDeclarativeView@@UAE@I@Z @ 816 NONAME ; QDeclarativeView::~QDeclarativeView(unsigned int) @@ -823,7 +823,7 @@ EXPORTS ?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 822 NONAME ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const ?stateChanged@QDeclarativeItem@@IAEXABVQString@@@Z @ 823 NONAME ; void QDeclarativeItem::stateChanged(class QString const &) ?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 824 NONAME ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment) - ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 825 NONAME ; class QString QDeclarativePixmapCache::tr(char const *, char const *) + ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 825 NONAME ABSENT ; class QString QDeclarativePixmapCache::tr(char const *, char const *) ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 826 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &) ?setDynamic@QMetaPropertyBuilder@@QAEX_N@Z @ 827 NONAME ; void QMetaPropertyBuilder::setDynamic(bool) ?d_func@QDeclarativeEngine@@ABEPBVQDeclarativeEnginePrivate@@XZ @ 828 NONAME ; class QDeclarativeEnginePrivate const * QDeclarativeEngine::d_func(void) const @@ -832,7 +832,7 @@ EXPORTS ?horizontalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 831 NONAME ; void QDeclarativeAnchors::horizontalCenterOffsetChanged(void) ?tr@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 832 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *) ?d_func@QDeclarativeItem@@ABEPBVQDeclarativeItemPrivate@@XZ @ 833 NONAME ; class QDeclarativeItemPrivate const * QDeclarativeItem::d_func(void) const - ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 834 NONAME ; class QString QDeclarativePixmapReply::tr(char const *, char const *) + ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 834 NONAME ABSENT ; class QString QDeclarativePixmapReply::tr(char const *, char const *) ?isUser@QMetaPropertyBuilder@@QBE_NXZ @ 835 NONAME ; bool QMetaPropertyBuilder::isUser(void) const ?doUpdate@QDeclarativeRectangle@@AAEXXZ @ 836 NONAME ; void QDeclarativeRectangle::doUpdate(void) ?qmlExecuteDeferred@@YAXPAVQObject@@@Z @ 837 NONAME ; void qmlExecuteDeferred(class QObject *) @@ -849,9 +849,9 @@ EXPORTS ?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 848 NONAME ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const ??1QDeclarativeDebugQuery@@UAE@XZ @ 849 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void) ?data_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 850 NONAME ; void QDeclarativeItemPrivate::data_append(class QDeclarativeListProperty *, class QObject *) - ??1QDeclarativePixmapReply@@UAE@XZ @ 851 NONAME ; QDeclarativePixmapReply::~QDeclarativePixmapReply(void) + ??1QDeclarativePixmapReply@@UAE@XZ @ 851 NONAME ABSENT ; QDeclarativePixmapReply::~QDeclarativePixmapReply(void) ?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 852 NONAME ; class QString QDeclarativeState::tr(char const *, char const *) - ?isLoading@QDeclarativePixmapReply@@ABE_NXZ @ 853 NONAME ; bool QDeclarativePixmapReply::isLoading(void) const + ?isLoading@QDeclarativePixmapReply@@ABE_NXZ @ 853 NONAME ABSENT ; bool QDeclarativePixmapReply::isLoading(void) const ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 854 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int) ?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 855 NONAME ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *) ?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 856 NONAME ; float QDeclarativeAnchors::bottomMargin(void) const @@ -865,7 +865,7 @@ EXPORTS ?qt_metacast@QDeclarativeDebugWatch@@UAEPAXPBD@Z @ 864 NONAME ; void * QDeclarativeDebugWatch::qt_metacast(char const *) ?implicitHeight@QDeclarativeItem@@QBEMXZ @ 865 NONAME ; float QDeclarativeItem::implicitHeight(void) const ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 866 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *) - ?status@QDeclarativePixmapReply@@QBE?AW4Status@1@XZ @ 867 NONAME ; enum QDeclarativePixmapReply::Status QDeclarativePixmapReply::status(void) const + ?status@QDeclarativePixmapReply@@QBE?AW4Status@1@XZ @ 867 NONAME ABSENT ; enum QDeclarativePixmapReply::Status QDeclarativePixmapReply::status(void) const ??6@YA?AVQDebug@@V0@ABVQDeclarativeError@@@Z @ 868 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeError const &) ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@ABVQVariant@@@Z @ 869 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QVariant const &) ?imports@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeDomImport@@@@XZ @ 870 NONAME ; class QList QDeclarativeDomDocument::imports(void) const @@ -967,7 +967,7 @@ EXPORTS ?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 966 NONAME ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *) ?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 967 NONAME ; class QByteArray QDeclarativeType::qmlTypeName(void) const ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 968 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *) - ?setLoading@QDeclarativePixmapReply@@AAEXXZ @ 969 NONAME ; void QDeclarativePixmapReply::setLoading(void) + ?setLoading@QDeclarativePixmapReply@@AAEXXZ @ 969 NONAME ABSENT ; void QDeclarativePixmapReply::setLoading(void) ?isProperty@QDeclarativeProperty@@QBE_NXZ @ 970 NONAME ; bool QDeclarativeProperty::isProperty(void) const ?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 971 NONAME ; class QList QDeclarativeStateGroup::states(void) const ??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 972 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void) @@ -1105,7 +1105,7 @@ EXPORTS ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 1104 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int) ?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 1105 NONAME ; class QString QPacketProtocol::tr(char const *, char const *, int) ?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 1106 NONAME ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const - ?metaObject@QDeclarativePixmapReply@@UBEPBUQMetaObject@@XZ @ 1107 NONAME ; struct QMetaObject const * QDeclarativePixmapReply::metaObject(void) const + ?metaObject@QDeclarativePixmapReply@@UBEPBUQMetaObject@@XZ @ 1107 NONAME ABSENT ; struct QMetaObject const * QDeclarativePixmapReply::metaObject(void) const ?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 1108 NONAME ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &) ?enabled@QDeclarativeBehavior@@QBE_NXZ @ 1109 NONAME ; bool QDeclarativeBehavior::enabled(void) const ?initProperty@QDeclarativePropertyPrivate@@QAEXPAVQObject@@ABVQString@@@Z @ 1110 NONAME ; void QDeclarativePropertyPrivate::initProperty(class QObject *, class QString const &) @@ -1158,7 +1158,7 @@ EXPORTS ?isDefaultProperty@QDeclarativeDomProperty@@QBE_NXZ @ 1157 NONAME ; bool QDeclarativeDomProperty::isDefaultProperty(void) const ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1158 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QVariant const &) ?metaObject@QDeclarativeRectangle@@UBEPBUQMetaObject@@XZ @ 1159 NONAME ; struct QMetaObject const * QDeclarativeRectangle::metaObject(void) const - ?forcedWidth@QDeclarativePixmapReply@@QBEHXZ @ 1160 NONAME ; int QDeclarativePixmapReply::forcedWidth(void) const + ?forcedWidth@QDeclarativePixmapReply@@QBEHXZ @ 1160 NONAME ABSENT ; int QDeclarativePixmapReply::forcedWidth(void) const ?removeRelatedMetaObject@QMetaObjectBuilder@@QAEXH@Z @ 1161 NONAME ; void QMetaObjectBuilder::removeRelatedMetaObject(int) ??0QDeclarativeError@@QAE@XZ @ 1162 NONAME ; QDeclarativeError::QDeclarativeError(void) ?object@QDeclarativeProperty@@QBEPAVQObject@@XZ @ 1163 NONAME ; class QObject * QDeclarativeProperty::object(void) const @@ -1204,7 +1204,7 @@ EXPORTS ?isValid@QDeclarativeError@@QBE_NXZ @ 1203 NONAME ; bool QDeclarativeError::isValid(void) const ??0QMetaMethodBuilder@@QAE@XZ @ 1204 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(void) ?completed@QDeclarativeState@@IAEXXZ @ 1205 NONAME ; void QDeclarativeState::completed(void) - ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 1206 NONAME ; class QString QDeclarativePixmapReply::tr(char const *, char const *, int) + ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 1206 NONAME ABSENT ; class QString QDeclarativePixmapReply::tr(char const *, char const *, int) ?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 1207 NONAME ; void QDeclarativeRectangle::radiusChanged(void) ?getStaticMetaObject@QDeclarativeExpression@@SAABUQMetaObject@@XZ @ 1208 NONAME ; struct QMetaObject const & QDeclarativeExpression::getStaticMetaObject(void) ?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1209 NONAME ; int QDeclarativeGridScaledImage::gridLeft(void) const @@ -1275,7 +1275,7 @@ EXPORTS ?contextProperty@QDeclarativeContext@@QBE?AVQVariant@@ABVQString@@@Z @ 1274 NONAME ; class QVariant QDeclarativeContext::contextProperty(class QString const &) const ?verticalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1275 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::verticalCenter(void) const ?metaObject@QDeclarativeScaleGrid@@UBEPBUQMetaObject@@XZ @ 1276 NONAME ; struct QMetaObject const * QDeclarativeScaleGrid::metaObject(void) const - ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 1277 NONAME ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 1277 NONAME ABSENT ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *, int) ?qmlContext@@YAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1278 NONAME ; class QDeclarativeContext * qmlContext(class QObject const *) ?transform_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 1279 NONAME ; int QDeclarativeItemPrivate::transform_count(class QDeclarativeListProperty *) ?tr@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 1280 NONAME ; class QString QListModelInterface::tr(char const *, char const *, int) @@ -1283,7 +1283,7 @@ EXPORTS ?style@QDeclarativeText@@QBE?AW4TextStyle@1@XZ @ 1282 NONAME ; enum QDeclarativeText::TextStyle QDeclarativeText::style(void) const ??0QDeclarativeAbstractBinding@@QAE@XZ @ 1283 NONAME ; QDeclarativeAbstractBinding::QDeclarativeAbstractBinding(void) ?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 1284 NONAME ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject - ?cancel@QDeclarativePixmapCache@@SAXABVQUrl@@PAVQObject@@@Z @ 1285 NONAME ; void QDeclarativePixmapCache::cancel(class QUrl const &, class QObject *) + ?cancel@QDeclarativePixmapCache@@SAXABVQUrl@@PAVQObject@@@Z @ 1285 NONAME ABSENT ; void QDeclarativePixmapCache::cancel(class QUrl const &, class QObject *) ?isError@QDeclarativeComponent@@QBE_NXZ @ 1286 NONAME ; bool QDeclarativeComponent::isError(void) const ?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1287 NONAME ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *) ?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 1288 NONAME ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const @@ -1547,14 +1547,14 @@ EXPORTS ?isValid@QDeclarativeContext@@QBE_NXZ @ 1546 NONAME ; bool QDeclarativeContext::isValid(void) const ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 1547 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *, int) ?qmlAttachedPropertiesObjectById@@YAPAVQObject@@HPBV1@_N@Z @ 1548 NONAME ; class QObject * qmlAttachedPropertiesObjectById(int, class QObject const *, bool) - ?d_func@QDeclarativePixmapReply@@ABEPBVQDeclarativePixmapReplyPrivate@@XZ @ 1549 NONAME ; class QDeclarativePixmapReplyPrivate const * QDeclarativePixmapReply::d_func(void) const + ?d_func@QDeclarativePixmapReply@@ABEPBVQDeclarativePixmapReplyPrivate@@XZ @ 1549 NONAME ABSENT ; class QDeclarativePixmapReplyPrivate const * QDeclarativePixmapReply::d_func(void) const ?constructorCount@QMetaObjectBuilder@@QBEHXZ @ 1550 NONAME ; int QMetaObjectBuilder::constructorCount(void) const ??0QDeclarativeDomValueValueInterceptor@@QAE@ABV0@@Z @ 1551 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(class QDeclarativeDomValueValueInterceptor const &) ?object@QDeclarativeDebugObjectQuery@@QBE?AVQDeclarativeDebugObjectReference@@XZ @ 1552 NONAME ; class QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object(void) const ??0QMetaPropertyBuilder@@QAE@XZ @ 1553 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(void) ?toMetaObject@QMetaObjectBuilder@@QBEPAUQMetaObject@@XZ @ 1554 NONAME ; struct QMetaObject * QMetaObjectBuilder::toMetaObject(void) const ?d_func@QDeclarativeEngine@@AAEPAVQDeclarativeEnginePrivate@@XZ @ 1555 NONAME ; class QDeclarativeEnginePrivate * QDeclarativeEngine::d_func(void) - ?forcedHeight@QDeclarativePixmapReply@@QBEHXZ @ 1556 NONAME ; int QDeclarativePixmapReply::forcedHeight(void) const + ?forcedHeight@QDeclarativePixmapReply@@QBEHXZ @ 1556 NONAME ABSENT ; int QDeclarativePixmapReply::forcedHeight(void) const ?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 1557 NONAME ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject ?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1558 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &) ?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1559 NONAME ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void) @@ -1580,9 +1580,9 @@ EXPORTS ?height@QDeclarativeItem@@QBEMXZ @ 1579 NONAME ; float QDeclarativeItem::height(void) const ?minorVersion@QDeclarativeType@@QBEHXZ @ 1580 NONAME ; int QDeclarativeType::minorVersion(void) const ?qt_metacall@QDeclarativeText@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1581 NONAME ; int QDeclarativeText::qt_metacall(enum QMetaObject::Call, int, void * *) - ?event@QDeclarativePixmapReply@@MAE_NPAVQEvent@@@Z @ 1582 NONAME ; bool QDeclarativePixmapReply::event(class QEvent *) + ?event@QDeclarativePixmapReply@@MAE_NPAVQEvent@@@Z @ 1582 NONAME ABSENT ; bool QDeclarativePixmapReply::event(class QEvent *) ?isConnected@QDeclarativeDebugConnection@@QBE_NXZ @ 1583 NONAME ; bool QDeclarativeDebugConnection::isConnected(void) const - ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 1584 NONAME ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 1584 NONAME ABSENT ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *) ??6QDeclarativeInfo@@QAEAAV0@I@Z @ 1585 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned int) ?setNetworkAccessManagerFactory@QDeclarativeEngine@@QAEXPAVQDeclarativeNetworkAccessManagerFactory@@@Z @ 1586 NONAME ; void QDeclarativeEngine::setNetworkAccessManagerFactory(class QDeclarativeNetworkAccessManagerFactory *) ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 1587 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int) @@ -1593,7 +1593,7 @@ EXPORTS ?count@QDeclarativeListReference@@QBEHXZ @ 1592 NONAME ; int QDeclarativeListReference::count(void) const ?location@QDeclarativeCustomParserProperty@@QBE?AULocation@QDeclarativeParser@@XZ @ 1593 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserProperty::location(void) const ?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1594 NONAME ; struct QMetaObject const * QDeclarativePen::metaObject(void) const - ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 1595 NONAME ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 1595 NONAME ABSENT ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *) ?url@QDeclarativeError@@QBE?AVQUrl@@XZ @ 1596 NONAME ; class QUrl QDeclarativeError::url(void) const ?isBinding@QDeclarativeDomValue@@QBE_NXZ @ 1597 NONAME ; bool QDeclarativeDomValue::isBinding(void) const ?name@QDeclarativeProperty@@QBE?AVQString@@XZ @ 1598 NONAME ; class QString QDeclarativeProperty::name(void) const @@ -1607,7 +1607,7 @@ EXPORTS ?objectToString@QDeclarativeDebugService@@SA?AVQString@@PAVQObject@@@Z @ 1606 NONAME ; class QString QDeclarativeDebugService::objectToString(class QObject *) ?defaultValue@QDeclarativeDomDynamicProperty@@QBE?AVQDeclarativeDomProperty@@XZ @ 1607 NONAME ; class QDeclarativeDomProperty QDeclarativeDomDynamicProperty::defaultValue(void) const ?relatedMetaObject@QMetaObjectBuilder@@QBEPBUQMetaObject@@H@Z @ 1608 NONAME ; struct QMetaObject const * QMetaObjectBuilder::relatedMetaObject(int) const - ?d_func@QDeclarativePixmapReply@@AAEPAVQDeclarativePixmapReplyPrivate@@XZ @ 1609 NONAME ; class QDeclarativePixmapReplyPrivate * QDeclarativePixmapReply::d_func(void) + ?d_func@QDeclarativePixmapReply@@AAEPAVQDeclarativePixmapReplyPrivate@@XZ @ 1609 NONAME ABSENT ; class QDeclarativePixmapReplyPrivate * QDeclarativePixmapReply::d_func(void) ?addKey@QMetaEnumBuilder@@QAEHABVQByteArray@@H@Z @ 1610 NONAME ; int QMetaEnumBuilder::addKey(class QByteArray const &, int) ?setPosHelper@QDeclarativeItemPrivate@@UAEXABVQPointF@@@Z @ 1611 NONAME ; void QDeclarativeItemPrivate::setPosHelper(class QPointF const &) ?attributes@QMetaMethodBuilder@@QBEHXZ @ 1612 NONAME ; int QMetaMethodBuilder::attributes(void) const @@ -1616,7 +1616,7 @@ EXPORTS ?metaObject@QDeclarativeItem@@UBEPBUQMetaObject@@XZ @ 1615 NONAME ; struct QMetaObject const * QDeclarativeItem::metaObject(void) const ?clear@QDeclarativeAbstractBinding@@IAEXXZ @ 1616 NONAME ; void QDeclarativeAbstractBinding::clear(void) ?start@QDeclarativeItemPrivate@@SAXAAVQElapsedTimer@@@Z @ 1617 NONAME ; void QDeclarativeItemPrivate::start(class QElapsedTimer &) - ?reloadWithResources@QDeclarativeText@@AAEXXZ @ 1618 NONAME ; void QDeclarativeText::reloadWithResources(void) + ?reloadWithResources@QDeclarativeText@@AAEXXZ @ 1618 NONAME ABSENT ; void QDeclarativeText::reloadWithResources(void) ?stringToRule@QDeclarativeGridScaledImage@@CA?AW4TileMode@QDeclarativeBorderImage@@ABVQString@@@Z @ 1619 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::stringToRule(class QString const &) ?setHorizontalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1620 NONAME ; void QDeclarativeAnchors::setHorizontalCenter(class QDeclarativeAnchorLine const &) ?setFocus@QDeclarativeItem@@QAEX_N@Z @ 1621 NONAME ; void QDeclarativeItem::setFocus(bool) @@ -1635,4 +1635,37 @@ EXPORTS ?setContextForObject@QDeclarativeEngine@@SAXPAVQObject@@PAVQDeclarativeContext@@@Z @ 1634 NONAME ; void QDeclarativeEngine::setContextForObject(class QObject *, class QDeclarativeContext *) ?baselineOffsetChanged@QDeclarativeItem@@IAEXM@Z @ 1635 NONAME ; void QDeclarativeItem::baselineOffsetChanged(float) ??6QDeclarativeInfo@@QAEAAV0@VQChar@@@Z @ 1636 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QChar) + ?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1637 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, int) + ?status@QDeclarativePixmap@@QBE?AW4Status@1@XZ @ 1638 NONAME ; enum QDeclarativePixmap::Status QDeclarativePixmap::status(void) const + ?error@QDeclarativePixmap@@QBE?AVQString@@XZ @ 1639 NONAME ; class QString QDeclarativePixmap::error(void) const + ??BQDeclarativePixmap@@QBEABVQPixmap@@XZ @ 1640 NONAME ; QDeclarativePixmap::operator class QPixmap const &(void) const + ?tr@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 1641 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *, int) + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1642 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &) + ?height@QDeclarativePixmap@@QBEHXZ @ 1643 NONAME ; int QDeclarativePixmap::height(void) const + ?implicitSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1644 NONAME ; class QSize const & QDeclarativePixmap::implicitSize(void) const + ?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 1645 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, char const *) + ?clear@QDeclarativePixmap@@QAEXPAVQObject@@@Z @ 1646 NONAME ; void QDeclarativePixmap::clear(class QObject *) + ?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 1647 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, char const *) + ?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 1648 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *, int) + ?isLoading@QDeclarativePixmap@@QBE_NXZ @ 1649 NONAME ; bool QDeclarativePixmap::isLoading(void) const + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@@Z @ 1650 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &) + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@_N@Z @ 1651 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, bool) + ??1QDeclarativePixmap@@QAE@XZ @ 1652 NONAME ; QDeclarativePixmap::~QDeclarativePixmap(void) + ??0QDeclarativePixmap@@QAE@XZ @ 1653 NONAME ; QDeclarativePixmap::QDeclarativePixmap(void) + ?isReady@QDeclarativePixmap@@QBE_NXZ @ 1654 NONAME ; bool QDeclarativePixmap::isReady(void) const + ?clear@QDeclarativePixmap@@QAEXXZ @ 1655 NONAME ; void QDeclarativePixmap::clear(void) + ?pixmap@QDeclarativePixmap@@QBEABVQPixmap@@XZ @ 1656 NONAME ; class QPixmap const & QDeclarativePixmap::pixmap(void) const + ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@@Z @ 1657 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &) + ?width@QDeclarativePixmap@@QBEHXZ @ 1658 NONAME ; int QDeclarativePixmap::width(void) const + ?setPixmap@QDeclarativePixmap@@QAEXABVQPixmap@@@Z @ 1659 NONAME ; void QDeclarativePixmap::setPixmap(class QPixmap const &) + ?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1660 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, int) + ?isError@QDeclarativePixmap@@QBE_NXZ @ 1661 NONAME ; bool QDeclarativePixmap::isError(void) const + ?rect@QDeclarativePixmap@@QBE?AVQRect@@XZ @ 1662 NONAME ; class QRect QDeclarativePixmap::rect(void) const + ?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1663 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *) + ?tr@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1664 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *) + ?isNull@QDeclarativePixmap@@QBE_NXZ @ 1665 NONAME ; bool QDeclarativePixmap::isNull(void) const + ?requestSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1666 NONAME ; class QSize const & QDeclarativePixmap::requestSize(void) const + ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1667 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &, class QSize const &) + ?url@QDeclarativePixmap@@QBEABVQUrl@@XZ @ 1668 NONAME ; class QUrl const & QDeclarativePixmap::url(void) const + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@_N@Z @ 1669 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &, bool) diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index ea9bc18..f2c7206 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -116,7 +116,7 @@ EXPORTS _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 115 NONAME _ZN16QDeclarativeText18paintedSizeChangedEv @ 116 NONAME _ZN16QDeclarativeText19getStaticMetaObjectEv @ 117 NONAME - _ZN16QDeclarativeText19reloadWithResourcesEv @ 118 NONAME + _ZN16QDeclarativeText19reloadWithResourcesEv @ 118 NONAME ABSENT _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 119 NONAME _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 120 NONAME _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 121 NONAME @@ -729,25 +729,25 @@ EXPORTS _ZN23QDeclarativeItemPrivate8setWidthEf @ 728 NONAME _ZN23QDeclarativeItemPrivate9resourcesEv @ 729 NONAME _ZN23QDeclarativeItemPrivate9setHeightEf @ 730 NONAME - _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 731 NONAME - _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapP7QStringP5QSizebii @ 732 NONAME - _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 733 NONAME - _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrlii @ 734 NONAME - _ZN23QDeclarativePixmapReply10setLoadingEv @ 735 NONAME - _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 736 NONAME - _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 737 NONAME - _ZN23QDeclarativePixmapReply16downloadProgressExx @ 738 NONAME - _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 739 NONAME DATA 16 - _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 740 NONAME - _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 741 NONAME - _ZN23QDeclarativePixmapReply6addRefEv @ 742 NONAME - _ZN23QDeclarativePixmapReply7releaseEb @ 743 NONAME - _ZN23QDeclarativePixmapReply8finishedEv @ 744 NONAME - _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrlii @ 745 NONAME - _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrlii @ 746 NONAME - _ZN23QDeclarativePixmapReplyD0Ev @ 747 NONAME - _ZN23QDeclarativePixmapReplyD1Ev @ 748 NONAME - _ZN23QDeclarativePixmapReplyD2Ev @ 749 NONAME + _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 731 NONAME ABSENT + _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapP7QStringP5QSizebii @ 732 NONAME ABSENT + _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 733 NONAME ABSENT + _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrlii @ 734 NONAME ABSENT + _ZN23QDeclarativePixmapReply10setLoadingEv @ 735 NONAME ABSENT + _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 736 NONAME ABSENT + _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 737 NONAME ABSENT + _ZN23QDeclarativePixmapReply16downloadProgressExx @ 738 NONAME ABSENT + _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 739 NONAME DATA 16 ABSENT + _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 740 NONAME ABSENT + _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 741 NONAME ABSENT + _ZN23QDeclarativePixmapReply6addRefEv @ 742 NONAME ABSENT + _ZN23QDeclarativePixmapReply7releaseEb @ 743 NONAME ABSENT + _ZN23QDeclarativePixmapReply8finishedEv @ 744 NONAME ABSENT + _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrlii @ 745 NONAME ABSENT + _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrlii @ 746 NONAME ABSENT + _ZN23QDeclarativePixmapReplyD0Ev @ 747 NONAME ABSENT + _ZN23QDeclarativePixmapReplyD1Ev @ 748 NONAME ABSENT + _ZN23QDeclarativePixmapReplyD2Ev @ 749 NONAME ABSENT _ZN23QDeclarativePropertyMap11qt_metacallEN11QMetaObject4CallEiPPv @ 750 NONAME _ZN23QDeclarativePropertyMap11qt_metacastEPKc @ 751 NONAME _ZN23QDeclarativePropertyMap12valueChangedERK7QStringRK8QVariant @ 752 NONAME @@ -1399,14 +1399,14 @@ EXPORTS _ZNK23QDeclarativeItemPrivate6bottomEv @ 1398 NONAME _ZNK23QDeclarativeItemPrivate6heightEv @ 1399 NONAME _ZNK23QDeclarativeItemPrivate8baselineEv @ 1400 NONAME - _ZNK23QDeclarativePixmapReply10metaObjectEv @ 1401 NONAME - _ZNK23QDeclarativePixmapReply11errorStringEv @ 1402 NONAME - _ZNK23QDeclarativePixmapReply11forcedWidthEv @ 1403 NONAME - _ZNK23QDeclarativePixmapReply12forcedHeightEv @ 1404 NONAME - _ZNK23QDeclarativePixmapReply12implicitSizeEv @ 1405 NONAME - _ZNK23QDeclarativePixmapReply3urlEv @ 1406 NONAME - _ZNK23QDeclarativePixmapReply6statusEv @ 1407 NONAME - _ZNK23QDeclarativePixmapReply9isLoadingEv @ 1408 NONAME + _ZNK23QDeclarativePixmapReply10metaObjectEv @ 1401 NONAME ABSENT + _ZNK23QDeclarativePixmapReply11errorStringEv @ 1402 NONAME ABSENT + _ZNK23QDeclarativePixmapReply11forcedWidthEv @ 1403 NONAME ABSENT + _ZNK23QDeclarativePixmapReply12forcedHeightEv @ 1404 NONAME ABSENT + _ZNK23QDeclarativePixmapReply12implicitSizeEv @ 1405 NONAME ABSENT + _ZNK23QDeclarativePixmapReply3urlEv @ 1406 NONAME ABSENT + _ZNK23QDeclarativePixmapReply6statusEv @ 1407 NONAME ABSENT + _ZNK23QDeclarativePixmapReply9isLoadingEv @ 1408 NONAME ABSENT _ZNK23QDeclarativePropertyMap10metaObjectEv @ 1409 NONAME _ZNK23QDeclarativePropertyMap4keysEv @ 1410 NONAME _ZNK23QDeclarativePropertyMap4sizeEv @ 1411 NONAME @@ -1542,7 +1542,7 @@ EXPORTS _ZTI23QDeclarativeDebugClient @ 1541 NONAME _ZTI23QDeclarativeEngineDebug @ 1542 NONAME _ZTI23QDeclarativeItemPrivate @ 1543 NONAME - _ZTI23QDeclarativePixmapReply @ 1544 NONAME + _ZTI23QDeclarativePixmapReply @ 1544 NONAME ABSENT _ZTI23QDeclarativePropertyMap @ 1545 NONAME _ZTI24QDeclarativeCustomParser @ 1546 NONAME _ZTI24QDeclarativeDebugService @ 1547 NONAME @@ -1593,7 +1593,7 @@ EXPORTS _ZTV23QDeclarativeDebugClient @ 1592 NONAME _ZTV23QDeclarativeEngineDebug @ 1593 NONAME _ZTV23QDeclarativeItemPrivate @ 1594 NONAME - _ZTV23QDeclarativePixmapReply @ 1595 NONAME + _ZTV23QDeclarativePixmapReply @ 1595 NONAME ABSENT _ZTV23QDeclarativePropertyMap @ 1596 NONAME _ZTV24QDeclarativeCustomParser @ 1597 NONAME _ZTV24QDeclarativeDebugService @ 1598 NONAME @@ -1666,4 +1666,36 @@ EXPORTS _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1665 NONAME _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1666 NONAME _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1667 NONAME + _ZN18QDeclarativePixmap15connectFinishedEP7QObjectPKc @ 1668 NONAME + _ZN18QDeclarativePixmap15connectFinishedEP7QObjecti @ 1669 NONAME + _ZN18QDeclarativePixmap23connectDownloadProgressEP7QObjectPKc @ 1670 NONAME + _ZN18QDeclarativePixmap23connectDownloadProgressEP7QObjecti @ 1671 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrl @ 1672 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlRK5QSize @ 1673 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlRK5QSizeb @ 1674 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlb @ 1675 NONAME + _ZN18QDeclarativePixmap5clearEP7QObject @ 1676 NONAME + _ZN18QDeclarativePixmap5clearEv @ 1677 NONAME + _ZN18QDeclarativePixmap9setPixmapERK7QPixmap @ 1678 NONAME + _ZN18QDeclarativePixmapC1EP18QDeclarativeEngineRK4QUrl @ 1679 NONAME + _ZN18QDeclarativePixmapC1EP18QDeclarativeEngineRK4QUrlRK5QSize @ 1680 NONAME + _ZN18QDeclarativePixmapC1Ev @ 1681 NONAME + _ZN18QDeclarativePixmapC2EP18QDeclarativeEngineRK4QUrl @ 1682 NONAME + _ZN18QDeclarativePixmapC2EP18QDeclarativeEngineRK4QUrlRK5QSize @ 1683 NONAME + _ZN18QDeclarativePixmapC2Ev @ 1684 NONAME + _ZN18QDeclarativePixmapD1Ev @ 1685 NONAME + _ZN18QDeclarativePixmapD2Ev @ 1686 NONAME + _ZNK18QDeclarativePixmap11requestSizeEv @ 1687 NONAME + _ZNK18QDeclarativePixmap12implicitSizeEv @ 1688 NONAME + _ZNK18QDeclarativePixmap3urlEv @ 1689 NONAME + _ZNK18QDeclarativePixmap4rectEv @ 1690 NONAME + _ZNK18QDeclarativePixmap5errorEv @ 1691 NONAME + _ZNK18QDeclarativePixmap5widthEv @ 1692 NONAME + _ZNK18QDeclarativePixmap6heightEv @ 1693 NONAME + _ZNK18QDeclarativePixmap6isNullEv @ 1694 NONAME + _ZNK18QDeclarativePixmap6pixmapEv @ 1695 NONAME + _ZNK18QDeclarativePixmap6statusEv @ 1696 NONAME + _ZNK18QDeclarativePixmap7isErrorEv @ 1697 NONAME + _ZNK18QDeclarativePixmap7isReadyEv @ 1698 NONAME + _ZNK18QDeclarativePixmap9isLoadingEv @ 1699 NONAME -- cgit v0.12 From 7e35c6ff442e237ff9a1bec9ea1cdfb597d9ceae Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 6 Jul 2010 16:34:58 +1000 Subject: Convert QtDeclarative def files to use LF line endings --- src/s60installs/bwins/QtDeclarativeu.def | 3342 ++++++++++++++--------------- src/s60installs/eabi/QtDeclarativeu.def | 3402 +++++++++++++++--------------- 2 files changed, 3372 insertions(+), 3372 deletions(-) diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 2ee1736..80ba423 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -1,1671 +1,1671 @@ -EXPORTS - ?write@QDeclarativeProperty@@QBE_NABVQVariant@@@Z @ 1 NONAME ; bool QDeclarativeProperty::write(class QVariant const &) const - ?setStored@QMetaPropertyBuilder@@QAEX_N@Z @ 2 NONAME ; void QMetaPropertyBuilder::setStored(bool) - ?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *, int) - ?qt_metacast@QDeclarativeComponent@@UAEPAXPBD@Z @ 4 NONAME ; void * QDeclarativeComponent::qt_metacast(char const *) - ?name@QDeclarativeDebugService@@QBE?AVQString@@XZ @ 5 NONAME ; class QString QDeclarativeDebugService::name(void) const - ?debugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 6 NONAME ; int QDeclarativeDebugObjectReference::debugId(void) const - ?addPluginPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 7 NONAME ; void QDeclarativeEngine::addPluginPath(class QString const &) - ?name@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 8 NONAME ; class QByteArray QMetaPropertyBuilder::name(void) const - ??6QDeclarativeInfo@@QAEAAV0@_J@Z @ 9 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long long) - ?propertyOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 10 NONAME ; int QDeclarativeOpenMetaObjectType::propertyOffset(void) const - ??0QDeclarativeText@@QAE@PAVQDeclarativeItem@@@Z @ 11 NONAME ; QDeclarativeText::QDeclarativeText(class QDeclarativeItem *) - ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 12 NONAME ABSENT ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *, int) - ?propertyTypeName@QDeclarativeProperty@@QBEPBDXZ @ 13 NONAME ; char const * QDeclarativeProperty::propertyTypeName(void) const - ?wantsFocusChanged@QDeclarativeItem@@IAEX_N@Z @ 14 NONAME ; void QDeclarativeItem::wantsFocusChanged(bool) - ?getStaticMetaObject@QDeclarativeDebugService@@SAABUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const & QDeclarativeDebugService::getStaticMetaObject(void) - ?setLeft@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 16 NONAME ; void QDeclarativeAnchors::setLeft(class QDeclarativeAnchorLine const &) - ?qt_metacall@QDeclarativeExpression@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 17 NONAME ; int QDeclarativeExpression::qt_metacall(enum QMetaObject::Call, int, void * *) - ?staticMetaObject@QDeclarativePen@@2UQMetaObject@@B @ 18 NONAME ; struct QMetaObject const QDeclarativePen::staticMetaObject - ?transformOriginChanged@QDeclarativeItem@@IAEXW4TransformOrigin@1@@Z @ 19 NONAME ; void QDeclarativeItem::transformOriginChanged(enum QDeclarativeItem::TransformOrigin) - ?isStored@QMetaPropertyBuilder@@QBE_NXZ @ 20 NONAME ; bool QMetaPropertyBuilder::isStored(void) const - ?elapsed@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 21 NONAME ; long long QDeclarativeItemPrivate::elapsed(class QElapsedTimer &) - ?clearComponentCache@QDeclarativeEngine@@QAEXXZ @ 22 NONAME ; void QDeclarativeEngine::clearComponentCache(void) - ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 23 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *, int) - ??_EQDeclarativePixmapReply@@UAE@I@Z @ 24 NONAME ABSENT ; QDeclarativePixmapReply::~QDeclarativePixmapReply(unsigned int) - ??1QDeclarativeParserStatus@@UAE@XZ @ 25 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(void) - ?gradient@QDeclarativeRectangle@@QBEPAVQDeclarativeGradient@@XZ @ 26 NONAME ; class QDeclarativeGradient * QDeclarativeRectangle::gradient(void) const - ?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 27 NONAME ; void QMetaPropertyBuilder::setReadable(bool) - ?d_func@QDeclarativeExpression@@AAEPAVQDeclarativeExpressionPrivate@@XZ @ 28 NONAME ; class QDeclarativeExpressionPrivate * QDeclarativeExpression::d_func(void) - ??1QDeclarativeDomValueValueSource@@QAE@XZ @ 29 NONAME ; QDeclarativeDomValueValueSource::~QDeclarativeDomValueValueSource(void) - ??_EQDeclarativeStateGroup@@UAE@I@Z @ 30 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(unsigned int) - ?property@QDeclarativeDomObject@@QBE?AVQDeclarativeDomProperty@@ABVQByteArray@@@Z @ 31 NONAME ; class QDeclarativeDomProperty QDeclarativeDomObject::property(class QByteArray const &) const - ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *, int) - ?location@QDeclarativeCustomParserNode@@QBE?AULocation@QDeclarativeParser@@XZ @ 33 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserNode::location(void) const - ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQString@@PAVQObject@@@Z @ 34 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QString const &, class QObject *) - ?d_func@QDeclarativeContext@@AAEPAVQDeclarativeContextPrivate@@XZ @ 35 NONAME ; class QDeclarativeContextPrivate * QDeclarativeContext::d_func(void) - ?resetLeft@QDeclarativeAnchors@@QAEXXZ @ 36 NONAME ; void QDeclarativeAnchors::resetLeft(void) - ?staticMetaObject@QDeclarativePixmapReply@@2UQMetaObject@@B @ 37 NONAME ABSENT ; struct QMetaObject const QDeclarativePixmapReply::staticMetaObject - ?setOfflineStoragePath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 38 NONAME ; void QDeclarativeEngine::setOfflineStoragePath(class QString const &) - ?getStaticMetaObject@QListModelInterface@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & QListModelInterface::getStaticMetaObject(void) - ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *, int) - ??0QDeclarativeEngine@@QAE@PAVQObject@@@Z @ 41 NONAME ; QDeclarativeEngine::QDeclarativeEngine(class QObject *) - ??0QDeclarativeDebugObjectReference@@QAE@ABV0@@Z @ 42 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(class QDeclarativeDebugObjectReference const &) - ?set@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 43 NONAME ; void QDeclarativeListModel::set(int, class QScriptValue const &) - ?tr@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString QDeclarativeState::tr(char const *, char const *, int) - ?metaObject@QDeclarativeBinding@@UBEPBUQMetaObject@@XZ @ 45 NONAME ; struct QMetaObject const * QDeclarativeBinding::metaObject(void) const - ?setUser@QMetaPropertyBuilder@@QAEX_N@Z @ 46 NONAME ; void QMetaPropertyBuilder::setUser(bool) - ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 47 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *) - ?setHorizontalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 48 NONAME ; void QDeclarativeAnchors::setHorizontalCenterOffset(float) - ??0QDeclarativeProperty@@QAE@XZ @ 49 NONAME ; QDeclarativeProperty::QDeclarativeProperty(void) - ?valueType@QDeclarativeValueTypeFactory@@SAPAVQDeclarativeValueType@@H@Z @ 50 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::valueType(int) - ??1QDeclarativeText@@UAE@XZ @ 51 NONAME ; QDeclarativeText::~QDeclarativeText(void) - ?getStaticMetaObject@QDeclarativeText@@SAABUQMetaObject@@XZ @ 52 NONAME ; struct QMetaObject const & QDeclarativeText::getStaticMetaObject(void) - ?isDesignable@QMetaPropertyBuilder@@QBE_NXZ @ 53 NONAME ; bool QMetaPropertyBuilder::isDesignable(void) const - ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 54 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *, int) - ?errors@QDeclarativeView@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 55 NONAME ; class QList QDeclarativeView::errors(void) const - ??0QPacket@@QAE@ABV0@@Z @ 56 NONAME ; QPacket::QPacket(class QPacket const &) - ??1QDeclarativeDebugObjectExpressionWatch@@UAE@XZ @ 57 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(void) - ?bottom@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 58 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::bottom(void) const - ??_EQDeclarativeDebugObjectQuery@@UAE@I@Z @ 59 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(unsigned int) - ??0QDeclarativeDomObject@@QAE@XZ @ 60 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(void) - ?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 61 NONAME ; class QList QDeclarativeDomDocument::errors(void) const - ?toChanged@QDeclarativeTransition@@IAEXXZ @ 62 NONAME ; void QDeclarativeTransition::toChanged(void) - ?registerAutoParentFunction@QDeclarativePrivate@@YAHP6A?AW4AutoParentResult@1@PAVQObject@@0@Z@Z @ 63 NONAME ; int QDeclarativePrivate::registerAutoParentFunction(enum QDeclarativePrivate::AutoParentResult (*)(class QObject *, class QObject *)) - ?objectOwnership@QDeclarativeEngine@@SA?AW4ObjectOwnership@1@PAVQObject@@@Z @ 64 NONAME ; enum QDeclarativeEngine::ObjectOwnership QDeclarativeEngine::objectOwnership(class QObject *) - ??0QDeclarativeDebugWatch@@QAE@PAVQObject@@@Z @ 65 NONAME ; QDeclarativeDebugWatch::QDeclarativeDebugWatch(class QObject *) - ?value@QDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 66 NONAME ; class QVariant QDeclarativePropertyMap::value(class QString const &) const - ?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *) - ?isWaiting@QDeclarativeDebugQuery@@QBE_NXZ @ 68 NONAME ; bool QDeclarativeDebugQuery::isWaiting(void) const - ??1Variant@QDeclarativeParser@@QAE@XZ @ 69 NONAME ; QDeclarativeParser::Variant::~Variant(void) - ??0Variant@QDeclarativeParser@@QAE@ABVQString@@@Z @ 70 NONAME ; QDeclarativeParser::Variant::Variant(class QString const &) - ?paintedSizeChanged@QDeclarativeText@@IAEXXZ @ 71 NONAME ; void QDeclarativeText::paintedSizeChanged(void) - ??1QDeclarativeDebugClient@@UAE@XZ @ 72 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(void) - ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 73 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *) - ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 74 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *) - ?qt_metacast@QDeclarativeState@@UAEPAXPBD@Z @ 75 NONAME ; void * QDeclarativeState::qt_metacast(char const *) - ??1QDeclarativeDebugContextReference@@QAE@XZ @ 76 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(void) - ?getStaticMetaObject@QDeclarativeStateOperation@@SAABUQMetaObject@@XZ @ 77 NONAME ; struct QMetaObject const & QDeclarativeStateOperation::getStaticMetaObject(void) - ?isInvalid@QDeclarativeDomValue@@QBE_NXZ @ 78 NONAME ; bool QDeclarativeDomValue::isInvalid(void) const - ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 79 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *, int) - ??0QDeclarativeListReference@@QAE@ABV0@@Z @ 80 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QDeclarativeListReference const &) - ?registerType@QDeclarativePrivate@@YAHABURegisterInterface@1@@Z @ 81 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterInterface const &) - ?classBegin@QDeclarativeItem@@MAEXXZ @ 82 NONAME ; void QDeclarativeItem::classBegin(void) - ?setTransformOrigin@QDeclarativeItem@@QAEXW4TransformOrigin@1@@Z @ 83 NONAME ; void QDeclarativeItem::setTransformOrigin(enum QDeclarativeItem::TransformOrigin) - ?request@QDeclarativePixmapCache@@SAPAVQDeclarativePixmapReply@@PAVQDeclarativeEngine@@ABVQUrl@@HH@Z @ 84 NONAME ABSENT ; class QDeclarativePixmapReply * QDeclarativePixmapCache::request(class QDeclarativeEngine *, class QUrl const &, int, int) - ?event@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 85 NONAME ; bool QDeclarativeItem::event(class QEvent *) - ?setAttributes@QMetaMethodBuilder@@QAEXH@Z @ 86 NONAME ; void QMetaMethodBuilder::setAttributes(int) - ??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 87 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int) - ?qt_metacall@QDeclarativeDebugQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 88 NONAME ; int QDeclarativeDebugQuery::qt_metacall(enum QMetaObject::Call, int, void * *) - ?findState@QDeclarativeStateGroup@@QBEPAVQDeclarativeState@@ABVQString@@@Z @ 89 NONAME ; class QDeclarativeState * QDeclarativeStateGroup::findState(class QString const &) const - ?asScript@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 90 NONAME ; class QString QDeclarativeParser::Variant::asScript(void) const - ?qt_metacast@QDeclarativeExtensionPlugin@@UAEPAXPBD@Z @ 91 NONAME ; void * QDeclarativeExtensionPlugin::qt_metacast(char const *) - ?objectId@QDeclarativeDomObject@@QBE?AVQString@@XZ @ 92 NONAME ; class QString QDeclarativeDomObject::objectId(void) const - ?right@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 93 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::right(void) const - ?removeFromObject@QDeclarativeAbstractBinding@@QAEXXZ @ 94 NONAME ; void QDeclarativeAbstractBinding::removeFromObject(void) - ?resizeMode@QDeclarativeView@@QBE?AW4ResizeMode@1@XZ @ 95 NONAME ; enum QDeclarativeView::ResizeMode QDeclarativeView::resizeMode(void) const - ?object@QDeclarativeOpenMetaObject@@QBEPAVQObject@@XZ @ 96 NONAME ; class QObject * QDeclarativeOpenMetaObject::object(void) const - ?staticMetaObject@QDeclarativeBehavior@@2UQMetaObject@@B @ 97 NONAME ; struct QMetaObject const QDeclarativeBehavior::staticMetaObject - ?toObject@QDeclarativeDomValue@@QBE?AVQDeclarativeDomObject@@XZ @ 98 NONAME ; class QDeclarativeDomObject QDeclarativeDomValue::toObject(void) const - ?setLine@QDeclarativeError@@QAEXH@Z @ 99 NONAME ; void QDeclarativeError::setLine(int) - ??6QDeclarativeInfo@@QAEAAV0@K@Z @ 100 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long) - ??0QDeclarativeDebugConnection@@QAE@PAVQObject@@@Z @ 101 NONAME ; QDeclarativeDebugConnection::QDeclarativeDebugConnection(class QObject *) - ?qt_metacast@QDeclarativeDebugQuery@@UAEPAXPBD@Z @ 102 NONAME ; void * QDeclarativeDebugQuery::qt_metacast(char const *) - ?isValid@QDeclarativeGridScaledImage@@QBE_NXZ @ 103 NONAME ; bool QDeclarativeGridScaledImage::isValid(void) const - ?qt_metacast@QDeclarativeContext@@UAEPAXPBD@Z @ 104 NONAME ; void * QDeclarativeContext::qt_metacast(char const *) - ?metaObject@QDeclarativeDebugClient@@UBEPBUQMetaObject@@XZ @ 105 NONAME ; struct QMetaObject const * QDeclarativeDebugClient::metaObject(void) const - ?transitions@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 106 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::transitions(void) - ??0QDeclarativeDebugPropertyWatch@@QAE@PAVQObject@@@Z @ 107 NONAME ; QDeclarativeDebugPropertyWatch::QDeclarativeDebugPropertyWatch(class QObject *) - ??_EQDeclarativeDebugPropertyReference@@QAE@I@Z @ 108 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(unsigned int) - ?itemsChanged@QListModelInterface@@IAEXHHABV?$QList@H@@@Z @ 109 NONAME ; void QListModelInterface::itemsChanged(int, int, class QList const &) - ??6@YA?AVQDebug@@V0@PAVQDeclarativeItem@@@Z @ 110 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeItem *) - ?write@QDeclarativePropertyPrivate@@SA_NABVQDeclarativeProperty@@ABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 111 NONAME ; bool QDeclarativePropertyPrivate::write(class QDeclarativeProperty const &, class QVariant const &, class QFlags) - ?verticalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 112 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::verticalTileRule(void) const - ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 113 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *) - ?isDynamic@QMetaPropertyBuilder@@QBE_NXZ @ 114 NONAME ; bool QMetaPropertyBuilder::isDynamic(void) const - ?removeClassInfo@QMetaObjectBuilder@@QAEXH@Z @ 115 NONAME ; void QMetaObjectBuilder::removeClassInfo(int) - ?warnings@QDeclarativeEngine@@IAEXABV?$QList@VQDeclarativeError@@@@@Z @ 116 NONAME ; void QDeclarativeEngine::warnings(class QList const &) - ?description@QDeclarativeError@@QBE?AVQString@@XZ @ 117 NONAME ; class QString QDeclarativeError::description(void) const - ?binding@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 118 NONAME ; class QString QDeclarativeDebugPropertyReference::binding(void) const - ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 119 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *) - ?readValueProperty@QDeclarativePropertyPrivate@@QAE?AVQVariant@@XZ @ 120 NONAME ; class QVariant QDeclarativePropertyPrivate::readValueProperty(void) - ?propertyType@QDeclarativeDomDynamicProperty@@QBEHXZ @ 121 NONAME ; int QDeclarativeDomDynamicProperty::propertyType(void) const - ?gridBottom@QDeclarativeGridScaledImage@@QBEHXZ @ 122 NONAME ; int QDeclarativeGridScaledImage::gridBottom(void) const - ?setRadius@QDeclarativeRectangle@@QAEXM@Z @ 123 NONAME ; void QDeclarativeRectangle::setRadius(float) - ?d_func@QDeclarativeBehavior@@AAEPAVQDeclarativeBehaviorPrivate@@XZ @ 124 NONAME ; class QDeclarativeBehaviorPrivate * QDeclarativeBehavior::d_func(void) - ?isValid@QDeclarativePen@@QAE_NXZ @ 125 NONAME ; bool QDeclarativePen::isValid(void) - ?result@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 126 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::result(void) const - ?isEnumOrFlag@QMetaPropertyBuilder@@QBE_NXZ @ 127 NONAME ; bool QMetaPropertyBuilder::isEnumOrFlag(void) const - ?addToObject@QDeclarativeAbstractBinding@@QAEXPAVQObject@@@Z @ 128 NONAME ; void QDeclarativeAbstractBinding::addToObject(class QObject *) - ?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 129 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *, int) - ?d_func@QDeclarativeAnchors@@AAEPAVQDeclarativeAnchorsPrivate@@XZ @ 130 NONAME ; class QDeclarativeAnchorsPrivate * QDeclarativeAnchors::d_func(void) - ??1QPacket@@UAE@XZ @ 131 NONAME ; QPacket::~QPacket(void) - ?top@QDeclarativeScaleGrid@@QBEHXZ @ 132 NONAME ; int QDeclarativeScaleGrid::top(void) const - ?setExpression@QDeclarativeExpression@@QAEXABVQString@@@Z @ 133 NONAME ; void QDeclarativeExpression::setExpression(class QString const &) - ??1QDeclarativeDebugEngineReference@@QAE@XZ @ 134 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(void) - ??0QDeclarativeStateOperation@@QAE@PAVQObject@@@Z @ 135 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObject *) - ?transform_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 136 NONAME ; void QDeclarativeItemPrivate::transform_clear(class QDeclarativeListProperty *) - ?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 137 NONAME ; struct QMetaObject const QDeclarativeValueType::staticMetaObject - ?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 138 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const - ?getStaticMetaObject@QDeclarativePixmapReply@@SAABUQMetaObject@@XZ @ 139 NONAME ABSENT ; struct QMetaObject const & QDeclarativePixmapReply::getStaticMetaObject(void) - ?focusChanged@QDeclarativeItem@@IAEX_N@Z @ 140 NONAME ; void QDeclarativeItem::focusChanged(bool) - ?getStaticMetaObject@QDeclarativeBinding@@SAABUQMetaObject@@XZ @ 141 NONAME ; struct QMetaObject const & QDeclarativeBinding::getStaticMetaObject(void) - ?copy@QDeclarativeMetaType@@SA_NHPAXPBX@Z @ 142 NONAME ; bool QDeclarativeMetaType::copy(int, void *, void const *) - ?qt_metacall@QDeclarativeDebugEnginesQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 143 NONAME ; int QDeclarativeDebugEnginesQuery::qt_metacall(enum QMetaObject::Call, int, void * *) - ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 144 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *) - ?setEnumOrFlag@QMetaPropertyBuilder@@QAEX_N@Z @ 145 NONAME ; void QMetaPropertyBuilder::setEnumOrFlag(bool) - ?getStaticMetaObject@QDeclarativeRectangle@@SAABUQMetaObject@@XZ @ 146 NONAME ; struct QMetaObject const & QDeclarativeRectangle::getStaticMetaObject(void) - ?isValid@QDeclarativeProperty@@QBE_NXZ @ 147 NONAME ; bool QDeclarativeProperty::isValid(void) const - ?isConnected@QDeclarativeDebugClient@@QBE_NXZ @ 148 NONAME ; bool QDeclarativeDebugClient::isConnected(void) const - ?enabled@QDeclarativeBinding@@QBE_NXZ @ 149 NONAME ; bool QDeclarativeBinding::enabled(void) const - ?setSource@QDeclarativeView@@QAEXABVQUrl@@@Z @ 150 NONAME ; void QDeclarativeView::setSource(class QUrl const &) - ??_EQDeclarativeDebugService@@UAE@I@Z @ 151 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(unsigned int) - ??0QDeclarativeDomDynamicProperty@@QAE@ABV0@@Z @ 152 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(class QDeclarativeDomDynamicProperty const &) - ?className@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 153 NONAME ; class QString QDeclarativeDebugObjectReference::className(void) const - ?indexOfSlot@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 154 NONAME ; int QMetaObjectBuilder::indexOfSlot(class QByteArray const &) - ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 155 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *, int) - ?progressChanged@QDeclarativeComponent@@IAEXM@Z @ 156 NONAME ; void QDeclarativeComponent::progressChanged(float) - ?hasError@QDeclarativeExpression@@QBE_NXZ @ 157 NONAME ; bool QDeclarativeExpression::hasError(void) const - ?property@QMetaObjectBuilder@@QBE?AVQMetaPropertyBuilder@@H@Z @ 158 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::property(int) const - ?index@QDeclarativeType@@QBEHXZ @ 159 NONAME ; int QDeclarativeType::index(void) const - ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 160 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *) - ?release@QDeclarativePixmapReply@@AAE_N_N@Z @ 161 NONAME ABSENT ; bool QDeclarativePixmapReply::release(bool) - ??0QDeclarativeScaleGrid@@QAE@PAVQObject@@@Z @ 162 NONAME ; QDeclarativeScaleGrid::QDeclarativeScaleGrid(class QObject *) - ?engines@QDeclarativeDebugEnginesQuery@@QBE?AV?$QList@VQDeclarativeDebugEngineReference@@@@XZ @ 163 NONAME ; class QList QDeclarativeDebugEnginesQuery::engines(void) const - ?qt_metacall@QDeclarativeDebugPropertyWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 164 NONAME ; int QDeclarativeDebugPropertyWatch::qt_metacall(enum QMetaObject::Call, int, void * *) - ?metaObject@QDeclarativeAnchors@@UBEPBUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const * QDeclarativeAnchors::metaObject(void) const - ?sceneResized@QDeclarativeView@@IAEXVQSize@@@Z @ 166 NONAME ; void QDeclarativeView::sceneResized(class QSize) - ?subFocusItemChange@QDeclarativeItemPrivate@@UAEXXZ @ 167 NONAME ; void QDeclarativeItemPrivate::subFocusItemChange(void) - ?hasNotifySignal@QDeclarativeDebugPropertyReference@@QBE_NXZ @ 168 NONAME ; bool QDeclarativeDebugPropertyReference::hasNotifySignal(void) const - ?addSlot@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 169 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSlot(class QByteArray const &) - ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 170 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *) - ?propertyCreated@QDeclarativeOpenMetaObjectType@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 171 NONAME ; void QDeclarativeOpenMetaObjectType::propertyCreated(int, class QMetaPropertyBuilder &) - ??1QDeclarativeItemPrivate@@UAE@XZ @ 172 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(void) - ?clear@QDeclarativePropertyMap@@QAEXABVQString@@@Z @ 173 NONAME ; void QDeclarativePropertyMap::clear(class QString const &) - ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 174 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *, int) - ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 175 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeEngine *) - ?insert@QDeclarativePropertyMap@@QAEXABVQString@@ABVQVariant@@@Z @ 176 NONAME ; void QDeclarativePropertyMap::insert(class QString const &, class QVariant const &) - ??1QDeclarativeContext@@UAE@XZ @ 177 NONAME ; QDeclarativeContext::~QDeclarativeContext(void) - ?operationCount@QDeclarativeState@@QBEHXZ @ 178 NONAME ; int QDeclarativeState::operationCount(void) const - ?getStaticMetaObject@QDeclarativeItem@@SAABUQMetaObject@@XZ @ 179 NONAME ; struct QMetaObject const & QDeclarativeItem::getStaticMetaObject(void) - ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 180 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *, int) - ?status@QDeclarativeComponent@@QBE?AW4Status@1@XZ @ 181 NONAME ; enum QDeclarativeComponent::Status QDeclarativeComponent::status(void) const - ?boundingRect@QDeclarativeItem@@UBE?AVQRectF@@XZ @ 182 NONAME ; class QRectF QDeclarativeItem::boundingRect(void) const - ?availableInVersion@QDeclarativeType@@QBE_NHH@Z @ 183 NONAME ; bool QDeclarativeType::availableInVersion(int, int) const - ?getStaticMetaObject@QDeclarativeDebugWatch@@SAABUQMetaObject@@XZ @ 184 NONAME ; struct QMetaObject const & QDeclarativeDebugWatch::getStaticMetaObject(void) - ??_EQDeclarativeRectangle@@UAE@I@Z @ 185 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(unsigned int) - ?setTopMargin@QDeclarativeAnchors@@QAEXM@Z @ 186 NONAME ; void QDeclarativeAnchors::setTopMargin(float) - ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 187 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &) - ??1QDeclarativeValueTypeFactory@@QAE@XZ @ 188 NONAME ; QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory(void) - ?metaObject@QDeclarativeDebugObjectExpressionWatch@@UBEPBUQMetaObject@@XZ @ 189 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectExpressionWatch::metaObject(void) const - ??0QDeclarativeComponent@@QAE@PAVQObject@@@Z @ 190 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QObject *) - ?qt_metacast@QDeclarativeItem@@UAEPAXPBD@Z @ 191 NONAME ; void * QDeclarativeItem::qt_metacast(char const *) - ?changes@QDeclarativeState@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeStateOperation@@@@XZ @ 192 NONAME ; class QDeclarativeListProperty QDeclarativeState::changes(void) - ?resizeEvent@QDeclarativeView@@MAEXPAVQResizeEvent@@@Z @ 193 NONAME ; void QDeclarativeView::resizeEvent(class QResizeEvent *) - ?d_func@QDeclarativeBinding@@ABEPBVQDeclarativeBindingPrivate@@XZ @ 194 NONAME ; class QDeclarativeBindingPrivate const * QDeclarativeBinding::d_func(void) const - ?wrapMode@QDeclarativeText@@QBE?AW4WrapMode@1@XZ @ 195 NONAME ; enum QDeclarativeText::WrapMode QDeclarativeText::wrapMode(void) const - ?centerIn@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 196 NONAME ; class QGraphicsObject * QDeclarativeAnchors::centerIn(void) const - ??0QDeclarativeType@@AAE@HABURegisterType@QDeclarativePrivate@@@Z @ 197 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterType const &) - ?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 198 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *, int) - ??0QMetaObjectBuilder@@QAE@PBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 199 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(struct QMetaObject const *, class QFlags) - ?quit@QDeclarativeEngine@@IAEXXZ @ 200 NONAME ; void QDeclarativeEngine::quit(void) - ??0QMetaEnumBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 201 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(class QMetaObjectBuilder const *, int) - ?setBottom@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 202 NONAME ; void QDeclarativeAnchors::setBottom(class QDeclarativeAnchorLine const &) - ??0QDeclarativeCustomParser@@QAE@XZ @ 203 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(void) - ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 204 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(class QByteArray const &) const - ?styleColor@QDeclarativeText@@QBE?AVQColor@@XZ @ 205 NONAME ; class QColor QDeclarativeText::styleColor(void) const - ?centerInChanged@QDeclarativeAnchors@@IAEXXZ @ 206 NONAME ; void QDeclarativeAnchors::centerInChanged(void) - ?colorChanged@QDeclarativeRectangle@@IAEXXZ @ 207 NONAME ; void QDeclarativeRectangle::colorChanged(void) - ??0QDeclarativePropertyPrivate@@QAE@ABV0@@Z @ 208 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(class QDeclarativePropertyPrivate const &) - ?loadUrl@QDeclarativeComponent@@QAEXABVQUrl@@@Z @ 209 NONAME ; void QDeclarativeComponent::loadUrl(class QUrl const &) - ?beginCreate@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 210 NONAME ; class QObject * QDeclarativeComponent::beginCreate(class QDeclarativeContext *) - ?setRight@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 211 NONAME ; void QDeclarativeAnchors::setRight(class QDeclarativeAnchorLine const &) - ?needsNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 212 NONAME ; bool QDeclarativeProperty::needsNotifySignal(void) const - ?fill@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 213 NONAME ; class QGraphicsObject * QDeclarativeAnchors::fill(void) const - ?url@QDeclarativePixmapReply@@QBEABVQUrl@@XZ @ 214 NONAME ABSENT ; class QUrl const & QDeclarativePixmapReply::url(void) const - ?top@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 215 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::top(void) const - ?clear@QDeclarativeListReference@@QBE_NXZ @ 216 NONAME ; bool QDeclarativeListReference::clear(void) const - ?parentChanged@QDeclarativeItem@@IAEXPAV1@@Z @ 217 NONAME ; void QDeclarativeItem::parentChanged(class QDeclarativeItem *) - ?columnNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 218 NONAME ; int QDeclarativeDebugFileReference::columnNumber(void) const - ??0QDeclarativeListModel@@AAE@_NPAVQObject@@@Z @ 219 NONAME ; QDeclarativeListModel::QDeclarativeListModel(bool, class QObject *) - ?apply@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@PAVQDeclarativeTransition@@PAV1@@Z @ 220 NONAME ; void QDeclarativeState::apply(class QDeclarativeStateGroup *, class QDeclarativeTransition *, class QDeclarativeState *) - ?isValid@QDeclarativeDomProperty@@QBE_NXZ @ 221 NONAME ; bool QDeclarativeDomProperty::isValid(void) const - ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 222 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *) - ?statusChanged@QDeclarativeView@@IAEXW4Status@1@@Z @ 223 NONAME ; void QDeclarativeView::statusChanged(enum QDeclarativeView::Status) - ?componentComplete@QDeclarativeText@@UAEXXZ @ 224 NONAME ; void QDeclarativeText::componentComplete(void) - ?canCount@QDeclarativeListReference@@QBE_NXZ @ 225 NONAME ; bool QDeclarativeListReference::canCount(void) const - ??1QListModelInterface@@UAE@XZ @ 226 NONAME ; QListModelInterface::~QListModelInterface(void) - ??0QDeclarativeAnchors@@QAE@PAVQObject@@@Z @ 227 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QObject *) - ?resources_at@QDeclarativeItemPrivate@@SAPAVQObject@@PAV?$QDeclarativeListProperty@VQObject@@@@H@Z @ 228 NONAME ; class QObject * QDeclarativeItemPrivate::resources_at(class QDeclarativeListProperty *, int) - ?isExtendedType@QDeclarativeType@@QBE_NXZ @ 229 NONAME ; bool QDeclarativeType::isExtendedType(void) const - ?top@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 230 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::top(void) const - ??0QDeclarativePropertyMap@@QAE@PAVQObject@@@Z @ 231 NONAME ; QDeclarativePropertyMap::QDeclarativePropertyMap(class QObject *) - ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAXPAVQDeclarativeRefCount@@PAVQObject@@ABVQString@@HAAVQDeclarativeExpressionPrivate@@@Z @ 232 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, void *, class QDeclarativeRefCount *, class QObject *, class QString const &, int, class QDeclarativeExpressionPrivate &) - ?setColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 233 NONAME ; void QDeclarativeText::setColor(class QColor const &) - ?hasStdCppSet@QMetaPropertyBuilder@@QBE_NXZ @ 234 NONAME ; bool QMetaPropertyBuilder::hasStdCppSet(void) const - ??0QDeclarativeDebugFileReference@@QAE@ABV0@@Z @ 235 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(class QDeclarativeDebugFileReference const &) - ?toValueInterceptor@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueInterceptor@@XZ @ 236 NONAME ; class QDeclarativeDomValueValueInterceptor QDeclarativeDomValue::toValueInterceptor(void) const - ??0QDeclarativeDebugEngineReference@@QAE@H@Z @ 237 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(int) - ?state@QDeclarativeItemPrivate@@QBE?AVQString@@XZ @ 238 NONAME ; class QString QDeclarativeItemPrivate::state(void) const - ??1QDeclarativePropertyValueInterceptor@@UAE@XZ @ 239 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(void) - ?getStaticMetaObject@QDeclarativePropertyMap@@SAABUQMetaObject@@XZ @ 240 NONAME ; struct QMetaObject const & QDeclarativePropertyMap::getStaticMetaObject(void) - ??1QDeclarativeScaleGrid@@UAE@XZ @ 241 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(void) - ?idString@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 242 NONAME ; class QString QDeclarativeDebugObjectReference::idString(void) const - ?customTypeData@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 243 NONAME ; class QByteArray QDeclarativeDomObject::customTypeData(void) const - ?stop@QDeclarativeTransition@@QAEXXZ @ 244 NONAME ; void QDeclarativeTransition::stop(void) - ?data@QDeclarativeListModel@@UBE?AV?$QHash@HVQVariant@@@@HABV?$QList@H@@@Z @ 245 NONAME ; class QHash QDeclarativeListModel::data(int, class QList const &) const - ?verticalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 246 NONAME ; float QDeclarativeAnchors::verticalCenterOffset(void) const - ?metaObject@QDeclarativeText@@UBEPBUQMetaObject@@XZ @ 247 NONAME ; struct QMetaObject const * QDeclarativeText::metaObject(void) const - ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 248 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QObject *) - ?createProperty@QDeclarativeOpenMetaObjectType@@QAEHABVQByteArray@@@Z @ 249 NONAME ; int QDeclarativeOpenMetaObjectType::createProperty(class QByteArray const &) - ??0QDeclarativeContext@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 250 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, class QObject *) - ??6QDeclarativeInfo@@QAEAAV0@M@Z @ 251 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(float) - ??4QDeclarativeDomValueLiteral@@QAEAAV0@ABV0@@Z @ 252 NONAME ; class QDeclarativeDomValueLiteral & QDeclarativeDomValueLiteral::operator=(class QDeclarativeDomValueLiteral const &) - ?setScript@QDeclarativeScriptString@@QAEXABVQString@@@Z @ 253 NONAME ; void QDeclarativeScriptString::setScript(class QString const &) - ?qt_metacast@QPacketProtocol@@UAEPAXPBD@Z @ 254 NONAME ; void * QPacketProtocol::qt_metacast(char const *) - ?addMetaObject@QMetaObjectBuilder@@QAEXPBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 255 NONAME ; void QMetaObjectBuilder::addMetaObject(struct QMetaObject const *, class QFlags) - ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 256 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *, int) - ?qt_metacast@QDeclarativeText@@UAEPAXPBD@Z @ 257 NONAME ; void * QDeclarativeText::qt_metacast(char const *) - ?anchors@QDeclarativeItemPrivate@@QAEPAVQDeclarativeAnchors@@XZ @ 258 NONAME ; class QDeclarativeAnchors * QDeclarativeItemPrivate::anchors(void) - ??0QListModelInterface@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 259 NONAME ; QListModelInterface::QListModelInterface(class QObjectPrivate &, class QObject *) - ?valueTypeName@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 260 NONAME ; class QString QDeclarativeDebugPropertyReference::valueTypeName(void) const - ?setStyleColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 261 NONAME ; void QDeclarativeText::setStyleColor(class QColor const &) - ?create@QDeclarativeType@@QBEPAVQObject@@XZ @ 262 NONAME ; class QObject * QDeclarativeType::create(void) const - ?metaObject@QDeclarativeDebugExpressionQuery@@UBEPBUQMetaObject@@XZ @ 263 NONAME ; struct QMetaObject const * QDeclarativeDebugExpressionQuery::metaObject(void) const - ?readyRead@QPacketProtocol@@IAEXXZ @ 264 NONAME ; void QPacketProtocol::readyRead(void) - ?qt_metacall@QDeclarativeValueType@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 265 NONAME ; int QDeclarativeValueType::qt_metacall(enum QMetaObject::Call, int, void * *) - ?propertyType@QDeclarativePropertyPrivate@@QBEHXZ @ 266 NONAME ; int QDeclarativePropertyPrivate::propertyType(void) const - ?engine@QDeclarativeView@@QAEPAVQDeclarativeEngine@@XZ @ 267 NONAME ; class QDeclarativeEngine * QDeclarativeView::engine(void) - ?inputMethodQuery@QDeclarativeItem@@MBE?AVQVariant@@W4InputMethodQuery@Qt@@@Z @ 268 NONAME ; class QVariant QDeclarativeItem::inputMethodQuery(enum Qt::InputMethodQuery) const - ?sizeHint@QDeclarativeView@@UBE?AVQSize@@XZ @ 269 NONAME ; class QSize QDeclarativeView::sizeHint(void) const - ?flags@QDeclarativeCustomParser@@QBE?AV?$QFlags@W4Flag@QDeclarativeCustomParser@@@@XZ @ 270 NONAME ; class QFlags QDeclarativeCustomParser::flags(void) const - ?staticMetaObject@QDeclarativeDebugObjectExpressionWatch@@2UQMetaObject@@B @ 271 NONAME ; struct QMetaObject const QDeclarativeDebugObjectExpressionWatch::staticMetaObject - ??0QDeclarativeDebugPropertyReference@@QAE@ABV0@@Z @ 272 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(class QDeclarativeDebugPropertyReference const &) - ??_EQDeclarativeCustomParser@@UAE@I@Z @ 273 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(unsigned int) - ??6QDeclarativeInfo@@QAEAAV0@ABVQStringRef@@@Z @ 274 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QStringRef const &) - ?values@QDeclarativeDomList@@QBE?AV?$QList@VQDeclarativeDomValue@@@@XZ @ 275 NONAME ; class QList QDeclarativeDomList::values(void) const - ?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 276 NONAME ; class QString QDeclarativeComponent::errorString(void) const - ?metaObject@QDeclarativeEngineDebug@@UBEPBUQMetaObject@@XZ @ 277 NONAME ; struct QMetaObject const * QDeclarativeEngineDebug::metaObject(void) const - ??1QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 278 NONAME ; QDeclarativeDomValueValueInterceptor::~QDeclarativeDomValueValueInterceptor(void) - ?flatten@QDeclarativeListModel@@AAE_NXZ @ 279 NONAME ; bool QDeclarativeListModel::flatten(void) - ?propertyCount@QMetaObjectBuilder@@QBEHXZ @ 280 NONAME ; int QMetaObjectBuilder::propertyCount(void) const - ?method@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 281 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::method(int) const - ?textFormat@QDeclarativeText@@QBE?AW4TextFormat@1@XZ @ 282 NONAME ; enum QDeclarativeText::TextFormat QDeclarativeText::textFormat(void) const - ?getStaticMetaObject@QDeclarativeDebugObjectExpressionWatch@@SAABUQMetaObject@@XZ @ 283 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectExpressionWatch::getStaticMetaObject(void) - ?write@QDeclarativeBehavior@@UAEXABVQVariant@@@Z @ 284 NONAME ; void QDeclarativeBehavior::write(class QVariant const &) - ?resetTop@QDeclarativeAnchors@@QAEXXZ @ 285 NONAME ; void QDeclarativeAnchors::resetTop(void) - ?queryId@QDeclarativeDebugWatch@@QBEHXZ @ 286 NONAME ; int QDeclarativeDebugWatch::queryId(void) const - ?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 287 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *, int) - ?staticMetaObject@QDeclarativeComponent@@2UQMetaObject@@B @ 288 NONAME ; struct QMetaObject const QDeclarativeComponent::staticMetaObject - ?setStateGroup@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@@Z @ 289 NONAME ; void QDeclarativeState::setStateGroup(class QDeclarativeStateGroup *) - ?access@QMetaMethodBuilder@@QBE?AW4Access@QMetaMethod@@XZ @ 290 NONAME ; enum QMetaMethod::Access QMetaMethodBuilder::access(void) const - ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 291 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *) - ?attachedPropertiesType@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 292 NONAME ; struct QMetaObject const * QDeclarativeType::attachedPropertiesType(void) const - ?setName@QDeclarativeState@@QAEXABVQString@@@Z @ 293 NONAME ; void QDeclarativeState::setName(class QString const &) - ?setReversed@QDeclarativeTransition@@QAEX_N@Z @ 294 NONAME ; void QDeclarativeTransition::setReversed(bool) - ?idForObject@QDeclarativeDebugService@@SAHPAVQObject@@@Z @ 295 NONAME ; int QDeclarativeDebugService::idForObject(class QObject *) - ?qt_metacall@QDeclarativeDebugWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 296 NONAME ; int QDeclarativeDebugWatch::qt_metacall(enum QMetaObject::Call, int, void * *) - ?fromState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 297 NONAME ; class QString QDeclarativeTransition::fromState(void) const - ??1QDeclarativeExpression@@UAE@XZ @ 298 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(void) - ?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 299 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &) - ?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 300 NONAME ; void QMetaObjectBuilder::removeMethod(int) - ?get@QDeclarativePixmapCache@@SA?AW4Status@QDeclarativePixmapReply@@ABVQUrl@@PAVQPixmap@@PAVQString@@PAVQSize@@_NHH@Z @ 301 NONAME ABSENT ; enum QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(class QUrl const &, class QPixmap *, class QString *, class QSize *, bool, int, int) - ?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 302 NONAME ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const - ?methodCount@QMetaObjectBuilder@@QBEHXZ @ 303 NONAME ; int QMetaObjectBuilder::methodCount(void) const - ?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 304 NONAME ; class QFont QDeclarativeText::font(void) const - ?completeCreate@QDeclarativeComponent@@UAEXXZ @ 305 NONAME ; void QDeclarativeComponent::completeCreate(void) - ??0QDeclarativeDomProperty@@QAE@XZ @ 306 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(void) - ?initDefault@QDeclarativePropertyPrivate@@QAEXPAVQObject@@@Z @ 307 NONAME ; void QDeclarativePropertyPrivate::initDefault(class QObject *) - ?count@QDeclarativeListModel@@UBEHXZ @ 308 NONAME ; int QDeclarativeListModel::count(void) const - ?setSmooth@QDeclarativeItem@@QAEX_N@Z @ 309 NONAME ; void QDeclarativeItem::setSmooth(bool) - ?value@QDeclarativeDebugPropertyReference@@QBE?AVQVariant@@XZ @ 310 NONAME ; class QVariant QDeclarativeDebugPropertyReference::value(void) const - ?resources@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQObject@@@@XZ @ 311 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::resources(void) - ?clear@QPacketProtocol@@QAEXXZ @ 312 NONAME ; void QPacketProtocol::clear(void) - ?setState@QDeclarativeItemPrivate@@QAEXABVQString@@@Z @ 313 NONAME ; void QDeclarativeItemPrivate::setState(class QString const &) - ??4QDeclarativeDebugPropertyReference@@QAEAAV0@ABV0@@Z @ 314 NONAME ; class QDeclarativeDebugPropertyReference & QDeclarativeDebugPropertyReference::operator=(class QDeclarativeDebugPropertyReference const &) - ?metaObject@QDeclarativeView@@UBEPBUQMetaObject@@XZ @ 315 NONAME ; struct QMetaObject const * QDeclarativeView::metaObject(void) const - ?listElementType@QDeclarativeListReference@@QBEPBUQMetaObject@@XZ @ 316 NONAME ; struct QMetaObject const * QDeclarativeListReference::listElementType(void) const - ??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeContext@@@Z @ 317 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeContext *) - ?setTarget@QDeclarativeBehavior@@UAEXABVQDeclarativeProperty@@@Z @ 318 NONAME ; void QDeclarativeBehavior::setTarget(class QDeclarativeProperty const &) - ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 319 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *, int) - ?parent@QDeclarativeOpenMetaObject@@IBEPAUQAbstractDynamicMetaObject@@XZ @ 320 NONAME ; struct QAbstractDynamicMetaObject * QDeclarativeOpenMetaObject::parent(void) const - ??0QDeclarativeDebugClient@@QAE@ABVQString@@PAVQDeclarativeDebugConnection@@@Z @ 321 NONAME ; QDeclarativeDebugClient::QDeclarativeDebugClient(class QString const &, class QDeclarativeDebugConnection *) - ?qt_metacall@QDeclarativeStateOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 322 NONAME ; int QDeclarativeStateOperation::qt_metacall(enum QMetaObject::Call, int, void * *) - ?type@Variant@QDeclarativeParser@@QBE?AW4Type@12@XZ @ 323 NONAME ; enum QDeclarativeParser::Variant::Type QDeclarativeParser::Variant::type(void) const - ??6QDeclarativeInfo@@QAEAAV0@_N@Z @ 324 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(bool) - ?value@QDeclarativeDomProperty@@QBE?AVQDeclarativeDomValue@@XZ @ 325 NONAME ; class QDeclarativeDomValue QDeclarativeDomProperty::value(void) const - ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectExpressionWatch@@ABVQDeclarativeDebugObjectReference@@ABVQString@@PAVQObject@@@Z @ 326 NONAME ; class QDeclarativeDebugObjectExpressionWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QString const &, class QObject *) - ??_EQDeclarativeDebugConnection@@UAE@I@Z @ 327 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(unsigned int) - ?qt_metacall@QDeclarativeDebugConnection@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 328 NONAME ; int QDeclarativeDebugConnection::qt_metacall(enum QMetaObject::Call, int, void * *) - ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 329 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *, int) - ?errors@QDeclarativeComponent@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 330 NONAME ; class QList QDeclarativeComponent::errors(void) const - ??0QDeclarativeCustomParserNode@@QAE@ABV0@@Z @ 331 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(class QDeclarativeCustomParserNode const &) - ??1QDeclarativeImageProvider@@UAE@XZ @ 332 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(void) - ?sync@QDeclarativeListModel@@QAEXXZ @ 333 NONAME ; void QDeclarativeListModel::sync(void) - ?objectForId@QDeclarativeDebugService@@SAPAVQObject@@H@Z @ 334 NONAME ; class QObject * QDeclarativeDebugService::objectForId(int) - ?hasFocus@QDeclarativeItem@@QBE_NXZ @ 335 NONAME ; bool QDeclarativeItem::hasFocus(void) const - ??1QDeclarativeExtensionPlugin@@UAE@XZ @ 336 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(void) - ?qt_metacall@QDeclarativeBehavior@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 337 NONAME ; int QDeclarativeBehavior::qt_metacall(enum QMetaObject::Call, int, void * *) - ?d_func@QDeclarativeBehavior@@ABEPBVQDeclarativeBehaviorPrivate@@XZ @ 338 NONAME ; class QDeclarativeBehaviorPrivate const * QDeclarativeBehavior::d_func(void) const - ?wrapModeChanged@QDeclarativeText@@IAEXXZ @ 339 NONAME ; void QDeclarativeText::wrapModeChanged(void) - ?elideModeChanged@QDeclarativeText@@IAEXW4TextElideMode@1@@Z @ 340 NONAME ; void QDeclarativeText::elideModeChanged(enum QDeclarativeText::TextElideMode) - ??1QDeclarativeExtensionInterface@@UAE@XZ @ 341 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(void) - ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQMetaEnum@@@Z @ 342 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QMetaEnum const &) - ?interfaceIId@QDeclarativeType@@QBEPBDXZ @ 343 NONAME ; char const * QDeclarativeType::interfaceIId(void) const - ?resetHorizontalCenter@QDeclarativeAnchors@@QAEXXZ @ 344 NONAME ; void QDeclarativeAnchors::resetHorizontalCenter(void) - ?outputWarningsToStandardError@QDeclarativeEngine@@QBE_NXZ @ 345 NONAME ; bool QDeclarativeEngine::outputWarningsToStandardError(void) const - ?getStaticMetaObject@QDeclarativeBehavior@@SAABUQMetaObject@@XZ @ 346 NONAME ; struct QMetaObject const & QDeclarativeBehavior::getStaticMetaObject(void) - ??0QMetaEnumBuilder@@QAE@XZ @ 347 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(void) - ?isValueType@QDeclarativeValueTypeFactory@@SA_NH@Z @ 348 NONAME ; bool QDeclarativeValueTypeFactory::isValueType(int) - ?setWidth@QDeclarativePen@@QAEXH@Z @ 349 NONAME ; void QDeclarativePen::setWidth(int) - ?isReadable@QMetaPropertyBuilder@@QBE_NXZ @ 350 NONAME ; bool QMetaPropertyBuilder::isReadable(void) const - ?metaObject@QDeclarativeExpression@@UBEPBUQMetaObject@@XZ @ 351 NONAME ; struct QMetaObject const * QDeclarativeExpression::metaObject(void) const - ??0QDeclarativeDomValueLiteral@@QAE@ABV0@@Z @ 352 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(class QDeclarativeDomValueLiteral const &) - ?getStaticMetaObject@QDeclarativeDebugQuery@@SAABUQMetaObject@@XZ @ 353 NONAME ; struct QMetaObject const & QDeclarativeDebugQuery::getStaticMetaObject(void) - ??0QDeclarativeDomComponent@@QAE@XZ @ 354 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(void) - ??1QDeclarativePropertyPrivate@@QAE@XZ @ 355 NONAME ; QDeclarativePropertyPrivate::~QDeclarativePropertyPrivate(void) - ?setBaselineOffset@QDeclarativeItem@@QAEXM@Z @ 356 NONAME ; void QDeclarativeItem::setBaselineOffset(float) - ??0QDeclarativeDebugPropertyReference@@QAE@XZ @ 357 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(void) - ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 358 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *, int) - ?setState@QDeclarativeStateGroup@@QAEXABVQString@@@Z @ 359 NONAME ; void QDeclarativeStateGroup::setState(class QString const &) - ??_EQDeclarativeImageProvider@@UAE@I@Z @ 360 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(unsigned int) - ?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 361 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *) - ?isLoading@QDeclarativeComponent@@QBE_NXZ @ 362 NONAME ; bool QDeclarativeComponent::isLoading(void) const - ?createFunction@QDeclarativeType@@QBEP6AXPAX@ZXZ @ 363 NONAME ; void (*)(void *) QDeclarativeType::createFunction(void) const - ?childrenRect@QDeclarativeItem@@QAE?AVQRectF@@XZ @ 364 NONAME ; class QRectF QDeclarativeItem::childrenRect(void) - ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 365 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *) - ?objectTypeMajorVersion@QDeclarativeDomObject@@QBEHXZ @ 366 NONAME ; int QDeclarativeDomObject::objectTypeMajorVersion(void) const - ??6QDeclarativeInfo@@QAEAAV0@D@Z @ 367 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char) - ??1QDeclarativeDomValueLiteral@@QAE@XZ @ 368 NONAME ; QDeclarativeDomValueLiteral::~QDeclarativeDomValueLiteral(void) - ?keepMouseGrab@QDeclarativeItem@@QBE_NXZ @ 369 NONAME ; bool QDeclarativeItem::keepMouseGrab(void) const - ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 370 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *, int) - ?getStaticMetaObject@QDeclarativeDebugConnection@@SAABUQMetaObject@@XZ @ 371 NONAME ; struct QMetaObject const & QDeclarativeDebugConnection::getStaticMetaObject(void) - ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 372 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *) - ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@H@Z @ 373 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](int) - ??0Variant@QDeclarativeParser@@QAE@XZ @ 374 NONAME ; QDeclarativeParser::Variant::Variant(void) - ?status@QDeclarativeView@@QBE?AW4Status@1@XZ @ 375 NONAME ; enum QDeclarativeView::Status QDeclarativeView::status(void) const - ??0QDeclarativeEngineDebug@@QAE@PAVQDeclarativeDebugConnection@@PAVQObject@@@Z @ 376 NONAME ; QDeclarativeEngineDebug::QDeclarativeEngineDebug(class QDeclarativeDebugConnection *, class QObject *) - ?create@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 377 NONAME ; class QObject * QDeclarativeComponent::create(class QDeclarativeContext *) - ??_EQPacket@@UAE@I@Z @ 378 NONAME ; QPacket::~QPacket(unsigned int) - ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 379 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *, int) - ?isResettable@QDeclarativeProperty@@QBE_NXZ @ 380 NONAME ; bool QDeclarativeProperty::isResettable(void) const - ?isList@QDeclarativeCustomParserProperty@@QBE_NXZ @ 381 NONAME ; bool QDeclarativeCustomParserProperty::isList(void) const - ?resetVerticalCenter@QDeclarativeAnchors@@QAEXXZ @ 382 NONAME ; void QDeclarativeAnchors::resetVerticalCenter(void) - ??0QDeclarativeValueType@@QAE@PAVQObject@@@Z @ 383 NONAME ; QDeclarativeValueType::QDeclarativeValueType(class QObject *) - ?staticMetaObject@QDeclarativeDebugConnection@@2UQMetaObject@@B @ 384 NONAME ; struct QMetaObject const QDeclarativeDebugConnection::staticMetaObject - ?isLiteral@QDeclarativeDomValue@@QBE_NXZ @ 385 NONAME ; bool QDeclarativeDomValue::isLiteral(void) const - ?qt_metacall@QDeclarativeItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 386 NONAME ; int QDeclarativeItem::qt_metacall(enum QMetaObject::Call, int, void * *) - ?qt_metacall@QListModelInterface@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 387 NONAME ; int QListModelInterface::qt_metacall(enum QMetaObject::Call, int, void * *) - ?move@QDeclarativeListModel@@QAEXHHH@Z @ 388 NONAME ; void QDeclarativeListModel::move(int, int, int) - ?metaObject@QDeclarativeBehavior@@UBEPBUQMetaObject@@XZ @ 389 NONAME ; struct QMetaObject const * QDeclarativeBehavior::metaObject(void) const - ?inputMethodPreHandler@QDeclarativeItem@@IAEXPAVQInputMethodEvent@@@Z @ 390 NONAME ; void QDeclarativeItem::inputMethodPreHandler(class QInputMethodEvent *) - ?d_func@QDeclarativeText@@AAEPAVQDeclarativeTextPrivate@@XZ @ 391 NONAME ; class QDeclarativeTextPrivate * QDeclarativeText::d_func(void) - ?signature@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 392 NONAME ; class QByteArray QMetaMethodBuilder::signature(void) const - ??_EQDeclarativeParserStatus@@UAE@I@Z @ 393 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(unsigned int) - ?rightMargin@QDeclarativeAnchors@@QBEMXZ @ 394 NONAME ; float QDeclarativeAnchors::rightMargin(void) const - ?itemsMoved@QListModelInterface@@IAEXHHH@Z @ 395 NONAME ; void QListModelInterface::itemsMoved(int, int, int) - ?rectFFromString@QDeclarativeStringConverters@@YA?AVQRectF@@ABVQString@@PA_N@Z @ 396 NONAME ; class QRectF QDeclarativeStringConverters::rectFFromString(class QString const &, bool *) - ?canAt@QDeclarativeListReference@@QBE_NXZ @ 397 NONAME ; bool QDeclarativeListReference::canAt(void) const - ?children@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 398 NONAME ; class QList QDeclarativeDebugObjectReference::children(void) const - ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 399 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *) - ?qt_metacall@QDeclarativeDebugExpressionQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 400 NONAME ; int QDeclarativeDebugExpressionQuery::qt_metacall(enum QMetaObject::Call, int, void * *) - ?getStaticMetaObject@QDeclarativeEngine@@SAABUQMetaObject@@XZ @ 401 NONAME ; struct QMetaObject const & QDeclarativeEngine::getStaticMetaObject(void) - ?paintEvent@QDeclarativeView@@MAEXPAVQPaintEvent@@@Z @ 402 NONAME ; void QDeclarativeView::paintEvent(class QPaintEvent *) - ?name@QDeclarativeDebugPropertyWatch@@QBE?AVQString@@XZ @ 403 NONAME ; class QString QDeclarativeDebugPropertyWatch::name(void) const - ?bindingType@QDeclarativeAbstractBinding@@UBE?AW4Type@1@XZ @ 404 NONAME ; enum QDeclarativeAbstractBinding::Type QDeclarativeAbstractBinding::bindingType(void) const - ?margins@QDeclarativeAnchors@@QBEMXZ @ 405 NONAME ; float QDeclarativeAnchors::margins(void) const - ?length@QDeclarativeDomProperty@@QBEHXZ @ 406 NONAME ; int QDeclarativeDomProperty::length(void) const - ??1QDeclarativeDomImport@@QAE@XZ @ 407 NONAME ; QDeclarativeDomImport::~QDeclarativeDomImport(void) - ?addRef@QDeclarativePixmapReply@@AAEXXZ @ 408 NONAME ABSENT ; void QDeclarativePixmapReply::addRef(void) - ?mouseReleaseEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 409 NONAME ; void QDeclarativeText::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) - ?isCustomType@QDeclarativeDomObject@@QBE_NXZ @ 410 NONAME ; bool QDeclarativeDomObject::isCustomType(void) const - ?registerType@QDeclarativePrivate@@YAHABURegisterType@1@@Z @ 411 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterType const &) - ?radius@QDeclarativeRectangle@@QBEMXZ @ 412 NONAME ; float QDeclarativeRectangle::radius(void) const - ??0QDeclarativeComponent@@AAE@PAVQDeclarativeEngine@@PAVQDeclarativeCompiledData@@HHPAVQObject@@@Z @ 413 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QDeclarativeCompiledData *, int, int, class QObject *) - ?resources_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 414 NONAME ; int QDeclarativeItemPrivate::resources_count(class QDeclarativeListProperty *) - ?timerEvent@QDeclarativeView@@MAEXPAVQTimerEvent@@@Z @ 415 NONAME ; void QDeclarativeView::timerEvent(class QTimerEvent *) - ?finished@QDeclarativePixmapReply@@IAEXXZ @ 416 NONAME ABSENT ; void QDeclarativePixmapReply::finished(void) - ?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 417 NONAME ; void QDeclarativeTransition::setToState(class QString const &) - ?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 418 NONAME ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const - ?getStaticMetaObject@QDeclarativeView@@SAABUQMetaObject@@XZ @ 419 NONAME ; struct QMetaObject const & QDeclarativeView::getStaticMetaObject(void) - ?metaObject@QDeclarativeStateOperation@@UBEPBUQMetaObject@@XZ @ 420 NONAME ; struct QMetaObject const * QDeclarativeStateOperation::metaObject(void) const - ?keyReleasePreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 421 NONAME ; void QDeclarativeItem::keyReleasePreHandler(class QKeyEvent *) - ?append@QDeclarativeListModel@@QAEXABVQScriptValue@@@Z @ 422 NONAME ; void QDeclarativeListModel::append(class QScriptValue const &) - ??1QDeclarativeDebugObjectReference@@QAE@XZ @ 423 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(void) - ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 424 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *) - ?resolvedUrl@QDeclarativeContext@@QAE?AVQUrl@@ABV2@@Z @ 425 NONAME ; class QUrl QDeclarativeContext::resolvedUrl(class QUrl const &) - ?object@QDeclarativeListReference@@QBEPAVQObject@@XZ @ 426 NONAME ; class QObject * QDeclarativeListReference::object(void) const - ?setEnabled@QDeclarativeBehavior@@QAEX_N@Z @ 427 NONAME ; void QDeclarativeBehavior::setEnabled(bool) - ?line@QDeclarativeError@@QBEHXZ @ 428 NONAME ; int QDeclarativeError::line(void) const - ?heightValid@QDeclarativeItem@@IBE_NXZ @ 429 NONAME ; bool QDeclarativeItem::heightValid(void) const - ??1QDeclarativeOpenMetaObject@@UAE@XZ @ 430 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(void) - ??0QPacket@@QAE@XZ @ 431 NONAME ; QPacket::QPacket(void) - ?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 432 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *, int) - ?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 433 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *, int) - ??0QDeclarativeDebugEngineReference@@QAE@XZ @ 434 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(void) - ?qmlEngine@@YAPAVQDeclarativeEngine@@PBVQObject@@@Z @ 435 NONAME ; class QDeclarativeEngine * qmlEngine(class QObject const *) - ?error@QDeclarativeExpression@@QBE?AVQDeclarativeError@@XZ @ 436 NONAME ; class QDeclarativeError QDeclarativeExpression::error(void) const - ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 437 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *) - ?styleColorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 438 NONAME ; void QDeclarativeText::styleColorChanged(class QColor const &) - ?getStaticMetaObject@QDeclarativeDebugExpressionQuery@@SAABUQMetaObject@@XZ @ 439 NONAME ; struct QMetaObject const & QDeclarativeDebugExpressionQuery::getStaticMetaObject(void) - ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 440 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *, int) - ?writeValueProperty@QDeclarativePropertyPrivate@@QAE_NABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 441 NONAME ; bool QDeclarativePropertyPrivate::writeValueProperty(class QVariant const &, class QFlags) - ?errors@QDeclarativeCustomParser@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 442 NONAME ; class QList QDeclarativeCustomParser::errors(void) const - ?statesProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 443 NONAME ; class QDeclarativeListProperty QDeclarativeStateGroup::statesProperty(void) - ?roles@QDeclarativeListModel@@UBE?AV?$QList@H@@XZ @ 444 NONAME ; class QList QDeclarativeListModel::roles(void) const - ?name@QMetaEnumBuilder@@QBE?AVQByteArray@@XZ @ 445 NONAME ; class QByteArray QMetaEnumBuilder::name(void) const - ??_EQDeclarativeDebugRootContextQuery@@UAE@I@Z @ 446 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(unsigned int) - ?setColor@QDeclarativeRectangle@@QAEXABVQColor@@@Z @ 447 NONAME ; void QDeclarativeRectangle::setColor(class QColor const &) - ?clipChanged@QDeclarativeItem@@IAEX_N@Z @ 448 NONAME ; void QDeclarativeItem::clipChanged(bool) - ??0QDeclarativeCustomParser@@QAE@V?$QFlags@W4Flag@QDeclarativeCustomParser@@@@@Z @ 449 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(class QFlags) - ?valueChanged@QDeclarativeDebugWatch@@IAEXABVQByteArray@@ABVQVariant@@@Z @ 450 NONAME ; void QDeclarativeDebugWatch::valueChanged(class QByteArray const &, class QVariant const &) - ?smoothChanged@QDeclarativeItem@@IAEX_N@Z @ 451 NONAME ; void QDeclarativeItem::smoothChanged(bool) - ?colorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 452 NONAME ; void QDeclarativeText::colorChanged(class QColor const &) - ?continueExecute@QDeclarativeView@@AAEXXZ @ 453 NONAME ; void QDeclarativeView::continueExecute(void) - ?initialSize@QDeclarativeView@@QBE?AVQSize@@XZ @ 454 NONAME ; class QSize QDeclarativeView::initialSize(void) const - ?interfaceIId@QDeclarativeMetaType@@SAPBDH@Z @ 455 NONAME ; char const * QDeclarativeMetaType::interfaceIId(int) - ?isValid@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 456 NONAME ; bool QDeclarativeDomDynamicProperty::isValid(void) const - ?baselineChanged@QDeclarativeAnchors@@IAEXXZ @ 457 NONAME ; void QDeclarativeAnchors::baselineChanged(void) - ?name@QDeclarativeState@@QBE?AVQString@@XZ @ 458 NONAME ; class QString QDeclarativeState::name(void) const - ??4QDeclarativeDomObject@@QAEAAV0@ABV0@@Z @ 459 NONAME ; class QDeclarativeDomObject & QDeclarativeDomObject::operator=(class QDeclarativeDomObject const &) - ?qt_metacall@QDeclarativeContext@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 460 NONAME ; int QDeclarativeContext::qt_metacall(enum QMetaObject::Call, int, void * *) - ??_EQDeclarativeValueType@@UAE@I@Z @ 461 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(unsigned int) - ?qt_metacall@QDeclarativeState@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 462 NONAME ; int QDeclarativeState::qt_metacall(enum QMetaObject::Call, int, void * *) - ?isEnabled@QDeclarativeDebugService@@QBE_NXZ @ 463 NONAME ; bool QDeclarativeDebugService::isEnabled(void) const - ?stateChanged@QDeclarativeDebugWatch@@IAEXW4State@1@@Z @ 464 NONAME ; void QDeclarativeDebugWatch::stateChanged(enum QDeclarativeDebugWatch::State) - ??0QMetaMethodBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 465 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(class QMetaObjectBuilder const *, int) - ??4QDeclarativeListReference@@QAEAAV0@ABV0@@Z @ 466 NONAME ; class QDeclarativeListReference & QDeclarativeListReference::operator=(class QDeclarativeListReference const &) - ?componentFinalized@QDeclarativeBehavior@@AAEXXZ @ 467 NONAME ; void QDeclarativeBehavior::componentFinalized(void) - ?stateChanged@QDeclarativeDebugQuery@@IAEXW4State@1@@Z @ 468 NONAME ; void QDeclarativeDebugQuery::stateChanged(enum QDeclarativeDebugQuery::State) - ?setVerticalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 469 NONAME ; void QDeclarativeAnchors::setVerticalCenter(class QDeclarativeAnchorLine const &) - ?keyPressEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 470 NONAME ; void QDeclarativeItem::keyPressEvent(class QKeyEvent *) - ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 471 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *) - ?metaObject@QDeclarativeExtensionPlugin@@UBEPBUQMetaObject@@XZ @ 472 NONAME ; struct QMetaObject const * QDeclarativeExtensionPlugin::metaObject(void) const - ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 473 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *, int) - ?setCenterIn@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 474 NONAME ; void QDeclarativeAnchors::setCenterIn(class QGraphicsObject *) - ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@ABVQByteArray@@HH@Z @ 475 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(class QByteArray const &, int, int) - ??0QDeclarativeDebugObjectQuery@@AAE@PAVQObject@@@Z @ 476 NONAME ; QDeclarativeDebugObjectQuery::QDeclarativeDebugObjectQuery(class QObject *) - ?isComponent@QDeclarativeDomObject@@QBE_NXZ @ 477 NONAME ; bool QDeclarativeDomObject::isComponent(void) const - ?inputMethodEvent@QDeclarativeItem@@MAEXPAVQInputMethodEvent@@@Z @ 478 NONAME ; void QDeclarativeItem::inputMethodEvent(class QInputMethodEvent *) - ?styleChanged@QDeclarativeText@@IAEXW4TextStyle@1@@Z @ 479 NONAME ; void QDeclarativeText::styleChanged(enum QDeclarativeText::TextStyle) - ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeEngine@@@Z @ 480 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeEngine *) - ?pluginPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 481 NONAME ; class QStringList QDeclarativeEngine::pluginPathList(void) const - ?parentContext@QDeclarativeContext@@QBEPAV1@XZ @ 482 NONAME ; class QDeclarativeContext * QDeclarativeContext::parentContext(void) const - ?leftMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 483 NONAME ; void QDeclarativeAnchors::leftMarginChanged(void) - ?staticMetaObject@QDeclarativeDebugService@@2UQMetaObject@@B @ 484 NONAME ; struct QMetaObject const QDeclarativeDebugService::staticMetaObject - ?topMargin@QDeclarativeAnchors@@QBEMXZ @ 485 NONAME ; float QDeclarativeAnchors::topMargin(void) const - ??0QDeclarativeDebugExpressionQuery@@AAE@PAVQObject@@@Z @ 486 NONAME ; QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(class QObject *) - ?qt_metacast@QDeclarativePixmapReply@@UAEPAXPBD@Z @ 487 NONAME ABSENT ; void * QDeclarativePixmapReply::qt_metacast(char const *) - ??0QPacket@@IAE@ABVQByteArray@@@Z @ 488 NONAME ; QPacket::QPacket(class QByteArray const &) - ?setFlags@QMetaObjectBuilder@@QAEXV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@@Z @ 489 NONAME ; void QMetaObjectBuilder::setFlags(class QFlags) - ?horizontalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 490 NONAME ; void QDeclarativeAnchors::horizontalCenterChanged(void) - ?right@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 491 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::right(void) const - ?pendingRequests@QDeclarativePixmapCache@@SAHXZ @ 492 NONAME ABSENT ; int QDeclarativePixmapCache::pendingRequests(void) - ?staticMetaObject@QDeclarativeDebugObjectQuery@@2UQMetaObject@@B @ 493 NONAME ; struct QMetaObject const QDeclarativeDebugObjectQuery::staticMetaObject - ?propertyRead@QDeclarativeOpenMetaObject@@MAEXH@Z @ 494 NONAME ; void QDeclarativeOpenMetaObject::propertyRead(int) - ?importPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 495 NONAME ; class QStringList QDeclarativeEngine::importPathList(void) const - ?border@QDeclarativeRectangle@@QAEPAVQDeclarativePen@@XZ @ 496 NONAME ; class QDeclarativePen * QDeclarativeRectangle::border(void) - ?baselineOffset@QDeclarativeItem@@QBEMXZ @ 497 NONAME ; float QDeclarativeItem::baselineOffset(void) const - ?dateFromString@QDeclarativeStringConverters@@YA?AVQDate@@ABVQString@@PA_N@Z @ 498 NONAME ; class QDate QDeclarativeStringConverters::dateFromString(class QString const &, bool *) - ?qt_metacast@QDeclarativeDebugObjectExpressionWatch@@UAEPAXPBD@Z @ 499 NONAME ; void * QDeclarativeDebugObjectExpressionWatch::qt_metacast(char const *) - ??0QDeclarativeDomValue@@QAE@ABV0@@Z @ 500 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(class QDeclarativeDomValue const &) - ??1QDeclarativeListModel@@UAE@XZ @ 501 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(void) - ?qmlAttachedPropertiesObject@@YAPAVQObject@@PAHPBV1@PBUQMetaObject@@_N@Z @ 502 NONAME ; class QObject * qmlAttachedPropertiesObject(int *, class QObject const *, struct QMetaObject const *, bool) - ??_EQDeclarativeDebugClient@@UAE@I@Z @ 503 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(unsigned int) - ??4QDeclarativeDomComponent@@QAEAAV0@ABV0@@Z @ 504 NONAME ; class QDeclarativeDomComponent & QDeclarativeDomComponent::operator=(class QDeclarativeDomComponent const &) - ?tr@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 505 NONAME ; class QString QPacketProtocol::tr(char const *, char const *) - ?setFont@QDeclarativeText@@QAEXABVQFont@@@Z @ 506 NONAME ; void QDeclarativeText::setFont(class QFont const &) - ?fromChanged@QDeclarativeTransition@@IAEXXZ @ 507 NONAME ; void QDeclarativeTransition::fromChanged(void) - ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 508 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QMetaMethod const &) - ?setHeight@QDeclarativeItemPrivate@@UAEXM@Z @ 509 NONAME ; void QDeclarativeItemPrivate::setHeight(float) - ??0Variant@QDeclarativeParser@@QAE@ABV01@@Z @ 510 NONAME ; QDeclarativeParser::Variant::Variant(class QDeclarativeParser::Variant const &) - ?getStaticMetaObject@QDeclarativeExtensionPlugin@@SAABUQMetaObject@@XZ @ 511 NONAME ; struct QMetaObject const & QDeclarativeExtensionPlugin::getStaticMetaObject(void) - ??0QDeclarativeBinding@@QAE@PAXPAVQDeclarativeRefCount@@PAVQObject@@PAVQDeclarativeContextData@@ABVQString@@H2@Z @ 512 NONAME ; QDeclarativeBinding::QDeclarativeBinding(void *, class QDeclarativeRefCount *, class QObject *, class QDeclarativeContextData *, class QString const &, int, class QObject *) - ?qt_metacast@QDeclarativeDebugClient@@UAEPAXPBD@Z @ 513 NONAME ; void * QDeclarativeDebugClient::qt_metacast(char const *) - ?classInfoValue@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 514 NONAME ; class QByteArray QMetaObjectBuilder::classInfoValue(int) const - ?right@QDeclarativeScaleGrid@@QBEHXZ @ 515 NONAME ; int QDeclarativeScaleGrid::right(void) const - ?setClassName@QMetaObjectBuilder@@QAEXABVQByteArray@@@Z @ 516 NONAME ; void QMetaObjectBuilder::setClassName(class QByteArray const &) - ??1QDeclarativeAnchors@@UAE@XZ @ 517 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(void) - ?removeConstructor@QMetaObjectBuilder@@QAEXH@Z @ 518 NONAME ; void QMetaObjectBuilder::removeConstructor(int) - ??4QDeclarativeDomValueValueInterceptor@@QAEAAV0@ABV0@@Z @ 519 NONAME ; class QDeclarativeDomValueValueInterceptor & QDeclarativeDomValueValueInterceptor::operator=(class QDeclarativeDomValueValueInterceptor const &) - ?resolveType@QDeclarativeCustomParser@@IBEPBUQMetaObject@@ABVQByteArray@@@Z @ 520 NONAME ; struct QMetaObject const * QDeclarativeCustomParser::resolveType(class QByteArray const &) const - ??_EQDeclarativePropertyValueSource@@UAE@I@Z @ 521 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(unsigned int) - ?staticMetaObject@QDeclarativeItem@@2UQMetaObject@@B @ 522 NONAME ; struct QMetaObject const QDeclarativeItem::staticMetaObject - ?qt_metacast@QDeclarativeDebugRootContextQuery@@UAEPAXPBD@Z @ 523 NONAME ; void * QDeclarativeDebugRootContextQuery::qt_metacast(char const *) - ?itemsRemoved@QListModelInterface@@IAEXHH@Z @ 524 NONAME ; void QListModelInterface::itemsRemoved(int, int) - ?networkAccessManager@QDeclarativeEngine@@QBEPAVQNetworkAccessManager@@XZ @ 525 NONAME ; class QNetworkAccessManager * QDeclarativeEngine::networkAccessManager(void) const - ??0QDeclarativeDomValue@@QAE@XZ @ 526 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(void) - ?init@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItem@@@Z @ 527 NONAME ; void QDeclarativeItemPrivate::init(class QDeclarativeItem *) - ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQByteArray@@0H@Z @ 528 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QByteArray const &, class QByteArray const &, int) - ?getStaticMetaObject@QDeclarativeState@@SAABUQMetaObject@@XZ @ 529 NONAME ; struct QMetaObject const & QDeclarativeState::getStaticMetaObject(void) - ?isResettable@QMetaPropertyBuilder@@QBE_NXZ @ 530 NONAME ; bool QMetaPropertyBuilder::isResettable(void) const - ?bottomMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 531 NONAME ; void QDeclarativeAnchors::bottomMarginChanged(void) - ?offlineStoragePath@QDeclarativeEngine@@QBE?AVQString@@XZ @ 532 NONAME ; class QString QDeclarativeEngine::offlineStoragePath(void) const - ?keys@QDeclarativePropertyMap@@QBE?AVQStringList@@XZ @ 533 NONAME ; class QStringList QDeclarativePropertyMap::keys(void) const - ?addItemChangeListener@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItemChangeListener@@V?$QFlags@W4ChangeType@QDeclarativeItemPrivate@@@@@Z @ 534 NONAME ; void QDeclarativeItemPrivate::addItemChangeListener(class QDeclarativeItemChangeListener *, class QFlags) - ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 535 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QMetaMethod const &) - ??6QDeclarativeInfo@@QAEAAV0@F@Z @ 536 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(short) - ?serialize@QMetaObjectBuilder@@QBEXAAVQDataStream@@@Z @ 537 NONAME ; void QMetaObjectBuilder::serialize(class QDataStream &) const - ??0QDeclarativeDebugContextReference@@QAE@ABV0@@Z @ 538 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(class QDeclarativeDebugContextReference const &) - ?saveProperty@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H@Z @ 539 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveProperty(struct QMetaObject const *, int) - ?propertyType@QDeclarativeProperty@@QBEHXZ @ 540 NONAME ; int QDeclarativeProperty::propertyType(void) const - ?isDefaultProperty@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 541 NONAME ; bool QDeclarativeDomDynamicProperty::isDefaultProperty(void) const - ??_EQDeclarativeBehavior@@UAE@I@Z @ 542 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(unsigned int) - ??_EQDeclarativeListModel@@UAE@I@Z @ 543 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(unsigned int) - ?isCreatable@QDeclarativeType@@QBE_NXZ @ 544 NONAME ; bool QDeclarativeType::isCreatable(void) const - ??6QDeclarativeInfo@@QAEAAV0@ABVQString@@@Z @ 545 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QString const &) - ?tr@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 546 NONAME ; class QString QDeclarativePen::tr(char const *, char const *) - ?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 547 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *, int) - ??0QDeclarativeListModel@@QAE@PAVQObject@@@Z @ 548 NONAME ; QDeclarativeListModel::QDeclarativeListModel(class QObject *) - ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugContextReference@@ABVQString@@PAVQObject@@@Z @ 549 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugContextReference const &, class QString const &, class QObject *) - ?setColumn@QDeclarativeError@@QAEXH@Z @ 550 NONAME ; void QDeclarativeError::setColumn(int) - ??1QDeclarativeTransition@@UAE@XZ @ 551 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(void) - ??AQDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 552 NONAME ; class QVariant QDeclarativePropertyMap::operator[](class QString const &) const - ?qt_metacall@QDeclarativeListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 553 NONAME ; int QDeclarativeListModel::qt_metacall(enum QMetaObject::Call, int, void * *) - ?qdeclarativeelement_destructor@QDeclarativePrivate@@YAXPAVQObject@@@Z @ 554 NONAME ; void QDeclarativePrivate::qdeclarativeelement_destructor(class QObject *) - ?registerCustomStringConverter@QDeclarativeMetaType@@SAXHP6A?AVQVariant@@ABVQString@@@Z@Z @ 555 NONAME ; void QDeclarativeMetaType::registerCustomStringConverter(int, class QVariant (*)(class QString const &)) - ?metaObject@QDeclarativeEngine@@UBEPBUQMetaObject@@XZ @ 556 NONAME ; struct QMetaObject const * QDeclarativeEngine::metaObject(void) const - ??_EQDeclarativeDebugContextReference@@QAE@I@Z @ 557 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(unsigned int) - ?propertyWrite@QDeclarativeOpenMetaObject@@MAEXH@Z @ 558 NONAME ; void QDeclarativeOpenMetaObject::propertyWrite(int) - ?qt_metacall@QDeclarativeDebugService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 559 NONAME ; int QDeclarativeDebugService::qt_metacall(enum QMetaObject::Call, int, void * *) - ?setVerticalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 560 NONAME ; void QDeclarativeAnchors::setVerticalCenterOffset(float) - ??1QDeclarativeDebugWatch@@UAE@XZ @ 561 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(void) - ??1QPacketAutoSend@@UAE@XZ @ 562 NONAME ; QPacketAutoSend::~QPacketAutoSend(void) - ?geometryChanged@QDeclarativeText@@MAEXABVQRectF@@0@Z @ 563 NONAME ; void QDeclarativeText::geometryChanged(class QRectF const &, class QRectF const &) - ?d_func@QDeclarativeRectangle@@AAEPAVQDeclarativeRectanglePrivate@@XZ @ 564 NONAME ; class QDeclarativeRectanglePrivate * QDeclarativeRectangle::d_func(void) - ?qt_metacast@QDeclarativeListModel@@UAEPAXPBD@Z @ 565 NONAME ; void * QDeclarativeListModel::qt_metacast(char const *) - ?name@QDeclarativeCustomParserProperty@@QBE?AVQByteArray@@XZ @ 566 NONAME ; class QByteArray QDeclarativeCustomParserProperty::name(void) const - ?update@QDeclarativeBinding@@QAEXXZ @ 567 NONAME ; void QDeclarativeBinding::update(void) - ?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 568 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *) - ?qt_metacast@QDeclarativeDebugConnection@@UAEPAXPBD@Z @ 569 NONAME ; void * QDeclarativeDebugConnection::qt_metacast(char const *) - ?removeWatch@QDeclarativeEngineDebug@@QAEXPAVQDeclarativeDebugWatch@@@Z @ 570 NONAME ; void QDeclarativeEngineDebug::removeWatch(class QDeclarativeDebugWatch *) - ?qt_metacast@QDeclarativeBinding@@UAEPAXPBD@Z @ 571 NONAME ; void * QDeclarativeBinding::qt_metacast(char const *) - ?baseline@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 572 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::baseline(void) const - ?restore@QDeclarativePropertyPrivate@@SA?AVQDeclarativeProperty@@ABVQByteArray@@PAVQObject@@PAVQDeclarativeContextData@@@Z @ 573 NONAME ; class QDeclarativeProperty QDeclarativePropertyPrivate::restore(class QByteArray const &, class QObject *, class QDeclarativeContextData *) - ??0QDeclarativeProperty@@QAE@PAVQObject@@@Z @ 574 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *) - ?source@QDeclarativeDebugObjectReference@@QBE?AVQDeclarativeDebugFileReference@@XZ @ 575 NONAME ; class QDeclarativeDebugFileReference QDeclarativeDebugObjectReference::source(void) const - ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 576 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *, int) - ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@H@Z @ 577 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(int) - ??1QDeclarativeCustomParser@@UAE@XZ @ 578 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(void) - ?toList@QDeclarativeDomValue@@QBE?AVQDeclarativeDomList@@XZ @ 579 NONAME ; class QDeclarativeDomList QDeclarativeDomValue::toList(void) const - ?metaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 580 NONAME ; struct QMetaObject const * QDeclarativeType::metaObject(void) const - ?animation@QDeclarativeBehavior@@QAEPAVQDeclarativeAbstractAnimation@@XZ @ 581 NONAME ; class QDeclarativeAbstractAnimation * QDeclarativeBehavior::animation(void) - ?listType@QDeclarativeMetaType@@SAHH@Z @ 582 NONAME ; int QDeclarativeMetaType::listType(int) - ?transform_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@PAVQGraphicsTransform@@@Z @ 583 NONAME ; void QDeclarativeItemPrivate::transform_append(class QDeclarativeListProperty *, class QGraphicsTransform *) - ?d_func@QDeclarativeComponent@@AAEPAVQDeclarativeComponentPrivate@@XZ @ 584 NONAME ; class QDeclarativeComponentPrivate * QDeclarativeComponent::d_func(void) - ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@@Z @ 585 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &) - ?qt_metacall@QDeclarativeScaleGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 586 NONAME ; int QDeclarativeScaleGrid::qt_metacall(enum QMetaObject::Call, int, void * *) - ?size@QDeclarativePropertyMap@@QBEHXZ @ 587 NONAME ; int QDeclarativePropertyMap::size(void) const - ?cancel@QDeclarativeState@@QAEXXZ @ 588 NONAME ; void QDeclarativeState::cancel(void) - ?qt_metacall@QDeclarativeStateGroup@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 589 NONAME ; int QDeclarativeStateGroup::qt_metacall(enum QMetaObject::Call, int, void * *) - ??0QDeclarativePropertyPrivate@@QAE@XZ @ 590 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(void) - ?getStaticMetaObject@QDeclarativeDebugPropertyWatch@@SAABUQMetaObject@@XZ @ 591 NONAME ; struct QMetaObject const & QDeclarativeDebugPropertyWatch::getStaticMetaObject(void) - ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 592 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *, int) - ?transformOrigin@QDeclarativeItem@@QBE?AW4TransformOrigin@1@XZ @ 593 NONAME ; enum QDeclarativeItem::TransformOrigin QDeclarativeItem::transformOrigin(void) const - ?setState@QDeclarativeDebugWatch@@AAEXW4State@1@@Z @ 594 NONAME ; void QDeclarativeDebugWatch::setState(enum QDeclarativeDebugWatch::State) - ?evaluateEnum@QDeclarativeCustomParser@@IBEHABVQByteArray@@@Z @ 595 NONAME ; int QDeclarativeCustomParser::evaluateEnum(class QByteArray const &) const - ?setState@QDeclarativeDebugQuery@@AAEXW4State@1@@Z @ 596 NONAME ; void QDeclarativeDebugQuery::setState(enum QDeclarativeDebugQuery::State) - ?d_func@QDeclarativeText@@ABEPBVQDeclarativeTextPrivate@@XZ @ 597 NONAME ; class QDeclarativeTextPrivate const * QDeclarativeText::d_func(void) const - ?transitionsProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 598 NONAME ; class QDeclarativeListProperty QDeclarativeStateGroup::transitionsProperty(void) - ?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 599 NONAME ; class QByteArray QDeclarativeType::typeName(void) const - ?asStringList@Variant@QDeclarativeParser@@QBE?AVQStringList@@XZ @ 600 NONAME ; class QStringList QDeclarativeParser::Variant::asStringList(void) const - ?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 601 NONAME ; void QMetaEnumBuilder::removeKey(int) - ?downloadProgress@QDeclarativePixmapReply@@IAEX_J0@Z @ 602 NONAME ABSENT ; void QDeclarativePixmapReply::downloadProgress(long long, long long) - ?addRelatedMetaObject@QMetaObjectBuilder@@QAEHABQ6AABUQMetaObject@@XZ@Z @ 603 NONAME ; int QMetaObjectBuilder::addRelatedMetaObject(struct QMetaObject const & (* const)(void) const &) - ??0QDeclarativeDomValueLiteral@@QAE@XZ @ 604 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(void) - ??_EQDeclarativeDebugObjectExpressionWatch@@UAE@I@Z @ 605 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(unsigned int) - ?computeTransformOrigin@QDeclarativeItemPrivate@@QBE?AVQPointF@@XZ @ 606 NONAME ; class QPointF QDeclarativeItemPrivate::computeTransformOrigin(void) const - ??0QDeclarativeListReference@@QAE@PAVQObject@@PBDPAVQDeclarativeEngine@@@Z @ 607 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QObject *, char const *, class QDeclarativeEngine *) - ?setData@QListModelInterface@@UAE_NHABV?$QHash@HVQVariant@@@@@Z @ 608 NONAME ; bool QListModelInterface::setData(int, class QHash const &) - ??0QDeclarativePen@@QAE@PAVQObject@@@Z @ 609 NONAME ; QDeclarativePen::QDeclarativePen(class QObject *) - ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 610 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *, int) - ?setContextObject@QDeclarativeContext@@QAEXPAVQObject@@@Z @ 611 NONAME ; void QDeclarativeContext::setContextObject(class QObject *) - ??_EQDeclarativeState@@UAE@I@Z @ 612 NONAME ; QDeclarativeState::~QDeclarativeState(unsigned int) - ?expression@QDeclarativeExpression@@QBE?AVQString@@XZ @ 613 NONAME ; class QString QDeclarativeExpression::expression(void) const - ??1QDeclarativeDomDocument@@QAE@XZ @ 614 NONAME ; QDeclarativeDomDocument::~QDeclarativeDomDocument(void) - ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 615 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *, int) - ?asNumber@Variant@QDeclarativeParser@@QBENXZ @ 616 NONAME ; double QDeclarativeParser::Variant::asNumber(void) const - ?d_func@QDeclarativeDebugClient@@ABEPBVQDeclarativeDebugClientPrivate@@XZ @ 617 NONAME ; class QDeclarativeDebugClientPrivate const * QDeclarativeDebugClient::d_func(void) const - ?sceneEvent@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 618 NONAME ; bool QDeclarativeItem::sceneEvent(class QEvent *) - ??0QDeclarativeDebugRootContextQuery@@AAE@PAVQObject@@@Z @ 619 NONAME ; QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(class QObject *) - ?name@QDeclarativeDebugEngineReference@@QBE?AVQString@@XZ @ 620 NONAME ; class QString QDeclarativeDebugEngineReference::name(void) const - ??_EQDeclarativeTransition@@UAE@I@Z @ 621 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(unsigned int) - ??0QDeclarativeAction@@QAE@ABV0@@Z @ 622 NONAME ; QDeclarativeAction::QDeclarativeAction(class QDeclarativeAction const &) - ?extends@QDeclarativeState@@QBE?AVQString@@XZ @ 623 NONAME ; class QString QDeclarativeState::extends(void) const - ?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserProperty@@ABVQString@@@Z @ 624 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserProperty const &, class QString const &) - ??0QDeclarativeCustomParserNode@@QAE@XZ @ 625 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(void) - ?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 626 NONAME ; class QString QDeclarativeDomImport::version(void) const - ?smooth@QDeclarativeItem@@QBE_NXZ @ 627 NONAME ; bool QDeclarativeItem::smooth(void) const - ?implicitSize@QDeclarativePixmapReply@@QBE?AVQSize@@XZ @ 628 NONAME ABSENT ; class QSize QDeclarativePixmapReply::implicitSize(void) const - ??1QDeclarativeInfo@@QAE@XZ @ 629 NONAME ; QDeclarativeInfo::~QDeclarativeInfo(void) - ?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 630 NONAME ; void * QDeclarativeStateOperation::qt_metacast(char const *) - ??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 631 NONAME ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &) - ?isValueType@QDeclarativePropertyPrivate@@QBE_NXZ @ 632 NONAME ; bool QDeclarativePropertyPrivate::isValueType(void) const - ??0QDeclarativeDomValueValueSource@@QAE@ABV0@@Z @ 633 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(class QDeclarativeDomValueValueSource const &) - ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 634 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *, int) - ??_EQDeclarativeDebugExpressionQuery@@UAE@I@Z @ 635 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(unsigned int) - ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 636 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *, int) - ?qt_metacall@QDeclarativeDebugObjectExpressionWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 637 NONAME ; int QDeclarativeDebugObjectExpressionWatch::qt_metacall(enum QMetaObject::Call, int, void * *) - ?d_func@QDeclarativeItem@@AAEPAVQDeclarativeItemPrivate@@XZ @ 638 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItem::d_func(void) - ?binding@QDeclarativeDomValueBinding@@QBE?AVQString@@XZ @ 639 NONAME ; class QString QDeclarativeDomValueBinding::binding(void) const - ?updateAutoState@QDeclarativeStateGroup@@AAE_NXZ @ 640 NONAME ; bool QDeclarativeStateGroup::updateAutoState(void) - ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 641 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *) - ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 642 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *, int) - ??1QDeclarativeProperty@@QAE@XZ @ 643 NONAME ; QDeclarativeProperty::~QDeclarativeProperty(void) - ?fontChanged@QDeclarativeText@@IAEXABVQFont@@@Z @ 644 NONAME ; void QDeclarativeText::fontChanged(class QFont const &) - ?removeItemChangeListener@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItemChangeListener@@V?$QFlags@W4ChangeType@QDeclarativeItemPrivate@@@@@Z @ 645 NONAME ; void QDeclarativeItemPrivate::removeItemChangeListener(class QDeclarativeItemChangeListener *, class QFlags) - ?isList@QDeclarativeDomValue@@QBE_NXZ @ 646 NONAME ; bool QDeclarativeDomValue::isList(void) const - ?insert@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 647 NONAME ; void QDeclarativeListModel::insert(int, class QScriptValue const &) - ?staticMetaObject@QDeclarativeListModel@@2UQMetaObject@@B @ 648 NONAME ; struct QMetaObject const QDeclarativeListModel::staticMetaObject - ?indexOfConstructor@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 649 NONAME ; int QMetaObjectBuilder::indexOfConstructor(class QByteArray const &) - ?lineNumber@QDeclarativeExpression@@QBEHXZ @ 650 NONAME ; int QDeclarativeExpression::lineNumber(void) const - ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 651 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *, int) - ?toString@QDeclarativeError@@QBE?AVQString@@XZ @ 652 NONAME ; class QString QDeclarativeError::toString(void) const - ?index@QMetaPropertyBuilder@@QBEHXZ @ 653 NONAME ; int QMetaPropertyBuilder::index(void) const - ?commaPositions@QDeclarativeDomList@@QBE?AV?$QList@H@@XZ @ 654 NONAME ; class QList QDeclarativeDomList::commaPositions(void) const - ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 655 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *) - ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 656 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *) - ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 657 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *) - ?setTextFormat@QDeclarativeText@@QAEXW4TextFormat@1@@Z @ 658 NONAME ; void QDeclarativeText::setTextFormat(enum QDeclarativeText::TextFormat) - ?parserStatusCast@QDeclarativeType@@QBEHXZ @ 659 NONAME ; int QDeclarativeType::parserStatusCast(void) const - ??_EQListModelInterface@@UAE@I@Z @ 660 NONAME ; QListModelInterface::~QListModelInterface(unsigned int) - ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 661 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *) - ?getStaticMetaObject@QDeclarativeListModel@@SAABUQMetaObject@@XZ @ 662 NONAME ; struct QMetaObject const & QDeclarativeListModel::getStaticMetaObject(void) - ?setStdCppSet@QMetaPropertyBuilder@@QAEX_N@Z @ 663 NONAME ; void QMetaPropertyBuilder::setStdCppSet(bool) - ??0QDeclarativeItemPrivate@@QAE@XZ @ 664 NONAME ; QDeclarativeItemPrivate::QDeclarativeItemPrivate(void) - ??0QDeclarativeDebugService@@QAE@ABVQString@@PAVQObject@@@Z @ 665 NONAME ; QDeclarativeDebugService::QDeclarativeDebugService(class QString const &, class QObject *) - ??_EQPacketAutoSend@@UAE@I@Z @ 666 NONAME ; QPacketAutoSend::~QPacketAutoSend(unsigned int) - ?saveValueType@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H0H@Z @ 667 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveValueType(struct QMetaObject const *, int, struct QMetaObject const *, int) - ?resetHeight@QDeclarativeItem@@QAEXXZ @ 668 NONAME ; void QDeclarativeItem::resetHeight(void) - ?setVAlign@QDeclarativeText@@QAEXW4VAlignment@1@@Z @ 669 NONAME ; void QDeclarativeText::setVAlign(enum QDeclarativeText::VAlignment) - ??1QDeclarativeDebugService@@UAE@XZ @ 670 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(void) - ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 671 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *, int) - ?elideMode@QDeclarativeText@@QBE?AW4TextElideMode@1@XZ @ 672 NONAME ; enum QDeclarativeText::TextElideMode QDeclarativeText::elideMode(void) const - ?baseUrl@QDeclarativeContext@@QBE?AVQUrl@@XZ @ 673 NONAME ; class QUrl QDeclarativeContext::baseUrl(void) const - ?qt_metacall@QDeclarativeDebugRootContextQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 674 NONAME ; int QDeclarativeDebugRootContextQuery::qt_metacall(enum QMetaObject::Call, int, void * *) - ?isNamed@QDeclarativeState@@QBE_NXZ @ 675 NONAME ; bool QDeclarativeState::isNamed(void) const - ?isString@Variant@QDeclarativeParser@@QBE_NXZ @ 676 NONAME ; bool QDeclarativeParser::Variant::isString(void) const - ?restart@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 677 NONAME ; long long QDeclarativeItemPrivate::restart(class QElapsedTimer &) - ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 678 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *, int) - ?qt_metacast@QDeclarativeTransition@@UAEPAXPBD@Z @ 679 NONAME ; void * QDeclarativeTransition::qt_metacast(char const *) - ?timeFromString@QDeclarativeStringConverters@@YA?AVQTime@@ABVQString@@PA_N@Z @ 680 NONAME ; class QTime QDeclarativeStringConverters::timeFromString(class QString const &, bool *) - ?d_func@QDeclarativeDebugClient@@AAEPAVQDeclarativeDebugClientPrivate@@XZ @ 681 NONAME ; class QDeclarativeDebugClientPrivate * QDeclarativeDebugClient::d_func(void) - ??1QDeclarativeType@@AAE@XZ @ 682 NONAME ; QDeclarativeType::~QDeclarativeType(void) - ?colorFromString@QDeclarativeStringConverters@@YA?AVQColor@@ABVQString@@PA_N@Z @ 683 NONAME ; class QColor QDeclarativeStringConverters::colorFromString(class QString const &, bool *) - ??_EQPacketProtocol@@UAE@I@Z @ 684 NONAME ; QPacketProtocol::~QPacketProtocol(unsigned int) - ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 685 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *) - ??0QDeclarativeDebugObjectReference@@QAE@XZ @ 686 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(void) - ?staticMetaObject@QDeclarativeExtensionPlugin@@2UQMetaObject@@B @ 687 NONAME ; struct QMetaObject const QDeclarativeExtensionPlugin::staticMetaObject - ?isNull@QDeclarativeScaleGrid@@QBE_NXZ @ 688 NONAME ; bool QDeclarativeScaleGrid::isNull(void) const - ??_EQDeclarativeStateOperation@@UAE@I@Z @ 689 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(unsigned int) - ??6QDeclarativeInfo@@QAEAAV0@H@Z @ 690 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(int) - ??0QDeclarativeDomDynamicProperty@@QAE@XZ @ 691 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(void) - ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 692 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *, int) - ?type@QDeclarativeProperty@@QBE?AW4Type@1@XZ @ 693 NONAME ; enum QDeclarativeProperty::Type QDeclarativeProperty::type(void) const - ??0QDeclarativeDebugQuery@@IAE@PAVQObject@@@Z @ 694 NONAME ; QDeclarativeDebugQuery::QDeclarativeDebugQuery(class QObject *) - ?baselineOffset@QDeclarativeAnchors@@QBEMXZ @ 695 NONAME ; float QDeclarativeAnchors::baselineOffset(void) const - ??4QDeclarativeDomDocument@@QAEAAV0@ABV0@@Z @ 696 NONAME ; class QDeclarativeDomDocument & QDeclarativeDomDocument::operator=(class QDeclarativeDomDocument const &) - ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@PAVQDeclarativeOpenMetaObjectType@@_N@Z @ 697 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, class QDeclarativeOpenMetaObjectType *, bool) - ?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 698 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *) - ??0QPacketProtocol@@QAE@PAVQIODevice@@PAVQObject@@@Z @ 699 NONAME ; QPacketProtocol::QPacketProtocol(class QIODevice *, class QObject *) - ??1QDeclarativeListReference@@QAE@XZ @ 700 NONAME ; QDeclarativeListReference::~QDeclarativeListReference(void) - ?clearError@QDeclarativeExpression@@QAEXXZ @ 701 NONAME ; void QDeclarativeExpression::clearError(void) - ?setLineNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 702 NONAME ; void QDeclarativeDebugFileReference::setLineNumber(int) - ?qt_metacall@QDeclarativeExtensionPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 703 NONAME ; int QDeclarativeExtensionPlugin::qt_metacall(enum QMetaObject::Call, int, void * *) - ?boundingRect@QDeclarativeText@@UBE?AVQRectF@@XZ @ 704 NONAME ; class QRectF QDeclarativeText::boundingRect(void) const - ?setColor@QDeclarativePen@@QAEXABVQColor@@@Z @ 705 NONAME ; void QDeclarativePen::setColor(class QColor const &) - ??0QDeclarativeDomImport@@QAE@XZ @ 706 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(void) - ?clearErrors@QDeclarativeCustomParser@@QAEXXZ @ 707 NONAME ; void QDeclarativeCustomParser::clearErrors(void) - ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 708 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *, int) - ?toRelocatableData@QMetaObjectBuilder@@QBE?AVQByteArray@@PA_N@Z @ 709 NONAME ; class QByteArray QMetaObjectBuilder::toRelocatableData(bool *) const - ?qt_metacast@QDeclarativeView@@UAEPAXPBD@Z @ 710 NONAME ; void * QDeclarativeView::qt_metacast(char const *) - ?mapToItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 711 NONAME ; class QScriptValue QDeclarativeItem::mapToItem(class QScriptValue const &, float, float) const - ?setPluginPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 712 NONAME ; void QDeclarativeEngine::setPluginPathList(class QStringList const &) - ?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 713 NONAME ; struct QMetaObject const * QDeclarativeState::metaObject(void) const - ?errorString@QDeclarativePixmapReply@@QBE?AVQString@@XZ @ 714 NONAME ABSENT ; class QString QDeclarativePixmapReply::errorString(void) const - ?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 715 NONAME ; class QRectF QDeclarativeRectangle::boundingRect(void) const - ?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 716 NONAME ; class QString QDeclarativeDomImport::uri(void) const - ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@PAVQObject@@@Z @ 717 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QObject *) - ?setBaseUrl@QDeclarativeEngine@@QAEXABVQUrl@@@Z @ 718 NONAME ; void QDeclarativeEngine::setBaseUrl(class QUrl const &) - ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 719 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *, int) - ?setScriptable@QMetaPropertyBuilder@@QAEX_N@Z @ 720 NONAME ; void QMetaPropertyBuilder::setScriptable(bool) - ??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeEngine@@@Z @ 721 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeEngine *) - ?itemsInserted@QListModelInterface@@IAEXHH@Z @ 722 NONAME ; void QListModelInterface::itemsInserted(int, int) - ?generateBorderedRect@QDeclarativeRectangle@@AAEXXZ @ 723 NONAME ; void QDeclarativeRectangle::generateBorderedRect(void) - ?verticalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 724 NONAME ; void QDeclarativeAnchors::verticalCenterOffsetChanged(void) - ?width@QDeclarativeItem@@QBEMXZ @ 725 NONAME ; float QDeclarativeItem::width(void) const - ?isValueInterceptor@QDeclarativeDomValue@@QBE_NXZ @ 726 NONAME ; bool QDeclarativeDomValue::isValueInterceptor(void) const - ?transform_at@QDeclarativeItemPrivate@@SAPAVQGraphicsTransform@@PAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@H@Z @ 727 NONAME ; class QGraphicsTransform * QDeclarativeItemPrivate::transform_at(class QDeclarativeListProperty *, int) - ??1QDeclarativeDomValueBinding@@QAE@XZ @ 728 NONAME ; QDeclarativeDomValueBinding::~QDeclarativeDomValueBinding(void) - ?qt_metacast@QDeclarativeAnchors@@UAEPAXPBD@Z @ 729 NONAME ; void * QDeclarativeAnchors::qt_metacast(char const *) - ?isInterface@QDeclarativeMetaType@@SA_NH@Z @ 730 NONAME ; bool QDeclarativeMetaType::isInterface(int) - ?qt_metacall@QDeclarativeRectangle@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 731 NONAME ; int QDeclarativeRectangle::qt_metacall(enum QMetaObject::Call, int, void * *) - ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 732 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *, int) - ??0Variant@QDeclarativeParser@@QAE@ABVQString@@PAVNode@AST@QDeclarativeJS@@@Z @ 733 NONAME ; QDeclarativeParser::Variant::Variant(class QString const &, class QDeclarativeJS::AST::Node *) - ?rootObject@QDeclarativeDomDocument@@QBE?AVQDeclarativeDomObject@@XZ @ 734 NONAME ; class QDeclarativeDomObject QDeclarativeDomDocument::rootObject(void) const - ?rightChanged@QDeclarativeAnchors@@IAEXXZ @ 735 NONAME ; void QDeclarativeAnchors::rightChanged(void) - ??6QDeclarativeInfo@@QAEAAV0@ABVQByteArray@@@Z @ 736 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QByteArray const &) - ?qt_metacast@QDeclarativeEngine@@UAEPAXPBD@Z @ 737 NONAME ; void * QDeclarativeEngine::qt_metacast(char const *) - ?objectType@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 738 NONAME ; class QByteArray QDeclarativeDomObject::objectType(void) const - ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 739 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QByteArray const &) - ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 740 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeContext *) - ?staticMetaObject@QDeclarativeDebugExpressionQuery@@2UQMetaObject@@B @ 741 NONAME ; struct QMetaObject const QDeclarativeDebugExpressionQuery::staticMetaObject - ?queryRootContexts@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugRootContextQuery@@ABVQDeclarativeDebugEngineReference@@PAVQObject@@@Z @ 742 NONAME ; class QDeclarativeDebugRootContextQuery * QDeclarativeEngineDebug::queryRootContexts(class QDeclarativeDebugEngineReference const &, class QObject *) - ?vector3DFromString@QDeclarativeStringConverters@@YA?AVQVector3D@@ABVQString@@PA_N@Z @ 743 NONAME ; class QVector3D QDeclarativeStringConverters::vector3DFromString(class QString const &, bool *) - ??_EQDeclarativeDebugPropertyWatch@@UAE@I@Z @ 744 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(unsigned int) - ?relatedMetaObjectCount@QMetaObjectBuilder@@QBEHXZ @ 745 NONAME ; int QMetaObjectBuilder::relatedMetaObjectCount(void) const - ?script@QDeclarativeScriptString@@QBE?AVQString@@XZ @ 746 NONAME ; class QString QDeclarativeScriptString::script(void) const - ?index@QMetaMethodBuilder@@QBEHXZ @ 747 NONAME ; int QMetaMethodBuilder::index(void) const - ??4QDeclarativeDomValueBinding@@QAEAAV0@ABV0@@Z @ 748 NONAME ; class QDeclarativeDomValueBinding & QDeclarativeDomValueBinding::operator=(class QDeclarativeDomValueBinding const &) - ??0QDeclarativeExpression@@QAE@XZ @ 749 NONAME ; QDeclarativeExpression::QDeclarativeExpression(void) - ?paint@QDeclarativeItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 750 NONAME ; void QDeclarativeItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) - ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 751 NONAME ; class QPacketAutoSend QPacketProtocol::send(void) - ?countChanged@QDeclarativeListModel@@IAEXXZ @ 752 NONAME ; void QDeclarativeListModel::countChanged(void) - ?setBindingForObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@ABVQVariant@@_NPAVQObject@@@Z @ 753 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool, class QObject *) - ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 754 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *) - ??_EQDeclarativeBinding@@UAE@I@Z @ 755 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int) - ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 756 NONAME ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const - ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 757 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *) - ?staticMetaObject@QDeclarativeBinding@@2UQMetaObject@@B @ 758 NONAME ; struct QMetaObject const QDeclarativeBinding::staticMetaObject - ?qualifier@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 759 NONAME ; class QString QDeclarativeDomImport::qualifier(void) const - ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 760 NONAME ABSENT ; class QString QDeclarativePixmapCache::tr(char const *, char const *, int) - ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 761 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeContext *) - ?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 762 NONAME ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *) - ?contains@QDeclarativePropertyMap@@QBE_NABVQString@@@Z @ 763 NONAME ; bool QDeclarativePropertyMap::contains(class QString const &) const - ?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 764 NONAME ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *) - ?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 765 NONAME ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const - ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 766 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *) - ??0QDeclarativePixmapReply@@AAE@PAVQDeclarativeImageReader@@ABVQUrl@@HH@Z @ 767 NONAME ABSENT ; QDeclarativePixmapReply::QDeclarativePixmapReply(class QDeclarativeImageReader *, class QUrl const &, int, int) - ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 768 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *, int) - ?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 769 NONAME ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const - ?hasNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 770 NONAME ; bool QDeclarativeProperty::hasNotifySignal(void) const - ?create@QDeclarativeType@@QBEXPAPAVQObject@@PAPAXI@Z @ 771 NONAME ; void QDeclarativeType::create(class QObject * *, void * *, unsigned int) const - ?reversible@QDeclarativeTransition@@QBE_NXZ @ 772 NONAME ; bool QDeclarativeTransition::reversible(void) const - ?invalidPacket@QPacketProtocol@@IAEXXZ @ 773 NONAME ; void QPacketProtocol::invalidPacket(void) - ??0QDeclarativeDebugObjectReference@@QAE@H@Z @ 774 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int) - ?superClass@QMetaObjectBuilder@@QBEPBUQMetaObject@@XZ @ 775 NONAME ; struct QMetaObject const * QMetaObjectBuilder::superClass(void) const - ?isValid@QDeclarativeListReference@@QBE_NXZ @ 776 NONAME ; bool QDeclarativeListReference::isValid(void) const - ?source@QDeclarativeView@@QBE?AVQUrl@@XZ @ 777 NONAME ; class QUrl QDeclarativeView::source(void) const - ?method@QDeclarativeProperty@@QBE?AVQMetaMethod@@XZ @ 778 NONAME ; class QMetaMethod QDeclarativeProperty::method(void) const - ??0QDeclarativeInfo@@QAE@ABV0@@Z @ 779 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfo const &) - ?deleteFromBinding@QDeclarativeAction@@QAEXXZ @ 780 NONAME ; void QDeclarativeAction::deleteFromBinding(void) - ?setClip@QDeclarativeItem@@QAEX_N@Z @ 781 NONAME ; void QDeclarativeItem::setClip(bool) - ??4QDeclarativeCustomParserNode@@QAEAAV0@ABV0@@Z @ 782 NONAME ; class QDeclarativeCustomParserNode & QDeclarativeCustomParserNode::operator=(class QDeclarativeCustomParserNode const &) - ?color@QDeclarativePen@@QBE?AVQColor@@XZ @ 783 NONAME ; class QColor QDeclarativePen::color(void) const - ?setDesignable@QMetaPropertyBuilder@@QAEX_N@Z @ 784 NONAME ; void QMetaPropertyBuilder::setDesignable(bool) - ?setWrapMode@QDeclarativeText@@QAEXW4WrapMode@1@@Z @ 785 NONAME ; void QDeclarativeText::setWrapMode(enum QDeclarativeText::WrapMode) - ?addClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@0@Z @ 786 NONAME ; int QMetaObjectBuilder::addClassInfo(class QByteArray const &, class QByteArray const &) - ?qt_metacall@QDeclarativePen@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 787 NONAME ; int QDeclarativePen::qt_metacall(enum QMetaObject::Call, int, void * *) - ?dynamicProperty@QDeclarativeDomObject@@QBE?AVQDeclarativeDomDynamicProperty@@ABVQByteArray@@@Z @ 788 NONAME ; class QDeclarativeDomDynamicProperty QDeclarativeDomObject::dynamicProperty(class QByteArray const &) const - ??1QDeclarativeDomComponent@@QAE@XZ @ 789 NONAME ; QDeclarativeDomComponent::~QDeclarativeDomComponent(void) - ?setRight@QDeclarativeScaleGrid@@QAEXH@Z @ 790 NONAME ; void QDeclarativeScaleGrid::setRight(int) - ?isList@QDeclarativeMetaType@@SA_NH@Z @ 791 NONAME ; bool QDeclarativeMetaType::isList(int) - ??6QDeclarativeInfo@@QAEAAV0@VQTextStreamManipulator@@@Z @ 792 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStreamManipulator) - ?index@QDeclarativeProperty@@QBEHXZ @ 793 NONAME ; int QDeclarativeProperty::index(void) const - ?d_func@QMetaPropertyBuilder@@ABEPAVQMetaPropertyBuilderPrivate@@XZ @ 794 NONAME ; class QMetaPropertyBuilderPrivate * QMetaPropertyBuilder::d_func(void) const - ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 795 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *, int) - ?setEnabled@QDeclarativeAbstractBinding@@QAEX_N@Z @ 796 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool) - ?returnType@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 797 NONAME ; class QByteArray QMetaMethodBuilder::returnType(void) const - ?propertyValueSourceCast@QDeclarativeType@@QBEHXZ @ 798 NONAME ; int QDeclarativeType::propertyValueSourceCast(void) const - ?mousePressEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 799 NONAME ; void QDeclarativeText::mousePressEvent(class QGraphicsSceneMouseEvent *) - ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 800 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *) - ?constructor@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 801 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::constructor(int) const - ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PAVQObject@@@Z @ 802 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(class QObject *) - ?resetHeight@QDeclarativeItemPrivate@@UAEXXZ @ 803 NONAME ; void QDeclarativeItemPrivate::resetHeight(void) - ?qt_metacast@QDeclarativeDebugPropertyWatch@@UAEPAXPBD@Z @ 804 NONAME ; void * QDeclarativeDebugPropertyWatch::qt_metacast(char const *) - ??1QDeclarativeStateOperation@@UAE@XZ @ 805 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(void) - ??_EQDeclarativeDebugQuery@@UAE@I@Z @ 806 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(unsigned int) - ?update@QDeclarativeAbstractBinding@@QAEXXZ @ 807 NONAME ; void QDeclarativeAbstractBinding::update(void) - ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 808 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *, int) - ?read@QPacketProtocol@@QAE?AVQPacket@@XZ @ 809 NONAME ; class QPacket QPacketProtocol::read(void) - ?setParentItem@QDeclarativeItem@@QAEXPAV1@@Z @ 810 NONAME ; void QDeclarativeItem::setParentItem(class QDeclarativeItem *) - ?qmlAttachedProperties@QDeclarativeComponent@@SAPAVQDeclarativeComponentAttached@@PAVQObject@@@Z @ 811 NONAME ; class QDeclarativeComponentAttached * QDeclarativeComponent::qmlAttachedProperties(class QObject *) - ??0QDeclarativeView@@QAE@ABVQUrl@@PAVQWidget@@@Z @ 812 NONAME ; QDeclarativeView::QDeclarativeView(class QUrl const &, class QWidget *) - ?qt_metacall@QDeclarativePixmapReply@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 813 NONAME ABSENT ; int QDeclarativePixmapReply::qt_metacall(enum QMetaObject::Call, int, void * *) - ?valueChanged@QDeclarativeExpression@@IAEXXZ @ 814 NONAME ; void QDeclarativeExpression::valueChanged(void) - ?childrenChanged@QDeclarativeItem@@IAEXXZ @ 815 NONAME ; void QDeclarativeItem::childrenChanged(void) - ??_EQDeclarativeView@@UAE@I@Z @ 816 NONAME ; QDeclarativeView::~QDeclarativeView(unsigned int) - ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 817 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *, int) - ?tag@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 818 NONAME ; class QByteArray QMetaMethodBuilder::tag(void) const - ?getStaticMetaObject@QPacketProtocol@@SAABUQMetaObject@@XZ @ 819 NONAME ; struct QMetaObject const & QPacketProtocol::getStaticMetaObject(void) - ?setContext@QDeclarativeScriptString@@QAEXPAVQDeclarativeContext@@@Z @ 820 NONAME ; void QDeclarativeScriptString::setContext(class QDeclarativeContext *) - ?addImageProvider@QDeclarativeEngine@@QAEXABVQString@@PAVQDeclarativeImageProvider@@@Z @ 821 NONAME ; void QDeclarativeEngine::addImageProvider(class QString const &, class QDeclarativeImageProvider *) - ?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 822 NONAME ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const - ?stateChanged@QDeclarativeItem@@IAEXABVQString@@@Z @ 823 NONAME ; void QDeclarativeItem::stateChanged(class QString const &) - ?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 824 NONAME ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment) - ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 825 NONAME ABSENT ; class QString QDeclarativePixmapCache::tr(char const *, char const *) - ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 826 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &) - ?setDynamic@QMetaPropertyBuilder@@QAEX_N@Z @ 827 NONAME ; void QMetaPropertyBuilder::setDynamic(bool) - ?d_func@QDeclarativeEngine@@ABEPBVQDeclarativeEnginePrivate@@XZ @ 828 NONAME ; class QDeclarativeEnginePrivate const * QDeclarativeEngine::d_func(void) const - ?toBinding@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueBinding@@XZ @ 829 NONAME ; class QDeclarativeDomValueBinding QDeclarativeDomValue::toBinding(void) const - ?removeImageProvider@QDeclarativeEngine@@QAEXABVQString@@@Z @ 830 NONAME ; void QDeclarativeEngine::removeImageProvider(class QString const &) - ?horizontalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 831 NONAME ; void QDeclarativeAnchors::horizontalCenterOffsetChanged(void) - ?tr@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 832 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *) - ?d_func@QDeclarativeItem@@ABEPBVQDeclarativeItemPrivate@@XZ @ 833 NONAME ; class QDeclarativeItemPrivate const * QDeclarativeItem::d_func(void) const - ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 834 NONAME ABSENT ; class QString QDeclarativePixmapReply::tr(char const *, char const *) - ?isUser@QMetaPropertyBuilder@@QBE_NXZ @ 835 NONAME ; bool QMetaPropertyBuilder::isUser(void) const - ?doUpdate@QDeclarativeRectangle@@AAEXXZ @ 836 NONAME ; void QDeclarativeRectangle::doUpdate(void) - ?qmlExecuteDeferred@@YAXPAVQObject@@@Z @ 837 NONAME ; void qmlExecuteDeferred(class QObject *) - ?setImplicitHeight@QDeclarativeItem@@IAEXM@Z @ 838 NONAME ; void QDeclarativeItem::setImplicitHeight(float) - ?horizontalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 839 NONAME ; float QDeclarativeAnchors::horizontalCenterOffset(void) const - ?resetRight@QDeclarativeAnchors@@QAEXXZ @ 840 NONAME ; void QDeclarativeAnchors::resetRight(void) - ??6QDeclarativeInfo@@QAEAAV0@J@Z @ 841 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long) - ?isReady@QDeclarativeComponent@@QBE_NXZ @ 842 NONAME ; bool QDeclarativeComponent::isReady(void) const - ??4QDeclarativeDebugObjectReference@@QAEAAV0@ABV0@@Z @ 843 NONAME ; class QDeclarativeDebugObjectReference & QDeclarativeDebugObjectReference::operator=(class QDeclarativeDebugObjectReference const &) - ??1QDeclarativeDomDynamicProperty@@QAE@XZ @ 844 NONAME ; QDeclarativeDomDynamicProperty::~QDeclarativeDomDynamicProperty(void) - ??1QDeclarativeBehavior@@UAE@XZ @ 845 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(void) - ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@@Z @ 846 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *) - ?qt_metacall@QDeclarativeDebugClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 847 NONAME ; int QDeclarativeDebugClient::qt_metacall(enum QMetaObject::Call, int, void * *) - ?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 848 NONAME ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const - ??1QDeclarativeDebugQuery@@UAE@XZ @ 849 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void) - ?data_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 850 NONAME ; void QDeclarativeItemPrivate::data_append(class QDeclarativeListProperty *, class QObject *) - ??1QDeclarativePixmapReply@@UAE@XZ @ 851 NONAME ABSENT ; QDeclarativePixmapReply::~QDeclarativePixmapReply(void) - ?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 852 NONAME ; class QString QDeclarativeState::tr(char const *, char const *) - ?isLoading@QDeclarativePixmapReply@@ABE_NXZ @ 853 NONAME ABSENT ; bool QDeclarativePixmapReply::isLoading(void) const - ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 854 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int) - ?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 855 NONAME ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *) - ?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 856 NONAME ; float QDeclarativeAnchors::bottomMargin(void) const - ?q_func@QDeclarativeItemPrivate@@AAEPAVQDeclarativeItem@@XZ @ 857 NONAME ; class QDeclarativeItem * QDeclarativeItemPrivate::q_func(void) - ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 858 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *) - ??1QDeclarativeDomList@@QAE@XZ @ 859 NONAME ; QDeclarativeDomList::~QDeclarativeDomList(void) - ??0QDeclarativeOpenMetaObjectType@@QAE@PBUQMetaObject@@PAVQDeclarativeEngine@@@Z @ 860 NONAME ; QDeclarativeOpenMetaObjectType::QDeclarativeOpenMetaObjectType(struct QMetaObject const *, class QDeclarativeEngine *) - ?removeProperty@QMetaObjectBuilder@@QAEXH@Z @ 861 NONAME ; void QMetaObjectBuilder::removeProperty(int) - ?staticMetaObject@QDeclarativeScaleGrid@@2UQMetaObject@@B @ 862 NONAME ; struct QMetaObject const QDeclarativeScaleGrid::staticMetaObject - ??0QDeclarativeDomObject@@QAE@ABV0@@Z @ 863 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(class QDeclarativeDomObject const &) - ?qt_metacast@QDeclarativeDebugWatch@@UAEPAXPBD@Z @ 864 NONAME ; void * QDeclarativeDebugWatch::qt_metacast(char const *) - ?implicitHeight@QDeclarativeItem@@QBEMXZ @ 865 NONAME ; float QDeclarativeItem::implicitHeight(void) const - ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 866 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *) - ?status@QDeclarativePixmapReply@@QBE?AW4Status@1@XZ @ 867 NONAME ABSENT ; enum QDeclarativePixmapReply::Status QDeclarativePixmapReply::status(void) const - ??6@YA?AVQDebug@@V0@ABVQDeclarativeError@@@Z @ 868 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeError const &) - ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@ABVQVariant@@@Z @ 869 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QVariant const &) - ?imports@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeDomImport@@@@XZ @ 870 NONAME ; class QList QDeclarativeDomDocument::imports(void) const - ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 871 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *) - ?getStaticMetaObject@QDeclarativePen@@SAABUQMetaObject@@XZ @ 872 NONAME ; struct QMetaObject const & QDeclarativePen::getStaticMetaObject(void) - ?penChanged@QDeclarativePen@@IAEXXZ @ 873 NONAME ; void QDeclarativePen::penChanged(void) - ?propertyTypeName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 874 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyTypeName(void) const - ?position@QDeclarativeDomValue@@QBEHXZ @ 875 NONAME ; int QDeclarativeDomValue::position(void) const - ?setWidth@QDeclarativeItemPrivate@@UAEXM@Z @ 876 NONAME ; void QDeclarativeItemPrivate::setWidth(float) - ?staticMetaObject@QDeclarativeDebugWatch@@2UQMetaObject@@B @ 877 NONAME ; struct QMetaObject const QDeclarativeDebugWatch::staticMetaObject - ??_EQDeclarativeContext@@UAE@I@Z @ 878 NONAME ; QDeclarativeContext::~QDeclarativeContext(unsigned int) - ?rootContext@QDeclarativeView@@QAEPAVQDeclarativeContext@@XZ @ 879 NONAME ; class QDeclarativeContext * QDeclarativeView::rootContext(void) - ?staticMetaObject@QDeclarativeDebugQuery@@2UQMetaObject@@B @ 880 NONAME ; struct QMetaObject const QDeclarativeDebugQuery::staticMetaObject - ??0QDeclarativeExtensionPlugin@@QAE@PAVQObject@@@Z @ 881 NONAME ; QDeclarativeExtensionPlugin::QDeclarativeExtensionPlugin(class QObject *) - ??_EQDeclarativeOpenMetaObject@@UAE@I@Z @ 882 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(unsigned int) - ?states@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 883 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::states(void) - ?rawMetaObjectForType@QDeclarativePropertyPrivate@@SAPBUQMetaObject@@PAVQDeclarativeEnginePrivate@@H@Z @ 884 NONAME ; struct QMetaObject const * QDeclarativePropertyPrivate::rawMetaObjectForType(class QDeclarativeEnginePrivate *, int) - ?setHeight@QDeclarativeItem@@QAEXM@Z @ 885 NONAME ; void QDeclarativeItem::setHeight(float) - ??0QDeclarativeDomDocument@@QAE@ABV0@@Z @ 886 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(class QDeclarativeDomDocument const &) - ?position@QDeclarativeDomDynamicProperty@@QBEHXZ @ 887 NONAME ; int QDeclarativeDomDynamicProperty::position(void) const - ?animations@QDeclarativeTransition@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeAbstractAnimation@@@@XZ @ 888 NONAME ; class QDeclarativeListProperty QDeclarativeTransition::animations(void) - ?tr@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 889 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *, int) - ??_EQMetaObjectBuilder@@UAE@I@Z @ 890 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(unsigned int) - ?propertyName@QDeclarativeDomProperty@@QBE?AVQByteArray@@XZ @ 891 NONAME ; class QByteArray QDeclarativeDomProperty::propertyName(void) const - ??0QDeclarativeView@@QAE@PAVQWidget@@@Z @ 892 NONAME ; QDeclarativeView::QDeclarativeView(class QWidget *) - ?createObject@QDeclarativeComponent@@IAE?AVQScriptValue@@PAVQObject@@@Z @ 893 NONAME ; class QScriptValue QDeclarativeComponent::createObject(class QObject *) - ?name@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 894 NONAME ; class QString QDeclarativeDebugPropertyReference::name(void) const - ?object@QDeclarativeDomValueValueSource@@QBE?AVQDeclarativeDomObject@@XZ @ 895 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueSource::object(void) const - ??0QMetaPropertyBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 896 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(class QMetaObjectBuilder const *, int) - ?d_func@QDeclarativeEngineDebug@@ABEPBVQDeclarativeEngineDebugPrivate@@XZ @ 897 NONAME ; class QDeclarativeEngineDebugPrivate const * QDeclarativeEngineDebug::d_func(void) const - ?d_func@QDeclarativeBinding@@AAEPAVQDeclarativeBindingPrivate@@XZ @ 898 NONAME ; class QDeclarativeBindingPrivate * QDeclarativeBinding::d_func(void) - ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 899 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *, int) - ?attachedPropertiesFuncId@QDeclarativeMetaType@@SAHPBUQMetaObject@@@Z @ 900 NONAME ; int QDeclarativeMetaType::attachedPropertiesFuncId(struct QMetaObject const *) - ?horizontalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 901 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::horizontalCenter(void) const - ?isNull@QDeclarativeComponent@@QBE_NXZ @ 902 NONAME ; bool QDeclarativeComponent::isNull(void) const - ?d_func@QDeclarativeRectangle@@ABEPBVQDeclarativeRectanglePrivate@@XZ @ 903 NONAME ; class QDeclarativeRectanglePrivate const * QDeclarativeRectangle::d_func(void) const - ?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 904 NONAME ; void QDeclarativeAnchors::setRightMargin(float) - ?className@QMetaObjectBuilder@@QBE?AVQByteArray@@XZ @ 905 NONAME ; class QByteArray QMetaObjectBuilder::className(void) const - ??0QDeclarativeState@@QAE@PAVQObject@@@Z @ 906 NONAME ; QDeclarativeState::QDeclarativeState(class QObject *) - ?contexts@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugContextReference@@@@XZ @ 907 NONAME ; class QList QDeclarativeDebugContextReference::contexts(void) const - ?keyReleaseEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 908 NONAME ; void QDeclarativeItem::keyReleaseEvent(class QKeyEvent *) - ?qt_metacall@QDeclarativeAnchors@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 909 NONAME ; int QDeclarativeAnchors::qt_metacall(enum QMetaObject::Call, int, void * *) - ??0QDeclarativeAnchors@@QAE@PAVQGraphicsObject@@PAVQObject@@@Z @ 910 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QGraphicsObject *, class QObject *) - ??4QDeclarativeScriptString@@QAEAAV0@ABV0@@Z @ 911 NONAME ; class QDeclarativeScriptString & QDeclarativeScriptString::operator=(class QDeclarativeScriptString const &) - ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 912 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty const &) - ?hasNotifySignal@QMetaPropertyBuilder@@QBE_NXZ @ 913 NONAME ; bool QMetaPropertyBuilder::hasNotifySignal(void) const - ??4QDeclarativeDomImport@@QAEAAV0@ABV0@@Z @ 914 NONAME ; class QDeclarativeDomImport & QDeclarativeDomImport::operator=(class QDeclarativeDomImport const &) - ?resetFill@QDeclarativeAnchors@@QAEXXZ @ 915 NONAME ; void QDeclarativeAnchors::resetFill(void) - ??6QDeclarativeInfo@@QAEAAV0@_K@Z @ 916 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long long) - ?d_func@QDeclarativeComponent@@ABEPBVQDeclarativeComponentPrivate@@XZ @ 917 NONAME ; class QDeclarativeComponentPrivate const * QDeclarativeComponent::d_func(void) const - ??0QDeclarativeBehavior@@QAE@PAVQObject@@@Z @ 918 NONAME ; QDeclarativeBehavior::QDeclarativeBehavior(class QObject *) - ?length@QDeclarativeDomValue@@QBEHXZ @ 919 NONAME ; int QDeclarativeDomValue::length(void) const - ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 920 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *, int) - ??0QDeclarativeType@@AAE@HABURegisterInterface@QDeclarativePrivate@@@Z @ 921 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterInterface const &) - ?scopeObject@QDeclarativeScriptString@@QBEPAVQObject@@XZ @ 922 NONAME ; class QObject * QDeclarativeScriptString::scopeObject(void) const - ?left@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 923 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::left(void) const - ??1QDeclarativeDebuggerStatus@@UAE@XZ @ 924 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(void) - ??6QDeclarativeInfo@@QAEAAV0@ABVQLatin1String@@@Z @ 925 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QLatin1String const &) - ?at@QDeclarativeListReference@@QBEPAVQObject@@H@Z @ 926 NONAME ; class QObject * QDeclarativeListReference::at(int) const - ?metaObject@QDeclarativeDebugWatch@@UBEPBUQMetaObject@@XZ @ 927 NONAME ; struct QMetaObject const * QDeclarativeDebugWatch::metaObject(void) const - ?qt_metacast@QListModelInterface@@UAEPAXPBD@Z @ 928 NONAME ; void * QListModelInterface::qt_metacast(char const *) - ?deserialize@QMetaObjectBuilder@@QAEXAAVQDataStream@@ABV?$QMap@VQByteArray@@PB$$CBUQMetaObject@@@@@Z @ 929 NONAME ; void QMetaObjectBuilder::deserialize(class QDataStream &, class QMap const &) - ?canClear@QDeclarativeListReference@@QBE_NXZ @ 930 NONAME ; bool QDeclarativeListReference::canClear(void) const - ??4QDeclarativeCustomParserProperty@@QAEAAV0@ABV0@@Z @ 931 NONAME ; class QDeclarativeCustomParserProperty & QDeclarativeCustomParserProperty::operator=(class QDeclarativeCustomParserProperty const &) - ?parameterNames@QMetaMethodBuilder@@QBE?AV?$QList@VQByteArray@@@@XZ @ 932 NONAME ; class QList QMetaMethodBuilder::parameterNames(void) const - ?get@QDeclarativeListModel@@QBE?AVQScriptValue@@H@Z @ 933 NONAME ; class QScriptValue QDeclarativeListModel::get(int) const - ?createSize@QDeclarativeType@@QBEHXZ @ 934 NONAME ; int QDeclarativeType::createSize(void) const - ?isValueSource@QDeclarativeDomValue@@QBE_NXZ @ 935 NONAME ; bool QDeclarativeDomValue::isValueSource(void) const - ?isWritable@QDeclarativeProperty@@QBE_NXZ @ 936 NONAME ; bool QDeclarativeProperty::isWritable(void) const - ?setKeepMouseGrab@QDeclarativeItem@@QAEX_N@Z @ 937 NONAME ; void QDeclarativeItem::setKeepMouseGrab(bool) - ??0QDeclarativeDebugContextReference@@QAE@XZ @ 938 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(void) - ?setParameterNames@QMetaMethodBuilder@@QAEXABV?$QList@VQByteArray@@@@@Z @ 939 NONAME ; void QMetaMethodBuilder::setParameterNames(class QList const &) - ?getStaticMetaObject@QDeclarativeDebugRootContextQuery@@SAABUQMetaObject@@XZ @ 940 NONAME ; struct QMetaObject const & QDeclarativeDebugRootContextQuery::getStaticMetaObject(void) - ?textChanged@QDeclarativeText@@IAEXABVQString@@@Z @ 941 NONAME ; void QDeclarativeText::textChanged(class QString const &) - ?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 942 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *) - ??0QDeclarativeCustomParserProperty@@QAE@ABV0@@Z @ 943 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(class QDeclarativeCustomParserProperty const &) - ?getStaticMetaObject@QDeclarativeComponent@@SAABUQMetaObject@@XZ @ 944 NONAME ; struct QMetaObject const & QDeclarativeComponent::getStaticMetaObject(void) - ?parentItem@QDeclarativeItem@@QBEPAV1@XZ @ 945 NONAME ; class QDeclarativeItem * QDeclarativeItem::parentItem(void) const - ?value@QMetaEnumBuilder@@QBEHH@Z @ 946 NONAME ; int QMetaEnumBuilder::value(int) const - ??_EQDeclarativeExpression@@UAE@I@Z @ 947 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(unsigned int) - ?load@QDeclarativeDomDocument@@QAE_NPAVQDeclarativeEngine@@ABVQByteArray@@ABVQUrl@@@Z @ 948 NONAME ; bool QDeclarativeDomDocument::load(class QDeclarativeEngine *, class QByteArray const &, class QUrl const &) - ?staticMetaObject@QDeclarativeStateGroup@@2UQMetaObject@@B @ 949 NONAME ; struct QMetaObject const QDeclarativeStateGroup::staticMetaObject - ?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 950 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *) - ?verticalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 951 NONAME ; void QDeclarativeAnchors::verticalCenterChanged(void) - ?isScriptable@QMetaPropertyBuilder@@QBE_NXZ @ 952 NONAME ; bool QMetaPropertyBuilder::isScriptable(void) const - ?typeCategory@QDeclarativeMetaType@@SA?AW4TypeCategory@1@H@Z @ 953 NONAME ; enum QDeclarativeMetaType::TypeCategory QDeclarativeMetaType::typeCategory(int) - ?findSignalByName@QDeclarativePropertyPrivate@@SA?AVQMetaMethod@@PBUQMetaObject@@ABVQByteArray@@@Z @ 954 NONAME ; class QMetaMethod QDeclarativePropertyPrivate::findSignalByName(struct QMetaObject const *, class QByteArray const &) - ?length@QDeclarativeDomDynamicProperty@@QBEHXZ @ 955 NONAME ; int QDeclarativeDomDynamicProperty::length(void) const - ?property@QDeclarativeBinding@@QBE?AVQDeclarativeProperty@@XZ @ 956 NONAME ; class QDeclarativeProperty QDeclarativeBinding::property(void) const - ??0QDeclarativeDomValueBinding@@QAE@XZ @ 957 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(void) - ?addImportPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 958 NONAME ; void QDeclarativeEngine::addImportPath(class QString const &) - ?engine@QDeclarativeContext@@QBEPAVQDeclarativeEngine@@XZ @ 959 NONAME ; class QDeclarativeEngine * QDeclarativeContext::engine(void) const - ?length@QDeclarativeDomObject@@QBEHXZ @ 960 NONAME ; int QDeclarativeDomObject::length(void) const - ?setBaselineOffset@QDeclarativeAnchors@@QAEXM@Z @ 961 NONAME ; void QDeclarativeAnchors::setBaselineOffset(float) - ?append@QDeclarativeListReference@@QBE_NPAVQObject@@@Z @ 962 NONAME ; bool QDeclarativeListReference::append(class QObject *) const - ?d_func@QDeclarativeEngineDebug@@AAEPAVQDeclarativeEngineDebugPrivate@@XZ @ 963 NONAME ; class QDeclarativeEngineDebugPrivate * QDeclarativeEngineDebug::d_func(void) - ??1QDeclarativeNetworkAccessManagerFactory@@UAE@XZ @ 964 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(void) - ?textFormatChanged@QDeclarativeText@@IAEXW4TextFormat@1@@Z @ 965 NONAME ; void QDeclarativeText::textFormatChanged(enum QDeclarativeText::TextFormat) - ?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 966 NONAME ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *) - ?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 967 NONAME ; class QByteArray QDeclarativeType::qmlTypeName(void) const - ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 968 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *) - ?setLoading@QDeclarativePixmapReply@@AAEXXZ @ 969 NONAME ABSENT ; void QDeclarativePixmapReply::setLoading(void) - ?isProperty@QDeclarativeProperty@@QBE_NXZ @ 970 NONAME ; bool QDeclarativeProperty::isProperty(void) const - ?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 971 NONAME ; class QList QDeclarativeStateGroup::states(void) const - ??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 972 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void) - ?isValid@QDeclarativeDomObject@@QBE_NXZ @ 973 NONAME ; bool QDeclarativeDomObject::isValid(void) const - ?staticMetaObject@QDeclarativeAnchors@@2UQMetaObject@@B @ 974 NONAME ; struct QMetaObject const QDeclarativeAnchors::staticMetaObject - ??_EQDeclarativePen@@UAE@I@Z @ 975 NONAME ; QDeclarativePen::~QDeclarativePen(unsigned int) - ??0QDeclarativeDomProperty@@QAE@ABV0@@Z @ 976 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(class QDeclarativeDomProperty const &) - ?_states@QDeclarativeItemPrivate@@QAEPAVQDeclarativeStateGroup@@XZ @ 977 NONAME ; class QDeclarativeStateGroup * QDeclarativeItemPrivate::_states(void) - ?verticalAlignmentChanged@QDeclarativeText@@IAEXW4VAlignment@1@@Z @ 978 NONAME ; void QDeclarativeText::verticalAlignmentChanged(enum QDeclarativeText::VAlignment) - ?typeId@QDeclarativeType@@QBEHXZ @ 979 NONAME ; int QDeclarativeType::typeId(void) const - ?marginsChanged@QDeclarativeAnchors@@IAEXXZ @ 980 NONAME ; void QDeclarativeAnchors::marginsChanged(void) - ?setValue@QDeclarativeOpenMetaObject@@QAEXHABVQVariant@@@Z @ 981 NONAME ; void QDeclarativeOpenMetaObject::setValue(int, class QVariant const &) - ?parentProperty@QDeclarativeItemPrivate@@SAXPAVQObject@@PAXPAVQDeclarativeNotifierEndpoint@@@Z @ 982 NONAME ; void QDeclarativeItemPrivate::parentProperty(class QObject *, void *, class QDeclarativeNotifierEndpoint *) - ??4QDeclarativeDebugContextReference@@QAEAAV0@ABV0@@Z @ 983 NONAME ; class QDeclarativeDebugContextReference & QDeclarativeDebugContextReference::operator=(class QDeclarativeDebugContextReference const &) - ?isModule@QDeclarativeMetaType@@SA_NABVQByteArray@@HH@Z @ 984 NONAME ; bool QDeclarativeMetaType::isModule(class QByteArray const &, int, int) - ?parentFunctions@QDeclarativeMetaType@@SA?AV?$QList@P6A?AW4AutoParentResult@QDeclarativePrivate@@PAVQObject@@0@Z@@XZ @ 985 NONAME ; class QList QDeclarativeMetaType::parentFunctions(void) - ?metaObject@QDeclarativeDebugPropertyWatch@@UBEPBUQMetaObject@@XZ @ 986 NONAME ; struct QMetaObject const * QDeclarativeDebugPropertyWatch::metaObject(void) const - ??0QDeclarativeRectangle@@QAE@PAVQDeclarativeItem@@@Z @ 987 NONAME ; QDeclarativeRectangle::QDeclarativeRectangle(class QDeclarativeItem *) - ?setOutputWarningsToStandardError@QDeclarativeEngine@@QAEX_N@Z @ 988 NONAME ; void QDeclarativeEngine::setOutputWarningsToStandardError(bool) - ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@0@Z @ 989 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &, class QByteArray const &) - ?enumerator@QMetaObjectBuilder@@QBE?AVQMetaEnumBuilder@@H@Z @ 990 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::enumerator(int) const - ?fromRelocatableData@QMetaObjectBuilder@@SAXPAUQMetaObject@@PBU2@ABVQByteArray@@@Z @ 991 NONAME ; void QMetaObjectBuilder::fromRelocatableData(struct QMetaObject *, struct QMetaObject const *, class QByteArray const &) - ?gridRight@QDeclarativeGridScaledImage@@QBEHXZ @ 992 NONAME ; int QDeclarativeGridScaledImage::gridRight(void) const - ?isAlias@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 993 NONAME ; bool QDeclarativeDomDynamicProperty::isAlias(void) const - ?d_func@QDeclarativeContext@@ABEPBVQDeclarativeContextPrivate@@XZ @ 994 NONAME ; class QDeclarativeContextPrivate const * QDeclarativeContext::d_func(void) const - ?getStaticMetaObject@QDeclarativeDebugEnginesQuery@@SAABUQMetaObject@@XZ @ 995 NONAME ; struct QMetaObject const & QDeclarativeDebugEnginesQuery::getStaticMetaObject(void) - ?tr@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 996 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *, int) - ?staticMetaObject@QDeclarativeDebugPropertyWatch@@2UQMetaObject@@B @ 997 NONAME ; struct QMetaObject const QDeclarativeDebugPropertyWatch::staticMetaObject - ?setDescription@QDeclarativeError@@QAEXABVQString@@@Z @ 998 NONAME ; void QDeclarativeError::setDescription(class QString const &) - ??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@@Z @ 999 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &) - ??1QDeclarativeOpenMetaObjectType@@UAE@XZ @ 1000 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(void) - ?setReversible@QDeclarativeTransition@@QAEX_N@Z @ 1001 NONAME ; void QDeclarativeTransition::setReversible(bool) - ?notifySignal@QMetaPropertyBuilder@@QBE?AVQMetaMethodBuilder@@XZ @ 1002 NONAME ; class QMetaMethodBuilder QMetaPropertyBuilder::notifySignal(void) const - ??0QDeclarativeDomList@@QAE@XZ @ 1003 NONAME ; QDeclarativeDomList::QDeclarativeDomList(void) - ?indexOfSignal@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1004 NONAME ; int QMetaObjectBuilder::indexOfSignal(class QByteArray const &) - ?toState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 1005 NONAME ; class QString QDeclarativeTransition::toState(void) const - ??0QDeclarativeDomDocument@@QAE@XZ @ 1006 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(void) - ?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 1007 NONAME ; void QDeclarativeState::setWhen(class QDeclarativeBinding *) - ?isWhenKnown@QDeclarativeState@@QBE_NXZ @ 1008 NONAME ; bool QDeclarativeState::isWhenKnown(void) const - ?agent@QDeclarativeListModel@@QAEPAVQDeclarativeListModelWorkerAgent@@XZ @ 1009 NONAME ; class QDeclarativeListModelWorkerAgent * QDeclarativeListModel::agent(void) - ?engine@QDeclarativeExpression@@QBEPAVQDeclarativeEngine@@XZ @ 1010 NONAME ; class QDeclarativeEngine * QDeclarativeExpression::engine(void) const - ??_EQDeclarativeDebugWatch@@UAE@I@Z @ 1011 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(unsigned int) - ?isEmpty@QPacket@@QBE_NXZ @ 1012 NONAME ; bool QPacket::isEmpty(void) const - ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@PBUQMetaObject@@@Z @ 1013 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(struct QMetaObject const *) - ?setFill@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 1014 NONAME ; void QDeclarativeAnchors::setFill(class QGraphicsObject *) - ?setHAlign@QDeclarativeText@@QAEXW4HAlignment@1@@Z @ 1015 NONAME ; void QDeclarativeText::setHAlign(enum QDeclarativeText::HAlignment) - ??0QDeclarativeScriptString@@QAE@ABV0@@Z @ 1016 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(class QDeclarativeScriptString const &) - ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1017 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *) - ?metaObject@QDeclarativeDebugRootContextQuery@@UBEPBUQMetaObject@@XZ @ 1018 NONAME ; struct QMetaObject const * QDeclarativeDebugRootContextQuery::metaObject(void) const - ?setSignalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@PAV2@@Z @ 1019 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::setSignalExpression(class QDeclarativeProperty const &, class QDeclarativeExpression *) - ?reversibleChanged@QDeclarativeTransition@@IAEXXZ @ 1020 NONAME ; void QDeclarativeTransition::reversibleChanged(void) - ??4QDeclarativeDomValueValueSource@@QAEAAV0@ABV0@@Z @ 1021 NONAME ; class QDeclarativeDomValueValueSource & QDeclarativeDomValueValueSource::operator=(class QDeclarativeDomValueValueSource const &) - ?name@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 1022 NONAME ; class QString QDeclarativeDebugObjectReference::name(void) const - ?anchorLines@QDeclarativeItemPrivate@@QBEPAUAnchorLines@1@XZ @ 1023 NONAME ; struct QDeclarativeItemPrivate::AnchorLines * QDeclarativeItemPrivate::anchorLines(void) const - ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABVQDeclarativeError@@@Z @ 1024 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QDeclarativeError const &) - ?staticMetaObject@QDeclarativeText@@2UQMetaObject@@B @ 1025 NONAME ; struct QMetaObject const QDeclarativeText::staticMetaObject - ?color@QDeclarativeRectangle@@QBE?AVQColor@@XZ @ 1026 NONAME ; class QColor QDeclarativeRectangle::color(void) const - ?isEnabled@QDeclarativeDebugClient@@QBE_NXZ @ 1027 NONAME ; bool QDeclarativeDebugClient::isEnabled(void) const - ?send@QPacketProtocol@@QAEXABVQPacket@@@Z @ 1028 NONAME ; void QPacketProtocol::send(class QPacket const &) - ?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserNode@@ABVQString@@@Z @ 1029 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserNode const &, class QString const &) - ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PBUQMetaObject@@@Z @ 1030 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(struct QMetaObject const *) - ?isComponentComplete@QDeclarativeItem@@IBE_NXZ @ 1031 NONAME ; bool QDeclarativeItem::isComponentComplete(void) const - ?type@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 1032 NONAME ; class QByteArray QMetaPropertyBuilder::type(void) const - ?setProperty@QDeclarativeListModel@@QAEXHABVQString@@ABVQVariant@@@Z @ 1033 NONAME ; void QDeclarativeListModel::setProperty(int, class QString const &, class QVariant const &) - ?rootContext@QDeclarativeDebugRootContextQuery@@QBE?AVQDeclarativeDebugContextReference@@XZ @ 1034 NONAME ; class QDeclarativeDebugContextReference QDeclarativeDebugRootContextQuery::rootContext(void) const - ?contextForObject@QDeclarativeEngine@@SAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1035 NONAME ; class QDeclarativeContext * QDeclarativeEngine::contextForObject(class QObject const *) - ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQMetaProperty@@@Z @ 1036 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QMetaProperty const &) - ?isQObject@QDeclarativeMetaType@@SA_NH@Z @ 1037 NONAME ; bool QDeclarativeMetaType::isQObject(int) - ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 1038 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *) - ?getStaticMetaObject@QDeclarativeValueType@@SAABUQMetaObject@@XZ @ 1039 NONAME ; struct QMetaObject const & QDeclarativeValueType::getStaticMetaObject(void) - ?valueChanged@QDeclarativePropertyMap@@IAEXABVQString@@ABVQVariant@@@Z @ 1040 NONAME ; void QDeclarativePropertyMap::valueChanged(class QString const &, class QVariant const &) - ?staticMetaObject@QPacketProtocol@@2UQMetaObject@@B @ 1041 NONAME ; struct QMetaObject const QPacketProtocol::staticMetaObject - ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 1042 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *, int) - ??0QDeclarativeScriptString@@QAE@XZ @ 1043 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(void) - ?tr@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1044 NONAME ; class QString QListModelInterface::tr(char const *, char const *) - ?height@QDeclarativeItemPrivate@@UBEMXZ @ 1045 NONAME ; float QDeclarativeItemPrivate::height(void) const - ?qt_metacast@QDeclarativeDebugObjectQuery@@UAEPAXPBD@Z @ 1046 NONAME ; void * QDeclarativeDebugObjectQuery::qt_metacast(char const *) - ?type@QDeclarativeDomValue@@QBE?AW4Type@1@XZ @ 1047 NONAME ; enum QDeclarativeDomValue::Type QDeclarativeDomValue::type(void) const - ?staticMetacallFunction@QMetaObjectBuilder@@QBEP6AHW4Call@QMetaObject@@HPAPAX@ZXZ @ 1048 NONAME ; int (*)(enum QMetaObject::Call, int, void * *) QMetaObjectBuilder::staticMetacallFunction(void) const - ?setStyle@QDeclarativeText@@QAEXW4TextStyle@1@@Z @ 1049 NONAME ; void QDeclarativeText::setStyle(enum QDeclarativeText::TextStyle) - ?staticMetaObject@QDeclarativePropertyMap@@2UQMetaObject@@B @ 1050 NONAME ; struct QMetaObject const QDeclarativePropertyMap::staticMetaObject - ??_EQDeclarativeDebugEnginesQuery@@UAE@I@Z @ 1051 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(unsigned int) - ?enumeratorCount@QMetaObjectBuilder@@QBEHXZ @ 1052 NONAME ; int QMetaObjectBuilder::enumeratorCount(void) const - ?setConsistentTime@QDeclarativeItemPrivate@@SAX_J@Z @ 1053 NONAME ; void QDeclarativeItemPrivate::setConsistentTime(long long) - ?initializeEngine@QDeclarativeExtensionPlugin@@UAEXPAVQDeclarativeEngine@@PBD@Z @ 1054 NONAME ; void QDeclarativeExtensionPlugin::initializeEngine(class QDeclarativeEngine *, char const *) - ?metaObject@QDeclarativeDebugQuery@@UBEPBUQMetaObject@@XZ @ 1055 NONAME ; struct QMetaObject const * QDeclarativeDebugQuery::metaObject(void) const - ?rightMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1056 NONAME ; void QDeclarativeAnchors::rightMarginChanged(void) - ??_EQDeclarativePropertyValueInterceptor@@UAE@I@Z @ 1057 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(unsigned int) - ?linkActivated@QDeclarativeText@@IAEXABVQString@@@Z @ 1058 NONAME ; void QDeclarativeText::linkActivated(class QString const &) - ?canConvert@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1059 NONAME ; bool QDeclarativePropertyPrivate::canConvert(struct QMetaObject const *, struct QMetaObject const *) - ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 1060 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *, int) - ?toComponent@QDeclarativeDomObject@@QBE?AVQDeclarativeDomComponent@@XZ @ 1061 NONAME ; class QDeclarativeDomComponent QDeclarativeDomObject::toComponent(void) const - ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 1062 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *) - ?setLeft@QDeclarativeScaleGrid@@QAEXH@Z @ 1063 NONAME ; void QDeclarativeScaleGrid::setLeft(int) - ??1QDeclarativeGridScaledImage@@QAE@XZ @ 1064 NONAME ; QDeclarativeGridScaledImage::~QDeclarativeGridScaledImage(void) - ??0QDeclarativeGridScaledImage@@QAE@ABV0@@Z @ 1065 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QDeclarativeGridScaledImage const &) - ?column@QDeclarativeError@@QBEHXZ @ 1066 NONAME ; int QDeclarativeError::column(void) const - ?properties@QDeclarativeCustomParserNode@@QBE?AV?$QList@VQDeclarativeCustomParserProperty@@@@XZ @ 1067 NONAME ; class QList QDeclarativeCustomParserNode::properties(void) const - ?qt_metacast@QDeclarativeScaleGrid@@UAEPAXPBD@Z @ 1068 NONAME ; void * QDeclarativeScaleGrid::qt_metacast(char const *) - ??0QDeclarativeListReference@@QAE@XZ @ 1069 NONAME ; QDeclarativeListReference::QDeclarativeListReference(void) - ??1QDeclarativeDebugRootContextQuery@@UAE@XZ @ 1070 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(void) - ?name@QDeclarativeCustomParserNode@@QBE?AVQByteArray@@XZ @ 1071 NONAME ; class QByteArray QDeclarativeCustomParserNode::name(void) const - ?object@QDeclarativeDomValueValueInterceptor@@QBE?AVQDeclarativeDomObject@@XZ @ 1072 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueInterceptor::object(void) const - ??1QDeclarativePen@@UAE@XZ @ 1073 NONAME ; QDeclarativePen::~QDeclarativePen(void) - ?data@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQObject@@@@XZ @ 1074 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::data(void) - ?qt_metacall@QDeclarativeBinding@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1075 NONAME ; int QDeclarativeBinding::qt_metacall(enum QMetaObject::Call, int, void * *) - ??1QDeclarativeEngine@@UAE@XZ @ 1076 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(void) - ?debugId@QDeclarativeDebugContextReference@@QBEHXZ @ 1077 NONAME ; int QDeclarativeDebugContextReference::debugId(void) const - ?propertyNameParts@QDeclarativeDomProperty@@QBE?AV?$QList@VQByteArray@@@@XZ @ 1078 NONAME ; class QList QDeclarativeDomProperty::propertyNameParts(void) const - ?rootContext@QDeclarativeEngine@@QAEPAVQDeclarativeContext@@XZ @ 1079 NONAME ; class QDeclarativeContext * QDeclarativeEngine::rootContext(void) - ?resetWidth@QDeclarativeItemPrivate@@UAEXXZ @ 1080 NONAME ; void QDeclarativeItemPrivate::resetWidth(void) - ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@ABVQByteArray@@@Z @ 1081 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](class QByteArray const &) - ?bottom@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1082 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::bottom(void) const - ?device@QPacketProtocol@@QAEPAVQIODevice@@XZ @ 1083 NONAME ; class QIODevice * QPacketProtocol::device(void) - ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1084 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *) - ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@HPA_N@Z @ 1085 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &, int, bool *) - ?metaObject@QDeclarativeComponent@@UBEPBUQMetaObject@@XZ @ 1086 NONAME ; struct QMetaObject const * QDeclarativeComponent::metaObject(void) const - ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABV?$QList@VQDeclarativeError@@@@@Z @ 1087 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QList const &) - ?assignedValues@QDeclarativeCustomParserProperty@@QBE?AV?$QList@VQVariant@@@@XZ @ 1088 NONAME ; class QList QDeclarativeCustomParserProperty::assignedValues(void) const - ?setValue@QDeclarativeOpenMetaObject@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1089 NONAME ; void QDeclarativeOpenMetaObject::setValue(class QByteArray const &, class QVariant const &) - ?data@QDeclarativeListModel@@UBE?AVQVariant@@HH@Z @ 1090 NONAME ; class QVariant QDeclarativeListModel::data(int, int) const - ?setElideMode@QDeclarativeText@@QAEXW4TextElideMode@1@@Z @ 1091 NONAME ; void QDeclarativeText::setElideMode(enum QDeclarativeText::TextElideMode) - ?d_func@QDeclarativePropertyMap@@ABEPBVQDeclarativePropertyMapPrivate@@XZ @ 1092 NONAME ; class QDeclarativePropertyMapPrivate const * QDeclarativePropertyMap::d_func(void) const - ?consistentTime@QDeclarativeItemPrivate@@2_JA @ 1093 NONAME ; long long QDeclarativeItemPrivate::consistentTime - ?setWidth@QDeclarativeItem@@QAEXM@Z @ 1094 NONAME ; void QDeclarativeItem::setWidth(float) - ?contextObject@QDeclarativeContext@@QBEPAVQObject@@XZ @ 1095 NONAME ; class QObject * QDeclarativeContext::contextObject(void) const - ?qt_metacall@QDeclarativeDebugObjectQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1096 NONAME ; int QDeclarativeDebugObjectQuery::qt_metacall(enum QMetaObject::Call, int, void * *) - ??_EQDeclarativeOpenMetaObjectType@@UAE@I@Z @ 1097 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(unsigned int) - ?isWritable@QMetaPropertyBuilder@@QBE_NXZ @ 1098 NONAME ; bool QMetaPropertyBuilder::isWritable(void) const - ?sizeFFromString@QDeclarativeStringConverters@@YA?AVQSizeF@@ABVQString@@PA_N@Z @ 1099 NONAME ; class QSizeF QDeclarativeStringConverters::sizeFFromString(class QString const &, bool *) - ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 1100 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeEngine *) - ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1101 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &) - ??0QDeclarativeDebugFileReference@@QAE@XZ @ 1102 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(void) - ?mapFromItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 1103 NONAME ; class QScriptValue QDeclarativeItem::mapFromItem(class QScriptValue const &, float, float) const - ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 1104 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int) - ?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 1105 NONAME ; class QString QPacketProtocol::tr(char const *, char const *, int) - ?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 1106 NONAME ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const - ?metaObject@QDeclarativePixmapReply@@UBEPBUQMetaObject@@XZ @ 1107 NONAME ABSENT ; struct QMetaObject const * QDeclarativePixmapReply::metaObject(void) const - ?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 1108 NONAME ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &) - ?enabled@QDeclarativeBehavior@@QBE_NXZ @ 1109 NONAME ; bool QDeclarativeBehavior::enabled(void) const - ?initProperty@QDeclarativePropertyPrivate@@QAEXPAVQObject@@ABVQString@@@Z @ 1110 NONAME ; void QDeclarativePropertyPrivate::initProperty(class QObject *, class QString const &) - ?isEditable@QMetaPropertyBuilder@@QBE_NXZ @ 1111 NONAME ; bool QMetaPropertyBuilder::isEditable(void) const - ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContextData@@1@Z @ 1112 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContextData *, class QObject *) - ?expression@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 1113 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::expression(void) const - ??4QDeclarativeDomList@@QAEAAV0@ABV0@@Z @ 1114 NONAME ; class QDeclarativeDomList & QDeclarativeDomList::operator=(class QDeclarativeDomList const &) - ?qt_metacall@QDeclarativeComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1115 NONAME ; int QDeclarativeComponent::qt_metacall(enum QMetaObject::Call, int, void * *) - ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 1116 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *, int) - ?staticMetaObject@QDeclarativeEngine@@2UQMetaObject@@B @ 1117 NONAME ; struct QMetaObject const QDeclarativeEngine::staticMetaObject - ?staticMetaObject@QDeclarativeStateOperation@@2UQMetaObject@@B @ 1118 NONAME ; struct QMetaObject const QDeclarativeStateOperation::staticMetaObject - ?actions@QDeclarativeStateOperation@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1119 NONAME ; class QList QDeclarativeStateOperation::actions(void) - ?objectClassName@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1120 NONAME ; class QByteArray QDeclarativeDomObject::objectClassName(void) const - ??8QDeclarativeProperty@@QBE_NABV0@@Z @ 1121 NONAME ; bool QDeclarativeProperty::operator==(class QDeclarativeProperty const &) const - ??1QDeclarativeDomValue@@QAE@XZ @ 1122 NONAME ; QDeclarativeDomValue::~QDeclarativeDomValue(void) - ??_EQDeclarativePropertyMap@@UAE@I@Z @ 1123 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(unsigned int) - ?staticMetaObject@QDeclarativeDebugRootContextQuery@@2UQMetaObject@@B @ 1124 NONAME ; struct QMetaObject const QDeclarativeDebugRootContextQuery::staticMetaObject - ?noCreationReason@QDeclarativeType@@QBE?AVQString@@XZ @ 1125 NONAME ; class QString QDeclarativeType::noCreationReason(void) const - ?setUrl@QDeclarativeDebugFileReference@@QAEXABVQUrl@@@Z @ 1126 NONAME ; void QDeclarativeDebugFileReference::setUrl(class QUrl const &) - ??1QDeclarativeCustomParserProperty@@QAE@XZ @ 1127 NONAME ; QDeclarativeCustomParserProperty::~QDeclarativeCustomParserProperty(void) - ??1QPacketProtocol@@UAE@XZ @ 1128 NONAME ; QPacketProtocol::~QPacketProtocol(void) - ??1QDeclarativeAbstractBinding@@MAE@XZ @ 1129 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(void) - ?indexOfEnumerator@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1130 NONAME ; int QMetaObjectBuilder::indexOfEnumerator(class QByteArray const &) - ?qt_metacast@QDeclarativePen@@UAEPAXPBD@Z @ 1131 NONAME ; void * QDeclarativePen::qt_metacast(char const *) - ?leftMargin@QDeclarativeAnchors@@QBEMXZ @ 1132 NONAME ; float QDeclarativeAnchors::leftMargin(void) const - ??1QDeclarativeComponent@@UAE@XZ @ 1133 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(void) - ??1QDeclarativeItem@@UAE@XZ @ 1134 NONAME ; QDeclarativeItem::~QDeclarativeItem(void) - ?setEnabled@QDeclarativeAbstractBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1135 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool, class QFlags) - ?staticMetaObject@QListModelInterface@@2UQMetaObject@@B @ 1136 NONAME ; struct QMetaObject const QListModelInterface::staticMetaObject - ?d_func@QDeclarativeTransition@@ABEPBVQDeclarativeTransitionPrivate@@XZ @ 1137 NONAME ; class QDeclarativeTransitionPrivate const * QDeclarativeTransition::d_func(void) const - ?sourceFile@QDeclarativeExpression@@QBE?AVQString@@XZ @ 1138 NONAME ; class QString QDeclarativeExpression::sourceFile(void) const - ??_EQDeclarativeAnchors@@UAE@I@Z @ 1139 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(unsigned int) - ?removeNotifySignal@QMetaPropertyBuilder@@QAEXXZ @ 1140 NONAME ; void QMetaPropertyBuilder::removeNotifySignal(void) - ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 1141 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *) - ?setImportPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 1142 NONAME ; void QDeclarativeEngine::setImportPathList(class QStringList const &) - ?enabledChanged@QDeclarativeDebugService@@MAEX_N@Z @ 1143 NONAME ; void QDeclarativeDebugService::enabledChanged(bool) - ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1144 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QObject *) - ?asAST@Variant@QDeclarativeParser@@QBEPAVNode@AST@QDeclarativeJS@@XZ @ 1145 NONAME ; class QDeclarativeJS::AST::Node * QDeclarativeParser::Variant::asAST(void) const - ?indexOfClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1146 NONAME ; int QMetaObjectBuilder::indexOfClassInfo(class QByteArray const &) - ??0QDeclarativeDomImport@@QAE@ABV0@@Z @ 1147 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(class QDeclarativeDomImport const &) - ?width@QDeclarativePen@@QBEHXZ @ 1148 NONAME ; int QDeclarativePen::width(void) const - ?d_func@QDeclarativeStateGroup@@AAEPAVQDeclarativeStateGroupPrivate@@XZ @ 1149 NONAME ; class QDeclarativeStateGroupPrivate * QDeclarativeStateGroup::d_func(void) - ??6QDeclarativeInfo@@QAEAAV0@P6AAAVQTextStream@@AAV1@@Z@Z @ 1150 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStream & (*)(class QTextStream &)) - ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 1151 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *) - ?type@QDeclarativeOpenMetaObject@@QBEPAVQDeclarativeOpenMetaObjectType@@XZ @ 1152 NONAME ; class QDeclarativeOpenMetaObjectType * QDeclarativeOpenMetaObject::type(void) const - ?tr@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 1153 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *) - ??0QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 1154 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(void) - ??1QDeclarativeDebugPropertyWatch@@UAE@XZ @ 1155 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(void) - ?evaluate@QDeclarativeExpression@@QAE?AVQVariant@@PA_N@Z @ 1156 NONAME ; class QVariant QDeclarativeExpression::evaluate(bool *) - ?isDefaultProperty@QDeclarativeDomProperty@@QBE_NXZ @ 1157 NONAME ; bool QDeclarativeDomProperty::isDefaultProperty(void) const - ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1158 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QVariant const &) - ?metaObject@QDeclarativeRectangle@@UBEPBUQMetaObject@@XZ @ 1159 NONAME ; struct QMetaObject const * QDeclarativeRectangle::metaObject(void) const - ?forcedWidth@QDeclarativePixmapReply@@QBEHXZ @ 1160 NONAME ABSENT ; int QDeclarativePixmapReply::forcedWidth(void) const - ?removeRelatedMetaObject@QMetaObjectBuilder@@QAEXH@Z @ 1161 NONAME ; void QMetaObjectBuilder::removeRelatedMetaObject(int) - ??0QDeclarativeError@@QAE@XZ @ 1162 NONAME ; QDeclarativeError::QDeclarativeError(void) - ?object@QDeclarativeProperty@@QBEPAVQObject@@XZ @ 1163 NONAME ; class QObject * QDeclarativeProperty::object(void) const - ?stateGroup@QDeclarativeState@@QBEPAVQDeclarativeStateGroup@@XZ @ 1164 NONAME ; class QDeclarativeStateGroup * QDeclarativeState::stateGroup(void) const - ?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@H@Z @ 1165 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, int) const - ?focusChanged@QDeclarativeItemPrivate@@UAEX_N@Z @ 1166 NONAME ; void QDeclarativeItemPrivate::focusChanged(bool) - ?contextDebugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 1167 NONAME ; int QDeclarativeDebugObjectReference::contextDebugId(void) const - ?url@QDeclarativeDebugFileReference@@QBE?AVQUrl@@XZ @ 1168 NONAME ; class QUrl QDeclarativeDebugFileReference::url(void) const - ?paint@QDeclarativeRectangle@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1169 NONAME ; void QDeclarativeRectangle::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) - ??6QDeclarativeState@@QAEAAV0@PAVQDeclarativeStateOperation@@@Z @ 1170 NONAME ; class QDeclarativeState & QDeclarativeState::operator<<(class QDeclarativeStateOperation *) - ?destroy@QDeclarativeAbstractBinding@@UAEXXZ @ 1171 NONAME ; void QDeclarativeAbstractBinding::destroy(void) - ?qt_metacast@QDeclarativeDebugService@@UAEPAXPBD@Z @ 1172 NONAME ; void * QDeclarativeDebugService::qt_metacast(char const *) - ?qt_metacast@QDeclarativeValueType@@UAEPAXPBD@Z @ 1173 NONAME ; void * QDeclarativeValueType::qt_metacast(char const *) - ?childAt@QDeclarativeItem@@QBEPAV1@MM@Z @ 1174 NONAME ; class QDeclarativeItem * QDeclarativeItem::childAt(float, float) const - ?paintedWidth@QDeclarativeText@@QBEMXZ @ 1175 NONAME ; float QDeclarativeText::paintedWidth(void) const - ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1176 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *) - ?clip@QDeclarativeItem@@QBE_NXZ @ 1177 NONAME ; bool QDeclarativeItem::clip(void) const - ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@PAVQObject@@@Z @ 1178 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QUrl const &, class QObject *) - ??0QDeclarativeValueTypeFactory@@QAE@XZ @ 1179 NONAME ; QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory(void) - ?literal@QDeclarativeDomValueLiteral@@QBE?AVQString@@XZ @ 1180 NONAME ; class QString QDeclarativeDomValueLiteral::literal(void) const - ??_EQDeclarativeEngineDebug@@UAE@I@Z @ 1181 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(unsigned int) - ?bottom@QDeclarativeScaleGrid@@QBEHXZ @ 1182 NONAME ; int QDeclarativeScaleGrid::bottom(void) const - ?d_func@QDeclarativePropertyMap@@AAEPAVQDeclarativePropertyMapPrivate@@XZ @ 1183 NONAME ; class QDeclarativePropertyMapPrivate * QDeclarativePropertyMap::d_func(void) - ?forceFocus@QDeclarativeItem@@QAEXXZ @ 1184 NONAME ; void QDeclarativeItem::forceFocus(void) - ?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1185 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *) - ??0QDeclarativeTransition@@QAE@PAVQObject@@@Z @ 1186 NONAME ; QDeclarativeTransition::QDeclarativeTransition(class QObject *) - ?horizontalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1187 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::horizontalCenter(void) const - ?setObjectOwnership@QDeclarativeEngine@@SAXPAVQObject@@W4ObjectOwnership@1@@Z @ 1188 NONAME ; void QDeclarativeEngine::setObjectOwnership(class QObject *, enum QDeclarativeEngine::ObjectOwnership) - ?tr@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 1189 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *, int) - ?metaCall@QDeclarativeOpenMetaObject@@MAEHW4Call@QMetaObject@@HPAPAX@Z @ 1190 NONAME ; int QDeclarativeOpenMetaObject::metaCall(enum QMetaObject::Call, int, void * *) - ??_EQDeclarativeText@@UAE@I@Z @ 1191 NONAME ; QDeclarativeText::~QDeclarativeText(unsigned int) - ?setLeftMargin@QDeclarativeAnchors@@QAEXM@Z @ 1192 NONAME ; void QDeclarativeAnchors::setLeftMargin(float) - ?metaObject@QDeclarativeStateGroup@@UBEPBUQMetaObject@@XZ @ 1193 NONAME ; struct QMetaObject const * QDeclarativeStateGroup::metaObject(void) const - ?expression@QDeclarativeAbstractBinding@@UBE?AVQString@@XZ @ 1194 NONAME ; class QString QDeclarativeAbstractBinding::expression(void) const - ??6QDeclarativeInfo@@QAEAAV0@N@Z @ 1195 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(double) - ?setAnimation@QDeclarativeBehavior@@QAEXPAVQDeclarativeAbstractAnimation@@@Z @ 1196 NONAME ; void QDeclarativeBehavior::setAnimation(class QDeclarativeAbstractAnimation *) - ?properties@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugPropertyReference@@@@XZ @ 1197 NONAME ; class QList QDeclarativeDebugObjectReference::properties(void) const - ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 1198 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *) - ?context@QDeclarativeExpression@@QBEPAVQDeclarativeContext@@XZ @ 1199 NONAME ; class QDeclarativeContext * QDeclarativeExpression::context(void) const - ?qt_metacast@QDeclarativeBehavior@@UAEPAXPBD@Z @ 1200 NONAME ; void * QDeclarativeBehavior::qt_metacast(char const *) - ?objectTypeMinorVersion@QDeclarativeDomObject@@QBEHXZ @ 1201 NONAME ; int QDeclarativeDomObject::objectTypeMinorVersion(void) const - ??0QDeclarativePropertyValueInterceptor@@QAE@XZ @ 1202 NONAME ; QDeclarativePropertyValueInterceptor::QDeclarativePropertyValueInterceptor(void) - ?isValid@QDeclarativeError@@QBE_NXZ @ 1203 NONAME ; bool QDeclarativeError::isValid(void) const - ??0QMetaMethodBuilder@@QAE@XZ @ 1204 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(void) - ?completed@QDeclarativeState@@IAEXXZ @ 1205 NONAME ; void QDeclarativeState::completed(void) - ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 1206 NONAME ABSENT ; class QString QDeclarativePixmapReply::tr(char const *, char const *, int) - ?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 1207 NONAME ; void QDeclarativeRectangle::radiusChanged(void) - ?getStaticMetaObject@QDeclarativeExpression@@SAABUQMetaObject@@XZ @ 1208 NONAME ; struct QMetaObject const & QDeclarativeExpression::getStaticMetaObject(void) - ?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1209 NONAME ; int QDeclarativeGridScaledImage::gridLeft(void) const - ?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 1210 NONAME ; void QMetaPropertyBuilder::setWritable(bool) - ?qt_metacast@QDeclarativeStateGroup@@UAEPAXPBD@Z @ 1211 NONAME ; void * QDeclarativeStateGroup::qt_metacast(char const *) - ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PAVQObject@@@Z @ 1212 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(class QObject *) - ?qt_metacast@QDeclarativeEngineDebug@@UAEPAXPBD@Z @ 1213 NONAME ; void * QDeclarativeEngineDebug::qt_metacast(char const *) - ?staticMetaObject@QDeclarativeExpression@@2UQMetaObject@@B @ 1214 NONAME ; struct QMetaObject const QDeclarativeExpression::staticMetaObject - ?statusChanged@QDeclarativeComponent@@IAEXW4Status@1@@Z @ 1215 NONAME ; void QDeclarativeComponent::statusChanged(enum QDeclarativeComponent::Status) - ?setTarget@QDeclarativeBinding@@QAEXABVQDeclarativeProperty@@@Z @ 1216 NONAME ; void QDeclarativeBinding::setTarget(class QDeclarativeProperty const &) - ?imageProvider@QDeclarativeEngine@@QBEPAVQDeclarativeImageProvider@@ABVQString@@@Z @ 1217 NONAME ; class QDeclarativeImageProvider * QDeclarativeEngine::imageProvider(class QString const &) const - ?packetsAvailable@QPacketProtocol@@QBE_JXZ @ 1218 NONAME ; long long QPacketProtocol::packetsAvailable(void) const - ?state@QDeclarativeDebugWatch@@QBE?AW4State@1@XZ @ 1219 NONAME ; enum QDeclarativeDebugWatch::State QDeclarativeDebugWatch::state(void) const - ?attachedPropertiesFuncById@QDeclarativeMetaType@@SAP6APAVQObject@@PAV2@@ZH@Z @ 1220 NONAME ; class QObject * (*)(class QObject *) QDeclarativeMetaType::attachedPropertiesFuncById(int) - ?resetBaseline@QDeclarativeAnchors@@QAEXXZ @ 1221 NONAME ; void QDeclarativeAnchors::resetBaseline(void) - ?name@QDeclarativeDebugClient@@QBE?AVQString@@XZ @ 1222 NONAME ; class QString QDeclarativeDebugClient::name(void) const - ?propertyValueInterceptorCast@QDeclarativeType@@QBEHXZ @ 1223 NONAME ; int QDeclarativeType::propertyValueInterceptorCast(void) const - ?setData@QDeclarativeComponent@@QAEXABVQByteArray@@ABVQUrl@@@Z @ 1224 NONAME ; void QDeclarativeComponent::setData(class QByteArray const &, class QUrl const &) - ??4QDeclarativeDomValue@@QAEAAV0@ABV0@@Z @ 1225 NONAME ; class QDeclarativeDomValue & QDeclarativeDomValue::operator=(class QDeclarativeDomValue const &) - ?toString@QDeclarativeListModel@@UBE?AVQString@@H@Z @ 1226 NONAME ; class QString QDeclarativeListModel::toString(int) const - ?resetWidth@QDeclarativeItem@@QAEXXZ @ 1227 NONAME ; void QDeclarativeItem::resetWidth(void) - ??0QDeclarativeProperty@@QAE@ABV0@@Z @ 1228 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QDeclarativeProperty const &) - ?text@QDeclarativeText@@QBE?AVQString@@XZ @ 1229 NONAME ; class QString QDeclarativeText::text(void) const - ??1QDeclarativeDebugObjectQuery@@UAE@XZ @ 1230 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(void) - ?count@QDeclarativeOpenMetaObject@@QBEHXZ @ 1231 NONAME ; int QDeclarativeOpenMetaObject::count(void) const - ?isFlag@QMetaEnumBuilder@@QBE_NXZ @ 1232 NONAME ; bool QMetaEnumBuilder::isFlag(void) const - ?bindingIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1233 NONAME ; int QDeclarativePropertyPrivate::bindingIndex(class QDeclarativeProperty const &) - ??0QDeclarativeDomValueBinding@@QAE@ABV0@@Z @ 1234 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(class QDeclarativeDomValueBinding const &) - ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 1235 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *) - ?classInfoName@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 1236 NONAME ; class QByteArray QMetaObjectBuilder::classInfoName(int) const - ?metaObject@QDeclarativeDebugObjectQuery@@UBEPBUQMetaObject@@XZ @ 1237 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectQuery::metaObject(void) const - ??4QDeclarativeDomDynamicProperty@@QAEAAV0@ABV0@@Z @ 1238 NONAME ; class QDeclarativeDomDynamicProperty & QDeclarativeDomDynamicProperty::operator=(class QDeclarativeDomDynamicProperty const &) - ??_EQDeclarativeDebugEngineReference@@QAE@I@Z @ 1239 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(unsigned int) - ?usedAnchors@QDeclarativeAnchors@@QBE?AV?$QFlags@W4Anchor@QDeclarativeAnchors@@@@XZ @ 1240 NONAME ; class QFlags QDeclarativeAnchors::usedAnchors(void) const - ?baseline@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1241 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::baseline(void) const - ?clear@QDeclarativeListModel@@QAEXXZ @ 1242 NONAME ; void QDeclarativeListModel::clear(void) - ??0QDeclarativeDebugObjectExpressionWatch@@QAE@PAVQObject@@@Z @ 1243 NONAME ; QDeclarativeDebugObjectExpressionWatch::QDeclarativeDebugObjectExpressionWatch(class QObject *) - ??4QDeclarativeDomProperty@@QAEAAV0@ABV0@@Z @ 1244 NONAME ; class QDeclarativeDomProperty & QDeclarativeDomProperty::operator=(class QDeclarativeDomProperty const &) - ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1245 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &) - ?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 1246 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *) - ?borderChanged@QDeclarativeScaleGrid@@IAEXXZ @ 1247 NONAME ; void QDeclarativeScaleGrid::borderChanged(void) - ??1QDeclarativeRectangle@@UAE@XZ @ 1248 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(void) - ?count@QDeclarativePropertyMap@@QBEHXZ @ 1249 NONAME ; int QDeclarativePropertyMap::count(void) const - ?setReturnType@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1250 NONAME ; void QMetaMethodBuilder::setReturnType(class QByteArray const &) - ??0QDeclarativePropertyValueSource@@QAE@XZ @ 1251 NONAME ; QDeclarativePropertyValueSource::QDeclarativePropertyValueSource(void) - ?tr@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 1252 NONAME ; class QString QDeclarativePen::tr(char const *, char const *, int) - ?toLiteral@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueLiteral@@XZ @ 1253 NONAME ; class QDeclarativeDomValueLiteral QDeclarativeDomValue::toLiteral(void) const - ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@_N@Z @ 1254 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, bool) - ?url@QDeclarativeComponent@@QBE?AVQUrl@@XZ @ 1255 NONAME ; class QUrl QDeclarativeComponent::url(void) const - ?componentComplete@QDeclarativeStateGroup@@UAEXXZ @ 1256 NONAME ; void QDeclarativeStateGroup::componentComplete(void) - ?setMargins@QDeclarativeAnchors@@QAEXM@Z @ 1257 NONAME ; void QDeclarativeAnchors::setMargins(float) - ?qt_metacall@QDeclarativeView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1258 NONAME ; int QDeclarativeView::qt_metacall(enum QMetaObject::Call, int, void * *) - ?state@QDeclarativeStateGroup@@QBE?AVQString@@XZ @ 1259 NONAME ; class QString QDeclarativeStateGroup::state(void) const - ??0QDeclarativeDomComponent@@QAE@ABV0@@Z @ 1260 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(class QDeclarativeDomComponent const &) - ?queryAvailableEngines@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugEnginesQuery@@PAVQObject@@@Z @ 1261 NONAME ; class QDeclarativeDebugEnginesQuery * QDeclarativeEngineDebug::queryAvailableEngines(class QObject *) - ??_EQDeclarativeItemPrivate@@UAE@I@Z @ 1262 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(unsigned int) - ?expression@QDeclarativeBinding@@UBE?AVQString@@XZ @ 1263 NONAME ; class QString QDeclarativeBinding::expression(void) const - ?position@QDeclarativeDomProperty@@QBEHXZ @ 1264 NONAME ; int QDeclarativeDomProperty::position(void) const - ?registerValueTypes@QDeclarativeValueTypeFactory@@SAXXZ @ 1265 NONAME ; void QDeclarativeValueTypeFactory::registerValueTypes(void) - ?dynamicProperties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomDynamicProperty@@@@XZ @ 1266 NONAME ; class QList QDeclarativeDomObject::dynamicProperties(void) const - ?attachedPropertiesFunction@QDeclarativeType@@QBEP6APAVQObject@@PAV2@@ZXZ @ 1267 NONAME ; class QObject * (*)(class QObject *) QDeclarativeType::attachedPropertiesFunction(void) const - ??1QDeclarativePropertyMap@@UAE@XZ @ 1268 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(void) - ??_EQDeclarativeExtensionInterface@@UAE@I@Z @ 1269 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(unsigned int) - ??0Variant@QDeclarativeParser@@QAE@NABVQString@@@Z @ 1270 NONAME ; QDeclarativeParser::Variant::Variant(double, class QString const &) - ??6QDeclarativeInfo@@QAEAAV0@VQBool@@@Z @ 1271 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QBool) - ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@PAVQObject@@HHPAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1272 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QObject *, int, int, class QDeclarativeAbstractBinding *, class QFlags) - ?qt_metacast@QDeclarativeDebugExpressionQuery@@UAEPAXPBD@Z @ 1273 NONAME ; void * QDeclarativeDebugExpressionQuery::qt_metacast(char const *) - ?contextProperty@QDeclarativeContext@@QBE?AVQVariant@@ABVQString@@@Z @ 1274 NONAME ; class QVariant QDeclarativeContext::contextProperty(class QString const &) const - ?verticalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1275 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::verticalCenter(void) const - ?metaObject@QDeclarativeScaleGrid@@UBEPBUQMetaObject@@XZ @ 1276 NONAME ; struct QMetaObject const * QDeclarativeScaleGrid::metaObject(void) const - ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 1277 NONAME ABSENT ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *, int) - ?qmlContext@@YAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1278 NONAME ; class QDeclarativeContext * qmlContext(class QObject const *) - ?transform_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 1279 NONAME ; int QDeclarativeItemPrivate::transform_count(class QDeclarativeListProperty *) - ?tr@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 1280 NONAME ; class QString QListModelInterface::tr(char const *, char const *, int) - ??1QDeclarativeDebugFileReference@@QAE@XZ @ 1281 NONAME ; QDeclarativeDebugFileReference::~QDeclarativeDebugFileReference(void) - ?style@QDeclarativeText@@QBE?AW4TextStyle@1@XZ @ 1282 NONAME ; enum QDeclarativeText::TextStyle QDeclarativeText::style(void) const - ??0QDeclarativeAbstractBinding@@QAE@XZ @ 1283 NONAME ; QDeclarativeAbstractBinding::QDeclarativeAbstractBinding(void) - ?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 1284 NONAME ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject - ?cancel@QDeclarativePixmapCache@@SAXABVQUrl@@PAVQObject@@@Z @ 1285 NONAME ABSENT ; void QDeclarativePixmapCache::cancel(class QUrl const &, class QObject *) - ?isError@QDeclarativeComponent@@QBE_NXZ @ 1286 NONAME ; bool QDeclarativeComponent::isError(void) const - ?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1287 NONAME ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *) - ?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 1288 NONAME ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const - ??1QDeclarativeDebugConnection@@UAE@XZ @ 1289 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(void) - ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@H@Z @ 1290 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(int) const - ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 1291 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *, int) - ?setFromState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 1292 NONAME ; void QDeclarativeTransition::setFromState(class QString const &) - ?metaObject@QDeclarativeDebugService@@UBEPBUQMetaObject@@XZ @ 1293 NONAME ; struct QMetaObject const * QDeclarativeDebugService::metaObject(void) const - ?state@QDeclarativeDebugQuery@@QBE?AW4State@1@XZ @ 1294 NONAME ; enum QDeclarativeDebugQuery::State QDeclarativeDebugQuery::state(void) const - ?setBottom@QDeclarativeScaleGrid@@QAEXH@Z @ 1295 NONAME ; void QDeclarativeScaleGrid::setBottom(int) - ?topMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1296 NONAME ; void QDeclarativeAnchors::topMarginChanged(void) - ?itemChange@QDeclarativeItem@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1297 NONAME ; class QVariant QDeclarativeItem::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) - ?position@QDeclarativeDomObject@@QBEHXZ @ 1298 NONAME ; int QDeclarativeDomObject::position(void) const - ?update@QDeclarativeBinding@@UAEXV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1299 NONAME ; void QDeclarativeBinding::update(class QFlags) - ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 1300 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *) - ?isDebuggingEnabled@QDeclarativeDebugService@@SA_NXZ @ 1301 NONAME ; bool QDeclarativeDebugService::isDebuggingEnabled(void) - ?tr@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 1302 NONAME ; class QString QDeclarativeText::tr(char const *, char const *, int) - ?reset@QDeclarativeProperty@@QBE_NXZ @ 1303 NONAME ; bool QDeclarativeProperty::reset(void) const - ?objectDebugId@QDeclarativeDebugWatch@@QBEHXZ @ 1304 NONAME ; int QDeclarativeDebugWatch::objectDebugId(void) const - ?width@QDeclarativeItemPrivate@@UBEMXZ @ 1305 NONAME ; float QDeclarativeItemPrivate::width(void) const - ?d_func@QMetaMethodBuilder@@ABEPAVQMetaMethodBuilderPrivate@@XZ @ 1306 NONAME ; class QMetaMethodBuilderPrivate * QMetaMethodBuilder::d_func(void) const - ?isScript@Variant@QDeclarativeParser@@QBE_NXZ @ 1307 NONAME ; bool QDeclarativeParser::Variant::isScript(void) const - ?classBegin@QDeclarativeStateGroup@@UAEXXZ @ 1308 NONAME ; void QDeclarativeStateGroup::classBegin(void) - ?qt_metacast@QDeclarativeRectangle@@UAEPAXPBD@Z @ 1309 NONAME ; void * QDeclarativeRectangle::qt_metacast(char const *) - ?qt_metacast@QDeclarativeExpression@@UAEPAXPBD@Z @ 1310 NONAME ; void * QDeclarativeExpression::qt_metacast(char const *) - ?indexOfProperty@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1311 NONAME ; int QMetaObjectBuilder::indexOfProperty(class QByteArray const &) - ?vAlign@QDeclarativeText@@QBE?AW4VAlignment@1@XZ @ 1312 NONAME ; enum QDeclarativeText::VAlignment QDeclarativeText::vAlign(void) const - ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQByteArray@@@Z @ 1313 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QByteArray const &) - ??1QDeclarativeError@@QAE@XZ @ 1314 NONAME ; QDeclarativeError::~QDeclarativeError(void) - ?property@QDeclarativeProperty@@QBE?AVQMetaProperty@@XZ @ 1315 NONAME ; class QMetaProperty QDeclarativeProperty::property(void) const - ?tr@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 1316 NONAME ; class QString QDeclarativeText::tr(char const *, char const *) - ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeContext@@@Z @ 1317 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeContext *) - ??0QDeclarativeGridScaledImage@@QAE@XZ @ 1318 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(void) - ?setText@QDeclarativeText@@QAEXABVQString@@@Z @ 1319 NONAME ; void QDeclarativeText::setText(class QString const &) - ?setBaseline@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1320 NONAME ; void QDeclarativeAnchors::setBaseline(class QDeclarativeAnchorLine const &) - ?resetCenterIn@QDeclarativeAnchors@@QAEXXZ @ 1321 NONAME ; void QDeclarativeAnchors::resetCenterIn(void) - ?pixmapUrl@QDeclarativeGridScaledImage@@QBE?AVQString@@XZ @ 1322 NONAME ; class QString QDeclarativeGridScaledImage::pixmapUrl(void) const - ?name@QDeclarativeOpenMetaObject@@QBE?AVQByteArray@@H@Z @ 1323 NONAME ; class QByteArray QDeclarativeOpenMetaObject::name(int) const - ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 1324 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *) - ?getStaticMetaObject@QDeclarativeAnchors@@SAABUQMetaObject@@XZ @ 1325 NONAME ; struct QMetaObject const & QDeclarativeAnchors::getStaticMetaObject(void) - ?qt_metacall@QDeclarativeEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1326 NONAME ; int QDeclarativeEngine::qt_metacall(enum QMetaObject::Call, int, void * *) - ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@@Z @ 1327 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &) - ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 1328 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *) - ?setStaticMetacallFunction@QMetaObjectBuilder@@QAEXP6AHW4Call@QMetaObject@@HPAPAX@Z@Z @ 1329 NONAME ; void QMetaObjectBuilder::setStaticMetacallFunction(int (*)(enum QMetaObject::Call, int, void * *)) - ?properties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomProperty@@@@XZ @ 1330 NONAME ; class QList QDeclarativeDomObject::properties(void) const - ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 1331 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *) - ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 1332 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *, int) - ?dateTimeFromString@QDeclarativeStringConverters@@YA?AVQDateTime@@ABVQString@@PA_N@Z @ 1333 NONAME ; class QDateTime QDeclarativeStringConverters::dateTimeFromString(class QString const &, bool *) - ?implicitWidth@QDeclarativeItem@@QBEMXZ @ 1334 NONAME ; float QDeclarativeItem::implicitWidth(void) const - ?metaObject@QDeclarativeContext@@UBEPBUQMetaObject@@XZ @ 1335 NONAME ; struct QMetaObject const * QDeclarativeContext::metaObject(void) const - ??0QDeclarativeContext@@AAE@PAVQDeclarativeContextData@@@Z @ 1336 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContextData *) - ?maximumPacketSize@QPacketProtocol@@QBEHXZ @ 1337 NONAME ; int QPacketProtocol::maximumPacketSize(void) const - ??_EQDeclarativeDebuggerStatus@@UAE@I@Z @ 1338 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(unsigned int) - ?error@QDeclarativeCustomParser@@IAEXABVQString@@@Z @ 1339 NONAME ; void QDeclarativeCustomParser::error(class QString const &) - ?messageReceived@QDeclarativeDebugService@@MAEXABVQByteArray@@@Z @ 1340 NONAME ; void QDeclarativeDebugService::messageReceived(class QByteArray const &) - ??0QDeclarativeParserStatus@@QAE@XZ @ 1341 NONAME ; QDeclarativeParserStatus::QDeclarativeParserStatus(void) - ?isNumber@Variant@QDeclarativeParser@@QBE_NXZ @ 1342 NONAME ; bool QDeclarativeParser::Variant::isNumber(void) const - ?getStaticMetaObject@QDeclarativeEngineDebug@@SAABUQMetaObject@@XZ @ 1343 NONAME ; struct QMetaObject const & QDeclarativeEngineDebug::getStaticMetaObject(void) - ??_EQDeclarativeEngine@@UAE@I@Z @ 1344 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(unsigned int) - ??1QDeclarativeCustomParserNode@@QAE@XZ @ 1345 NONAME ; QDeclarativeCustomParserNode::~QDeclarativeCustomParserNode(void) - ??1QDeclarativeAction@@QAE@XZ @ 1346 NONAME ; QDeclarativeAction::~QDeclarativeAction(void) - ?resourcesLoading@QDeclarativeText@@QBEHXZ @ 1347 NONAME ; int QDeclarativeText::resourcesLoading(void) const - ?isBoolean@Variant@QDeclarativeParser@@QBE_NXZ @ 1348 NONAME ; bool QDeclarativeParser::Variant::isBoolean(void) const - ??0QDeclarativeAction@@QAE@XZ @ 1349 NONAME ; QDeclarativeAction::QDeclarativeAction(void) - ?signalOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 1350 NONAME ; int QDeclarativeOpenMetaObjectType::signalOffset(void) const - ?index@QMetaEnumBuilder@@QBEHXZ @ 1351 NONAME ; int QMetaEnumBuilder::index(void) const - ?setResettable@QMetaPropertyBuilder@@QAEX_N@Z @ 1352 NONAME ; void QMetaPropertyBuilder::setResettable(bool) - ??0QDeclarativeError@@QAE@ABV0@@Z @ 1353 NONAME ; QDeclarativeError::QDeclarativeError(class QDeclarativeError const &) - ?classInfoCount@QMetaObjectBuilder@@QBEHXZ @ 1354 NONAME ; int QMetaObjectBuilder::classInfoCount(void) const - ?isObject@QDeclarativeDomValue@@QBE_NXZ @ 1355 NONAME ; bool QDeclarativeDomValue::isObject(void) const - ?left@QDeclarativeScaleGrid@@QBEHXZ @ 1356 NONAME ; int QDeclarativeScaleGrid::left(void) const - ?qt_metacast@QDeclarativeDebugEnginesQuery@@UAEPAXPBD@Z @ 1357 NONAME ; void * QDeclarativeDebugEnginesQuery::qt_metacast(char const *) - ?d_func@QDeclarativeView@@AAEPAVQDeclarativeViewPrivate@@XZ @ 1358 NONAME ; class QDeclarativeViewPrivate * QDeclarativeView::d_func(void) - ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugPropertyWatch@@ABVQDeclarativeDebugPropertyReference@@PAVQObject@@@Z @ 1359 NONAME ; class QDeclarativeDebugPropertyWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugPropertyReference const &, class QObject *) - ?stateChanged@QDeclarativeStateGroup@@IAEXABVQString@@@Z @ 1360 NONAME ; void QDeclarativeStateGroup::stateChanged(class QString const &) - ?customStringConverter@QDeclarativeMetaType@@SAP6A?AVQVariant@@ABVQString@@@ZH@Z @ 1361 NONAME ; class QVariant (*)(class QString const &) QDeclarativeMetaType::customStringConverter(int) - ??0QDeclarativeDomValueValueSource@@QAE@XZ @ 1362 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(void) - ?baselineOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 1363 NONAME ; void QDeclarativeAnchors::baselineOffsetChanged(void) - ?tr@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 1364 NONAME ; class QString QDeclarativeView::tr(char const *, char const *, int) - ??4QDeclarativeDebugFileReference@@QAEAAV0@ABV0@@Z @ 1365 NONAME ; class QDeclarativeDebugFileReference & QDeclarativeDebugFileReference::operator=(class QDeclarativeDebugFileReference const &) - ?eventFilter@QDeclarativeView@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 1366 NONAME ; bool QDeclarativeView::eventFilter(class QObject *, class QEvent *) - ??1QDeclarativeView@@UAE@XZ @ 1367 NONAME ; QDeclarativeView::~QDeclarativeView(void) - ?verticalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1368 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::verticalCenter(void) const - ?setIsFlag@QMetaEnumBuilder@@QAEX_N@Z @ 1369 NONAME ; void QMetaEnumBuilder::setIsFlag(bool) - ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 1370 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *, int) - ?majorVersion@QDeclarativeType@@QBEHXZ @ 1371 NONAME ; int QDeclarativeType::majorVersion(void) const - ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 1372 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *) - ?baseUrl@QDeclarativeEngine@@QBE?AVQUrl@@XZ @ 1373 NONAME ; class QUrl QDeclarativeEngine::baseUrl(void) const - ??6QDeclarativeInfo@@QAEAAV0@PBX@Z @ 1374 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(void const *) - ?setTop@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1375 NONAME ; void QDeclarativeAnchors::setTop(class QDeclarativeAnchorLine const &) - ?setEnabled@QDeclarativeBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1376 NONAME ; void QDeclarativeBinding::setEnabled(bool, class QFlags) - ??_EQDeclarativeNetworkAccessManagerFactory@@UAE@I@Z @ 1377 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(unsigned int) - ?qmlTypes@QDeclarativeMetaType@@SA?AV?$QList@PAVQDeclarativeType@@@@XZ @ 1378 NONAME ; class QList QDeclarativeMetaType::qmlTypes(void) - ?valueTypeCoreIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1379 NONAME ; int QDeclarativePropertyPrivate::valueTypeCoreIndex(class QDeclarativeProperty const &) - ?writeEnumProperty@QDeclarativePropertyPrivate@@SA_NABVQMetaProperty@@HPAVQObject@@ABVQVariant@@H@Z @ 1380 NONAME ; bool QDeclarativePropertyPrivate::writeEnumProperty(class QMetaProperty const &, int, class QObject *, class QVariant const &, int) - ?setEnabled@QDeclarativeDebugClient@@QAEX_N@Z @ 1381 NONAME ; void QDeclarativeDebugClient::setEnabled(bool) - ??1QMetaObjectBuilder@@UAE@XZ @ 1382 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(void) - ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 1383 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *) - ?clear@QPacket@@QAEXXZ @ 1384 NONAME ; void QPacket::clear(void) - ?getStaticMetaObject@QDeclarativeDebugClient@@SAABUQMetaObject@@XZ @ 1385 NONAME ; struct QMetaObject const & QDeclarativeDebugClient::getStaticMetaObject(void) - ??0QDeclarativeDomList@@QAE@ABV0@@Z @ 1386 NONAME ; QDeclarativeDomList::QDeclarativeDomList(class QDeclarativeDomList const &) - ?gridTop@QDeclarativeGridScaledImage@@QBEHXZ @ 1387 NONAME ; int QDeclarativeGridScaledImage::gridTop(void) const - ?setUrl@QDeclarativeError@@QAEXABVQUrl@@@Z @ 1388 NONAME ; void QDeclarativeError::setUrl(class QUrl const &) - ?setMaximumPacketSize@QPacketProtocol@@QAEHH@Z @ 1389 NONAME ; int QPacketProtocol::setMaximumPacketSize(int) - ??_EQDeclarativeAction@@QAE@I@Z @ 1390 NONAME ; QDeclarativeAction::~QDeclarativeAction(unsigned int) - ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 1391 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *) - ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@@Z @ 1392 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &) - ?widthValid@QDeclarativeItem@@IBE_NXZ @ 1393 NONAME ; bool QDeclarativeItem::widthValid(void) const - ?staticMetaObject@QDeclarativeState@@2UQMetaObject@@B @ 1394 NONAME ; struct QMetaObject const QDeclarativeState::staticMetaObject - ?setAccess@QMetaMethodBuilder@@QAEXW4Access@QMetaMethod@@@Z @ 1395 NONAME ; void QMetaMethodBuilder::setAccess(enum QMetaMethod::Access) - ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@ABVQVariant@@@Z @ 1396 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QDeclarativeContext *, class QVariant const &) - ?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 1397 NONAME ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject - ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 1398 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *) - ?d_func@QDeclarativeExpression@@ABEPBVQDeclarativeExpressionPrivate@@XZ @ 1399 NONAME ; class QDeclarativeExpressionPrivate const * QDeclarativeExpression::d_func(void) const - ??1QDeclarativeValueType@@UAE@XZ @ 1400 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(void) - ?setBaseUrl@QDeclarativeContext@@QAEXABVQUrl@@@Z @ 1401 NONAME ; void QDeclarativeContext::setBaseUrl(class QUrl const &) - ??_EQDeclarativeAbstractBinding@@UAE@I@Z @ 1402 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(unsigned int) - ?queryExpressionResult@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@PAVQObject@@@Z @ 1403 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::queryExpressionResult(int, class QString const &, class QObject *) - ?indexOfMethod@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1404 NONAME ; int QMetaObjectBuilder::indexOfMethod(class QByteArray const &) - ?setCached@QDeclarativeOpenMetaObject@@QAEX_N@Z @ 1405 NONAME ; void QDeclarativeOpenMetaObject::setCached(bool) - ?length@QDeclarativeDomList@@QBEHXZ @ 1406 NONAME ; int QDeclarativeDomList::length(void) const - ?horizontalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 1407 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::horizontalTileRule(void) const - ??0QDeclarativeCustomParserProperty@@QAE@XZ @ 1408 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(void) - ??1QDeclarativeEngineDebug@@UAE@XZ @ 1409 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(void) - ?qt_metacall@QDeclarativeEngineDebug@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1410 NONAME ; int QDeclarativeEngineDebug::qt_metacall(enum QMetaObject::Call, int, void * *) - ?q_func@QDeclarativeItemPrivate@@ABEPBVQDeclarativeItem@@XZ @ 1411 NONAME ; class QDeclarativeItem const * QDeclarativeItemPrivate::q_func(void) const - ?customParser@QDeclarativeType@@QBEPAVQDeclarativeCustomParser@@XZ @ 1412 NONAME ; class QDeclarativeCustomParser * QDeclarativeType::customParser(void) const - ?setSourceLocation@QDeclarativeExpression@@QAEXABVQString@@H@Z @ 1413 NONAME ; void QDeclarativeExpression::setSourceLocation(class QString const &, int) - ?equal@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1414 NONAME ; bool QDeclarativePropertyPrivate::equal(struct QMetaObject const *, struct QMetaObject const *) - ??_EQDeclarativeExtensionPlugin@@UAE@I@Z @ 1415 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(unsigned int) - ?write@QDeclarativePropertyPrivate@@SA_NPAVQObject@@ABUData@QDeclarativePropertyCache@@ABVQVariant@@PAVQDeclarativeContextData@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1416 NONAME ; bool QDeclarativePropertyPrivate::write(class QObject *, struct QDeclarativePropertyCache::Data const &, class QVariant const &, class QDeclarativeContextData *, class QFlags) - ?debugId@QDeclarativeDebugEngineReference@@QBEHXZ @ 1417 NONAME ; int QDeclarativeDebugEngineReference::debugId(void) const - ?metaObject@QDeclarativeDebugEnginesQuery@@UBEPBUQMetaObject@@XZ @ 1418 NONAME ; struct QMetaObject const * QDeclarativeDebugEnginesQuery::metaObject(void) const - ??_EQDeclarativeScaleGrid@@UAE@I@Z @ 1419 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(unsigned int) - ??1QDeclarativeDebugPropertyReference@@QAE@XZ @ 1420 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(void) - ?componentComplete@QDeclarativeAnchors@@QAEXXZ @ 1421 NONAME ; void QDeclarativeAnchors::componentComplete(void) - ??1QDeclarativeDomObject@@QAE@XZ @ 1422 NONAME ; QDeclarativeDomObject::~QDeclarativeDomObject(void) - ?expression@QDeclarativeDebugObjectExpressionWatch@@QBE?AVQString@@XZ @ 1423 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::expression(void) const - ?metaObject@QListModelInterface@@UBEPBUQMetaObject@@XZ @ 1424 NONAME ; struct QMetaObject const * QListModelInterface::metaObject(void) const - ?key@QMetaEnumBuilder@@QBE?AVQByteArray@@H@Z @ 1425 NONAME ; class QByteArray QMetaEnumBuilder::key(int) const - ?d_func@QMetaEnumBuilder@@ABEPAVQMetaEnumBuilderPrivate@@XZ @ 1426 NONAME ; class QMetaEnumBuilderPrivate * QMetaEnumBuilder::d_func(void) const - ??6QDeclarativeInfo@@QAEAAV0@PBD@Z @ 1427 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char const *) - ?d_func@QDeclarativeState@@AAEPAVQDeclarativeStatePrivate@@XZ @ 1428 NONAME ; class QDeclarativeStatePrivate * QDeclarativeState::d_func(void) - ??0QDeclarativeDebugEnginesQuery@@AAE@PAVQObject@@@Z @ 1429 NONAME ; QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(class QObject *) - ?bottomChanged@QDeclarativeAnchors@@IAEXXZ @ 1430 NONAME ; void QDeclarativeAnchors::bottomChanged(void) - ?qListTypeId@QDeclarativeType@@QBEHXZ @ 1431 NONAME ; int QDeclarativeType::qListTypeId(void) const - ?setSelectedState@QDeclarativeDebuggerStatus@@UAEX_N@Z @ 1432 NONAME ; void QDeclarativeDebuggerStatus::setSelectedState(bool) - ?staticMetaObject@QDeclarativeEngineDebug@@2UQMetaObject@@B @ 1433 NONAME ; struct QMetaObject const QDeclarativeEngineDebug::staticMetaObject - ?setExtends@QDeclarativeState@@QAEXABVQString@@@Z @ 1434 NONAME ; void QDeclarativeState::setExtends(class QString const &) - ??4QDeclarativeError@@QAEAAV0@ABV0@@Z @ 1435 NONAME ; class QDeclarativeError & QDeclarativeError::operator=(class QDeclarativeError const &) - ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 1436 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *, int) - ?d_func@QDeclarativeTransition@@AAEPAVQDeclarativeTransitionPrivate@@XZ @ 1437 NONAME ; class QDeclarativeTransitionPrivate * QDeclarativeTransition::d_func(void) - ?propertyWritten@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1438 NONAME ; void QDeclarativeOpenMetaObject::propertyWritten(int) - ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1439 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *) - ?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 1440 NONAME ; void QDeclarativeDebugFileReference::setColumnNumber(int) - ?drawRect@QDeclarativeRectangle@@AAEXAAVQPainter@@@Z @ 1441 NONAME ; void QDeclarativeRectangle::drawRect(class QPainter &) - ?read@QDeclarativeProperty@@QBE?AVQVariant@@XZ @ 1442 NONAME ; class QVariant QDeclarativeProperty::read(void) const - ?isEmpty@QDeclarativePropertyMap@@QBE_NXZ @ 1443 NONAME ; bool QDeclarativePropertyMap::isEmpty(void) const - ?wantsFocus@QDeclarativeItem@@QBE_NXZ @ 1444 NONAME ; bool QDeclarativeItem::wantsFocus(void) const - ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 1445 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData const &) - ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 1446 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *, int) - ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContext@@1@Z @ 1447 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContext *, class QObject *) - ?tr@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 1448 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *) - ??6QDeclarativeInfo@@QAEAAV0@G@Z @ 1449 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned short) - ??0QDeclarativeStateOperation@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 1450 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObjectPrivate &, class QObject *) - ?notifyOnValueChanged@QDeclarativeExpression@@QBE_NXZ @ 1451 NONAME ; bool QDeclarativeExpression::notifyOnValueChanged(void) const - ?keyPressPreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 1452 NONAME ; void QDeclarativeItem::keyPressPreHandler(class QKeyEvent *) - ?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 1453 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *, int) - ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugFileReference@@PAVQObject@@@Z @ 1454 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugFileReference const &, class QObject *) - ?paintedHeight@QDeclarativeText@@QBEMXZ @ 1455 NONAME ; float QDeclarativeText::paintedHeight(void) const - ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1456 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *) - ?transform@QDeclarativeItem@@QAE?AV?$QDeclarativeListProperty@VQGraphicsTransform@@@@XZ @ 1457 NONAME ; class QDeclarativeListProperty QDeclarativeItem::transform(void) - ?leftChanged@QDeclarativeAnchors@@IAEXXZ @ 1458 NONAME ; void QDeclarativeAnchors::leftChanged(void) - ?topChanged@QDeclarativeAnchors@@IAEXXZ @ 1459 NONAME ; void QDeclarativeAnchors::topChanged(void) - ??0QMetaObjectBuilder@@QAE@XZ @ 1460 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(void) - ?asBoolean@Variant@QDeclarativeParser@@QBE_NXZ @ 1461 NONAME ; bool QDeclarativeParser::Variant::asBoolean(void) const - ?removeEnumerator@QMetaObjectBuilder@@QAEXH@Z @ 1462 NONAME ; void QMetaObjectBuilder::removeEnumerator(int) - ?url@QDeclarativeDomObject@@QBE?AVQUrl@@XZ @ 1463 NONAME ; class QUrl QDeclarativeDomObject::url(void) const - ?getStaticMetaObject@QDeclarativeScaleGrid@@SAABUQMetaObject@@XZ @ 1464 NONAME ; struct QMetaObject const & QDeclarativeScaleGrid::getStaticMetaObject(void) - ?signalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@@Z @ 1465 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::signalExpression(class QDeclarativeProperty const &) - ?networkAccessManagerFactory@QDeclarativeEngine@@QBEPAVQDeclarativeNetworkAccessManagerFactory@@XZ @ 1466 NONAME ; class QDeclarativeNetworkAccessManagerFactory * QDeclarativeEngine::networkAccessManagerFactory(void) const - ?isStringList@Variant@QDeclarativeParser@@QBE_NXZ @ 1467 NONAME ; bool QDeclarativeParser::Variant::isStringList(void) const - ?packetWritten@QPacketProtocol@@IAEXXZ @ 1468 NONAME ; void QPacketProtocol::packetWritten(void) - ?getStaticMetaObject@QDeclarativeDebugObjectQuery@@SAABUQMetaObject@@XZ @ 1469 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectQuery::getStaticMetaObject(void) - ?isSignalProperty@QDeclarativeProperty@@QBE_NXZ @ 1470 NONAME ; bool QDeclarativeProperty::isSignalProperty(void) const - ?d_func@QDeclarativeDebugService@@AAEPAVQDeclarativeDebugServicePrivate@@XZ @ 1471 NONAME ; class QDeclarativeDebugServicePrivate * QDeclarativeDebugService::d_func(void) - ?qmlTypeNames@QDeclarativeMetaType@@SA?AV?$QList@VQByteArray@@@@XZ @ 1472 NONAME ; class QList QDeclarativeMetaType::qmlTypeNames(void) - ?creationContext@QDeclarativeComponent@@QBEPAVQDeclarativeContext@@XZ @ 1473 NONAME ; class QDeclarativeContext * QDeclarativeComponent::creationContext(void) const - ?componentComplete@QDeclarativeItem@@MAEXXZ @ 1474 NONAME ; void QDeclarativeItem::componentComplete(void) - ?enabledChanged@QDeclarativeBehavior@@IAEXXZ @ 1475 NONAME ; void QDeclarativeBehavior::enabledChanged(void) - ?staticMetaObject@QDeclarativeTransition@@2UQMetaObject@@B @ 1476 NONAME ; struct QMetaObject const QDeclarativeTransition::staticMetaObject - ??0QDeclarativeInfo@@AAE@PAVQDeclarativeInfoPrivate@@@Z @ 1477 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfoPrivate *) - ?name@QDeclarativeDebugContextReference@@QBE?AVQString@@XZ @ 1478 NONAME ; class QString QDeclarativeDebugContextReference::name(void) const - ?propertyIndex@QDeclarativeBinding@@UAEHXZ @ 1479 NONAME ; int QDeclarativeBinding::propertyIndex(void) - ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 1480 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *, int) - ?qt_metacast@QDeclarativePropertyMap@@UAEPAXPBD@Z @ 1481 NONAME ; void * QDeclarativePropertyMap::qt_metacast(char const *) - ?classBegin@QDeclarativeAnchors@@QAEXXZ @ 1482 NONAME ; void QDeclarativeAnchors::classBegin(void) - ?color@QDeclarativeText@@QBE?AVQColor@@XZ @ 1483 NONAME ; class QColor QDeclarativeText::color(void) const - ?metaObject@QPacketProtocol@@UBEPBUQMetaObject@@XZ @ 1484 NONAME ; struct QMetaObject const * QPacketProtocol::metaObject(void) const - ??4QDeclarativeGridScaledImage@@QAEAAV0@ABV0@@Z @ 1485 NONAME ; class QDeclarativeGridScaledImage & QDeclarativeGridScaledImage::operator=(class QDeclarativeGridScaledImage const &) - ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 1486 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *) - ??1QDeclarativeScriptString@@QAE@XZ @ 1487 NONAME ; QDeclarativeScriptString::~QDeclarativeScriptString(void) - ??1QDeclarativePropertyValueSource@@UAE@XZ @ 1488 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(void) - ?position@QDeclarativeDomList@@QBEHXZ @ 1489 NONAME ; int QDeclarativeDomList::position(void) const - ?toQObject@QDeclarativeMetaType@@SAPAVQObject@@ABVQVariant@@PA_N@Z @ 1490 NONAME ; class QObject * QDeclarativeMetaType::toQObject(class QVariant const &, bool *) - ??_EQDeclarativeItem@@UAE@I@Z @ 1491 NONAME ; QDeclarativeItem::~QDeclarativeItem(unsigned int) - ?getStaticMetaObject@QDeclarativeContext@@SAABUQMetaObject@@XZ @ 1492 NONAME ; struct QMetaObject const & QDeclarativeContext::getStaticMetaObject(void) - ?metaObject@QDeclarativeListModel@@UBEPBUQMetaObject@@XZ @ 1493 NONAME ; struct QMetaObject const * QDeclarativeListModel::metaObject(void) const - ?transformChanged@QDeclarativeItemPrivate@@UAEXXZ @ 1494 NONAME ; void QDeclarativeItemPrivate::transformChanged(void) - ?remove@QDeclarativeListModel@@QAEXH@Z @ 1495 NONAME ; void QDeclarativeListModel::remove(int) - ?setResizeMode@QDeclarativeView@@QAEXW4ResizeMode@1@@Z @ 1496 NONAME ; void QDeclarativeView::setResizeMode(enum QDeclarativeView::ResizeMode) - ?left@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1497 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::left(void) const - ?flags@QMetaObjectBuilder@@QBE?AV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@XZ @ 1498 NONAME ; class QFlags QMetaObjectBuilder::flags(void) const - ??0QDeclarativeItem@@IAE@AAVQDeclarativeItemPrivate@@PAV0@@Z @ 1499 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItemPrivate &, class QDeclarativeItem *) - ??0QDeclarativeContext@@QAE@PAV0@PAVQObject@@@Z @ 1500 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContext *, class QObject *) - ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 1501 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *) - ??1QDeclarativeDebugEnginesQuery@@UAE@XZ @ 1502 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(void) - ?getStaticMetaObject@QDeclarativeTransition@@SAABUQMetaObject@@XZ @ 1503 NONAME ; struct QMetaObject const & QDeclarativeTransition::getStaticMetaObject(void) - ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 1504 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *, int) - ?metaObject@QDeclarativePropertyMap@@UBEPBUQMetaObject@@XZ @ 1505 NONAME ; struct QMetaObject const * QDeclarativePropertyMap::metaObject(void) const - ?componentRoot@QDeclarativeDomComponent@@QBE?AVQDeclarativeDomObject@@XZ @ 1506 NONAME ; class QDeclarativeDomObject QDeclarativeDomComponent::componentRoot(void) const - ?metaObject@QDeclarativeDebugConnection@@UBEPBUQMetaObject@@XZ @ 1507 NONAME ; struct QMetaObject const * QDeclarativeDebugConnection::metaObject(void) const - ?setTag@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1508 NONAME ; void QMetaMethodBuilder::setTag(class QByteArray const &) - ?objects@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 1509 NONAME ; class QList QDeclarativeDebugContextReference::objects(void) const - ??4Variant@QDeclarativeParser@@QAEAAV01@ABV01@@Z @ 1510 NONAME ; class QDeclarativeParser::Variant & QDeclarativeParser::Variant::operator=(class QDeclarativeParser::Variant const &) - ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1511 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *) - ?setScopeObject@QDeclarativeScriptString@@QAEXPAVQObject@@@Z @ 1512 NONAME ; void QDeclarativeScriptString::setScopeObject(class QObject *) - ??1QDeclarativeBinding@@MAE@XZ @ 1513 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(void) - ?importPlugin@QDeclarativeEngine@@QAE_NABVQString@@0PAV2@@Z @ 1514 NONAME ; bool QDeclarativeEngine::importPlugin(class QString const &, class QString const &, class QString *) - ?setBottomMargin@QDeclarativeAnchors@@QAEXM@Z @ 1515 NONAME ; void QDeclarativeAnchors::setBottomMargin(float) - ?geometryChanged@QDeclarativeItem@@MAEXABVQRectF@@0@Z @ 1516 NONAME ; void QDeclarativeItem::geometryChanged(class QRectF const &, class QRectF const &) - ?toValueSource@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueSource@@XZ @ 1517 NONAME ; class QDeclarativeDomValueValueSource QDeclarativeDomValue::toValueSource(void) const - ?hAlign@QDeclarativeText@@QBE?AW4HAlignment@1@XZ @ 1518 NONAME ; enum QDeclarativeText::HAlignment QDeclarativeText::hAlign(void) const - ?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 1519 NONAME ; class QDeclarativeBinding * QDeclarativeState::when(void) const - ?setRootObject@QDeclarativeView@@MAEXPAVQObject@@@Z @ 1520 NONAME ; void QDeclarativeView::setRootObject(class QObject *) - ?resetBottom@QDeclarativeAnchors@@QAEXXZ @ 1521 NONAME ; void QDeclarativeAnchors::resetBottom(void) - ?qt_metacall@QDeclarativePropertyMap@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1522 NONAME ; int QDeclarativePropertyMap::qt_metacall(enum QMetaObject::Call, int, void * *) - ??0QDeclarativeDebugEngineReference@@QAE@ABV0@@Z @ 1523 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(class QDeclarativeDebugEngineReference const &) - ?objectDebugId@QDeclarativeDebugPropertyReference@@QBEHXZ @ 1524 NONAME ; int QDeclarativeDebugPropertyReference::objectDebugId(void) const - ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 1525 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *) - ??AQDeclarativeValueTypeFactory@@QBEPAVQDeclarativeValueType@@H@Z @ 1526 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::operator[](int) const - ?siblingOrderChange@QDeclarativeItemPrivate@@UAEXXZ @ 1527 NONAME ; void QDeclarativeItemPrivate::siblingOrderChange(void) - ??1QDeclarativeState@@UAE@XZ @ 1528 NONAME ; QDeclarativeState::~QDeclarativeState(void) - ?paint@QDeclarativeText@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1529 NONAME ; void QDeclarativeText::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) - ??1QDeclarativeStateGroup@@UAE@XZ @ 1530 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(void) - ?setEditable@QMetaPropertyBuilder@@QAEX_N@Z @ 1531 NONAME ; void QMetaPropertyBuilder::setEditable(bool) - ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1532 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QDeclarativeProperty const &, class QDeclarativeAbstractBinding *, class QFlags) - ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1533 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *) - ?progress@QDeclarativeComponent@@QBEMXZ @ 1534 NONAME ; float QDeclarativeComponent::progress(void) const - ?d_func@QDeclarativeState@@ABEPBVQDeclarativeStatePrivate@@XZ @ 1535 NONAME ; class QDeclarativeStatePrivate const * QDeclarativeState::d_func(void) const - ??0QListModelInterface@@QAE@PAVQObject@@@Z @ 1536 NONAME ; QListModelInterface::QListModelInterface(class QObject *) - ?pointFFromString@QDeclarativeStringConverters@@YA?AVQPointF@@ABVQString@@PA_N@Z @ 1537 NONAME ; class QPointF QDeclarativeStringConverters::pointFFromString(class QString const &, bool *) - ?propertyCreated@QDeclarativeOpenMetaObject@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1538 NONAME ; void QDeclarativeOpenMetaObject::propertyCreated(int, class QMetaPropertyBuilder &) - ?d_func@QDeclarativeView@@ABEPBVQDeclarativeViewPrivate@@XZ @ 1539 NONAME ; class QDeclarativeViewPrivate const * QDeclarativeView::d_func(void) const - ?rootObject@QDeclarativeView@@QBEPAVQGraphicsObject@@XZ @ 1540 NONAME ; class QGraphicsObject * QDeclarativeView::rootObject(void) const - ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 1541 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *, int) - ?queryObjectRecursive@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1542 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObjectRecursive(class QDeclarativeDebugObjectReference const &, class QObject *) - ?prepare@QDeclarativeTransition@@QAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@PAVQDeclarativeTransitionManager@@@Z @ 1543 NONAME ; void QDeclarativeTransition::prepare(class QList &, class QList &, class QDeclarativeTransitionManager *) - ??6QDeclarativeInfo@@QAEAAV0@ABVQUrl@@@Z @ 1544 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QUrl const &) - ?scopeObject@QDeclarativeExpression@@QBEPAVQObject@@XZ @ 1545 NONAME ; class QObject * QDeclarativeExpression::scopeObject(void) const - ?isValid@QDeclarativeContext@@QBE_NXZ @ 1546 NONAME ; bool QDeclarativeContext::isValid(void) const - ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 1547 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *, int) - ?qmlAttachedPropertiesObjectById@@YAPAVQObject@@HPBV1@_N@Z @ 1548 NONAME ; class QObject * qmlAttachedPropertiesObjectById(int, class QObject const *, bool) - ?d_func@QDeclarativePixmapReply@@ABEPBVQDeclarativePixmapReplyPrivate@@XZ @ 1549 NONAME ABSENT ; class QDeclarativePixmapReplyPrivate const * QDeclarativePixmapReply::d_func(void) const - ?constructorCount@QMetaObjectBuilder@@QBEHXZ @ 1550 NONAME ; int QMetaObjectBuilder::constructorCount(void) const - ??0QDeclarativeDomValueValueInterceptor@@QAE@ABV0@@Z @ 1551 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(class QDeclarativeDomValueValueInterceptor const &) - ?object@QDeclarativeDebugObjectQuery@@QBE?AVQDeclarativeDebugObjectReference@@XZ @ 1552 NONAME ; class QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object(void) const - ??0QMetaPropertyBuilder@@QAE@XZ @ 1553 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(void) - ?toMetaObject@QMetaObjectBuilder@@QBEPAUQMetaObject@@XZ @ 1554 NONAME ; struct QMetaObject * QMetaObjectBuilder::toMetaObject(void) const - ?d_func@QDeclarativeEngine@@AAEPAVQDeclarativeEnginePrivate@@XZ @ 1555 NONAME ; class QDeclarativeEnginePrivate * QDeclarativeEngine::d_func(void) - ?forcedHeight@QDeclarativePixmapReply@@QBEHXZ @ 1556 NONAME ABSENT ; int QDeclarativePixmapReply::forcedHeight(void) const - ?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 1557 NONAME ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject - ?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1558 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &) - ?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1559 NONAME ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void) - ?childrenRectChanged@QDeclarativeItem@@IAEXABVQRectF@@@Z @ 1560 NONAME ; void QDeclarativeItem::childrenRectChanged(class QRectF const &) - ?isDesignable@QDeclarativeProperty@@QBE_NXZ @ 1561 NONAME ; bool QDeclarativeProperty::isDesignable(void) const - ?propertyTypeCategory@QDeclarativePropertyPrivate@@QBE?AW4PropertyTypeCategory@QDeclarativeProperty@@XZ @ 1562 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativePropertyPrivate::propertyTypeCategory(void) const - ?setSize@QDeclarativeItem@@QAEXABVQSizeF@@@Z @ 1563 NONAME ; void QDeclarativeItem::setSize(class QSizeF const &) - ?generateRoundedRect@QDeclarativeRectangle@@AAEXXZ @ 1564 NONAME ; void QDeclarativeRectangle::generateRoundedRect(void) - ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 1565 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *) - ?propertyTypeCategory@QDeclarativeProperty@@QBE?AW4PropertyTypeCategory@1@XZ @ 1566 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativeProperty::propertyTypeCategory(void) const - ??0QPacketAutoSend@@AAE@PAVQPacketProtocol@@@Z @ 1567 NONAME ; QPacketAutoSend::QPacketAutoSend(class QPacketProtocol *) - ?keyCount@QMetaEnumBuilder@@QBEHXZ @ 1568 NONAME ; int QMetaEnumBuilder::keyCount(void) const - ??1QDeclarativeDomProperty@@QAE@XZ @ 1569 NONAME ; QDeclarativeDomProperty::~QDeclarativeDomProperty(void) - ?sendMessage@QDeclarativeDebugService@@QAEXABVQByteArray@@@Z @ 1570 NONAME ; void QDeclarativeDebugService::sendMessage(class QByteArray const &) - ?context@QDeclarativeScriptString@@QBEPAVQDeclarativeContext@@XZ @ 1571 NONAME ; class QDeclarativeContext * QDeclarativeScriptString::context(void) const - ?queryObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1572 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObject(class QDeclarativeDebugObjectReference const &, class QObject *) - ?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 1573 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *, int) - ?setNotifyOnValueChanged@QDeclarativeExpression@@QAEX_N@Z @ 1574 NONAME ; void QDeclarativeExpression::setNotifyOnValueChanged(bool) - ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@AAVQDeclarativeExpressionPrivate@@@Z @ 1575 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &, class QDeclarativeExpressionPrivate &) - ?fillChanged@QDeclarativeAnchors@@IAEXXZ @ 1576 NONAME ; void QDeclarativeAnchors::fillChanged(void) - ?resources_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 1577 NONAME ; void QDeclarativeItemPrivate::resources_append(class QDeclarativeListProperty *, class QObject *) - ??0QDeclarativeComponent@@IAE@AAVQDeclarativeComponentPrivate@@PAVQObject@@@Z @ 1578 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeComponentPrivate &, class QObject *) - ?height@QDeclarativeItem@@QBEMXZ @ 1579 NONAME ; float QDeclarativeItem::height(void) const - ?minorVersion@QDeclarativeType@@QBEHXZ @ 1580 NONAME ; int QDeclarativeType::minorVersion(void) const - ?qt_metacall@QDeclarativeText@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1581 NONAME ; int QDeclarativeText::qt_metacall(enum QMetaObject::Call, int, void * *) - ?event@QDeclarativePixmapReply@@MAE_NPAVQEvent@@@Z @ 1582 NONAME ABSENT ; bool QDeclarativePixmapReply::event(class QEvent *) - ?isConnected@QDeclarativeDebugConnection@@QBE_NXZ @ 1583 NONAME ; bool QDeclarativeDebugConnection::isConnected(void) const - ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 1584 NONAME ABSENT ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *) - ??6QDeclarativeInfo@@QAEAAV0@I@Z @ 1585 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned int) - ?setNetworkAccessManagerFactory@QDeclarativeEngine@@QAEXPAVQDeclarativeNetworkAccessManagerFactory@@@Z @ 1586 NONAME ; void QDeclarativeEngine::setNetworkAccessManagerFactory(class QDeclarativeNetworkAccessManagerFactory *) - ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 1587 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int) - ??AQDeclarativePropertyMap@@QAEAAVQVariant@@ABVQString@@@Z @ 1588 NONAME ; class QVariant & QDeclarativePropertyMap::operator[](class QString const &) - ??0Variant@QDeclarativeParser@@QAE@_N@Z @ 1589 NONAME ; QDeclarativeParser::Variant::Variant(bool) - ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 1590 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *, int) - ??0QDeclarativeStateGroup@@QAE@PAVQObject@@@Z @ 1591 NONAME ; QDeclarativeStateGroup::QDeclarativeStateGroup(class QObject *) - ?count@QDeclarativeListReference@@QBEHXZ @ 1592 NONAME ; int QDeclarativeListReference::count(void) const - ?location@QDeclarativeCustomParserProperty@@QBE?AULocation@QDeclarativeParser@@XZ @ 1593 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserProperty::location(void) const - ?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1594 NONAME ; struct QMetaObject const * QDeclarativePen::metaObject(void) const - ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 1595 NONAME ABSENT ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *) - ?url@QDeclarativeError@@QBE?AVQUrl@@XZ @ 1596 NONAME ; class QUrl QDeclarativeError::url(void) const - ?isBinding@QDeclarativeDomValue@@QBE_NXZ @ 1597 NONAME ; bool QDeclarativeDomValue::isBinding(void) const - ?name@QDeclarativeProperty@@QBE?AVQString@@XZ @ 1598 NONAME ; class QString QDeclarativeProperty::name(void) const - ?asString@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 1599 NONAME ; class QString QDeclarativeParser::Variant::asString(void) const - ?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 1600 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *) - ?sendMessage@QDeclarativeDebugClient@@QAEXABVQByteArray@@@Z @ 1601 NONAME ; void QDeclarativeDebugClient::sendMessage(class QByteArray const &) - ?canAppend@QDeclarativeListReference@@QBE_NXZ @ 1602 NONAME ; bool QDeclarativeListReference::canAppend(void) const - ??_EQDeclarativeComponent@@UAE@I@Z @ 1603 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(unsigned int) - ?get@QDeclarativeItemPrivate@@SAPAV1@PAVQDeclarativeItem@@@Z @ 1604 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItemPrivate::get(class QDeclarativeItem *) - ?staticMetaObject@QDeclarativeView@@2UQMetaObject@@B @ 1605 NONAME ; struct QMetaObject const QDeclarativeView::staticMetaObject - ?objectToString@QDeclarativeDebugService@@SA?AVQString@@PAVQObject@@@Z @ 1606 NONAME ; class QString QDeclarativeDebugService::objectToString(class QObject *) - ?defaultValue@QDeclarativeDomDynamicProperty@@QBE?AVQDeclarativeDomProperty@@XZ @ 1607 NONAME ; class QDeclarativeDomProperty QDeclarativeDomDynamicProperty::defaultValue(void) const - ?relatedMetaObject@QMetaObjectBuilder@@QBEPBUQMetaObject@@H@Z @ 1608 NONAME ; struct QMetaObject const * QMetaObjectBuilder::relatedMetaObject(int) const - ?d_func@QDeclarativePixmapReply@@AAEPAVQDeclarativePixmapReplyPrivate@@XZ @ 1609 NONAME ABSENT ; class QDeclarativePixmapReplyPrivate * QDeclarativePixmapReply::d_func(void) - ?addKey@QMetaEnumBuilder@@QAEHABVQByteArray@@H@Z @ 1610 NONAME ; int QMetaEnumBuilder::addKey(class QByteArray const &, int) - ?setPosHelper@QDeclarativeItemPrivate@@UAEXABVQPointF@@@Z @ 1611 NONAME ; void QDeclarativeItemPrivate::setPosHelper(class QPointF const &) - ?attributes@QMetaMethodBuilder@@QBEHXZ @ 1612 NONAME ; int QMetaMethodBuilder::attributes(void) const - ?lineNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 1613 NONAME ; int QDeclarativeDebugFileReference::lineNumber(void) const - ?setTop@QDeclarativeScaleGrid@@QAEXH@Z @ 1614 NONAME ; void QDeclarativeScaleGrid::setTop(int) - ?metaObject@QDeclarativeItem@@UBEPBUQMetaObject@@XZ @ 1615 NONAME ; struct QMetaObject const * QDeclarativeItem::metaObject(void) const - ?clear@QDeclarativeAbstractBinding@@IAEXXZ @ 1616 NONAME ; void QDeclarativeAbstractBinding::clear(void) - ?start@QDeclarativeItemPrivate@@SAXAAVQElapsedTimer@@@Z @ 1617 NONAME ; void QDeclarativeItemPrivate::start(class QElapsedTimer &) - ?reloadWithResources@QDeclarativeText@@AAEXXZ @ 1618 NONAME ABSENT ; void QDeclarativeText::reloadWithResources(void) - ?stringToRule@QDeclarativeGridScaledImage@@CA?AW4TileMode@QDeclarativeBorderImage@@ABVQString@@@Z @ 1619 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::stringToRule(class QString const &) - ?setHorizontalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1620 NONAME ; void QDeclarativeAnchors::setHorizontalCenter(class QDeclarativeAnchorLine const &) - ?setFocus@QDeclarativeItem@@QAEX_N@Z @ 1621 NONAME ; void QDeclarativeItem::setFocus(bool) - ?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@PBD@Z @ 1622 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, char const *) const - ??4QDeclarativeProperty@@QAEAAV0@ABV0@@Z @ 1623 NONAME ; class QDeclarativeProperty & QDeclarativeProperty::operator=(class QDeclarativeProperty const &) - ?messageReceived@QDeclarativeDebugClient@@MAEXABVQByteArray@@@Z @ 1624 NONAME ; void QDeclarativeDebugClient::messageReceived(class QByteArray const &) - ?setImplicitWidth@QDeclarativeItem@@IAEXM@Z @ 1625 NONAME ; void QDeclarativeItem::setImplicitWidth(float) - ?isInterface@QDeclarativeType@@QBE_NXZ @ 1626 NONAME ; bool QDeclarativeType::isInterface(void) const - ??0QDeclarativeContext@@AAE@PAVQDeclarativeEngine@@_N@Z @ 1627 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, bool) - ?initialValue@QDeclarativeOpenMetaObject@@UAE?AVQVariant@@H@Z @ 1628 NONAME ; class QVariant QDeclarativeOpenMetaObject::initialValue(int) - ?tr@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1629 NONAME ; class QString QDeclarativeView::tr(char const *, char const *) - ?qt_metacall@QPacketProtocol@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1630 NONAME ; int QPacketProtocol::qt_metacall(enum QMetaObject::Call, int, void * *) - ??0QDeclarativeItem@@QAE@PAV0@@Z @ 1631 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItem *) - ?hasDebuggingClient@QDeclarativeDebugService@@SA_NXZ @ 1632 NONAME ; bool QDeclarativeDebugService::hasDebuggingClient(void) - ?staticMetaObject@QDeclarativeContext@@2UQMetaObject@@B @ 1633 NONAME ; struct QMetaObject const QDeclarativeContext::staticMetaObject - ?setContextForObject@QDeclarativeEngine@@SAXPAVQObject@@PAVQDeclarativeContext@@@Z @ 1634 NONAME ; void QDeclarativeEngine::setContextForObject(class QObject *, class QDeclarativeContext *) - ?baselineOffsetChanged@QDeclarativeItem@@IAEXM@Z @ 1635 NONAME ; void QDeclarativeItem::baselineOffsetChanged(float) - ??6QDeclarativeInfo@@QAEAAV0@VQChar@@@Z @ 1636 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QChar) - ?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1637 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, int) - ?status@QDeclarativePixmap@@QBE?AW4Status@1@XZ @ 1638 NONAME ; enum QDeclarativePixmap::Status QDeclarativePixmap::status(void) const - ?error@QDeclarativePixmap@@QBE?AVQString@@XZ @ 1639 NONAME ; class QString QDeclarativePixmap::error(void) const - ??BQDeclarativePixmap@@QBEABVQPixmap@@XZ @ 1640 NONAME ; QDeclarativePixmap::operator class QPixmap const &(void) const - ?tr@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 1641 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *, int) - ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1642 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &) - ?height@QDeclarativePixmap@@QBEHXZ @ 1643 NONAME ; int QDeclarativePixmap::height(void) const - ?implicitSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1644 NONAME ; class QSize const & QDeclarativePixmap::implicitSize(void) const - ?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 1645 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, char const *) - ?clear@QDeclarativePixmap@@QAEXPAVQObject@@@Z @ 1646 NONAME ; void QDeclarativePixmap::clear(class QObject *) - ?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 1647 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, char const *) - ?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 1648 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *, int) - ?isLoading@QDeclarativePixmap@@QBE_NXZ @ 1649 NONAME ; bool QDeclarativePixmap::isLoading(void) const - ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@@Z @ 1650 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &) - ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@_N@Z @ 1651 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, bool) - ??1QDeclarativePixmap@@QAE@XZ @ 1652 NONAME ; QDeclarativePixmap::~QDeclarativePixmap(void) - ??0QDeclarativePixmap@@QAE@XZ @ 1653 NONAME ; QDeclarativePixmap::QDeclarativePixmap(void) - ?isReady@QDeclarativePixmap@@QBE_NXZ @ 1654 NONAME ; bool QDeclarativePixmap::isReady(void) const - ?clear@QDeclarativePixmap@@QAEXXZ @ 1655 NONAME ; void QDeclarativePixmap::clear(void) - ?pixmap@QDeclarativePixmap@@QBEABVQPixmap@@XZ @ 1656 NONAME ; class QPixmap const & QDeclarativePixmap::pixmap(void) const - ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@@Z @ 1657 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &) - ?width@QDeclarativePixmap@@QBEHXZ @ 1658 NONAME ; int QDeclarativePixmap::width(void) const - ?setPixmap@QDeclarativePixmap@@QAEXABVQPixmap@@@Z @ 1659 NONAME ; void QDeclarativePixmap::setPixmap(class QPixmap const &) - ?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1660 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, int) - ?isError@QDeclarativePixmap@@QBE_NXZ @ 1661 NONAME ; bool QDeclarativePixmap::isError(void) const - ?rect@QDeclarativePixmap@@QBE?AVQRect@@XZ @ 1662 NONAME ; class QRect QDeclarativePixmap::rect(void) const - ?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1663 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *) - ?tr@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1664 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *) - ?isNull@QDeclarativePixmap@@QBE_NXZ @ 1665 NONAME ; bool QDeclarativePixmap::isNull(void) const - ?requestSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1666 NONAME ; class QSize const & QDeclarativePixmap::requestSize(void) const - ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1667 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &, class QSize const &) - ?url@QDeclarativePixmap@@QBEABVQUrl@@XZ @ 1668 NONAME ; class QUrl const & QDeclarativePixmap::url(void) const - ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@_N@Z @ 1669 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &, bool) - +EXPORTS + ?write@QDeclarativeProperty@@QBE_NABVQVariant@@@Z @ 1 NONAME ; bool QDeclarativeProperty::write(class QVariant const &) const + ?setStored@QMetaPropertyBuilder@@QAEX_N@Z @ 2 NONAME ; void QMetaPropertyBuilder::setStored(bool) + ?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *, int) + ?qt_metacast@QDeclarativeComponent@@UAEPAXPBD@Z @ 4 NONAME ; void * QDeclarativeComponent::qt_metacast(char const *) + ?name@QDeclarativeDebugService@@QBE?AVQString@@XZ @ 5 NONAME ; class QString QDeclarativeDebugService::name(void) const + ?debugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 6 NONAME ; int QDeclarativeDebugObjectReference::debugId(void) const + ?addPluginPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 7 NONAME ; void QDeclarativeEngine::addPluginPath(class QString const &) + ?name@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 8 NONAME ; class QByteArray QMetaPropertyBuilder::name(void) const + ??6QDeclarativeInfo@@QAEAAV0@_J@Z @ 9 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long long) + ?propertyOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 10 NONAME ; int QDeclarativeOpenMetaObjectType::propertyOffset(void) const + ??0QDeclarativeText@@QAE@PAVQDeclarativeItem@@@Z @ 11 NONAME ; QDeclarativeText::QDeclarativeText(class QDeclarativeItem *) + ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 12 NONAME ABSENT ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *, int) + ?propertyTypeName@QDeclarativeProperty@@QBEPBDXZ @ 13 NONAME ; char const * QDeclarativeProperty::propertyTypeName(void) const + ?wantsFocusChanged@QDeclarativeItem@@IAEX_N@Z @ 14 NONAME ; void QDeclarativeItem::wantsFocusChanged(bool) + ?getStaticMetaObject@QDeclarativeDebugService@@SAABUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const & QDeclarativeDebugService::getStaticMetaObject(void) + ?setLeft@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 16 NONAME ; void QDeclarativeAnchors::setLeft(class QDeclarativeAnchorLine const &) + ?qt_metacall@QDeclarativeExpression@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 17 NONAME ; int QDeclarativeExpression::qt_metacall(enum QMetaObject::Call, int, void * *) + ?staticMetaObject@QDeclarativePen@@2UQMetaObject@@B @ 18 NONAME ; struct QMetaObject const QDeclarativePen::staticMetaObject + ?transformOriginChanged@QDeclarativeItem@@IAEXW4TransformOrigin@1@@Z @ 19 NONAME ; void QDeclarativeItem::transformOriginChanged(enum QDeclarativeItem::TransformOrigin) + ?isStored@QMetaPropertyBuilder@@QBE_NXZ @ 20 NONAME ; bool QMetaPropertyBuilder::isStored(void) const + ?elapsed@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 21 NONAME ; long long QDeclarativeItemPrivate::elapsed(class QElapsedTimer &) + ?clearComponentCache@QDeclarativeEngine@@QAEXXZ @ 22 NONAME ; void QDeclarativeEngine::clearComponentCache(void) + ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 23 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *, int) + ??_EQDeclarativePixmapReply@@UAE@I@Z @ 24 NONAME ABSENT ; QDeclarativePixmapReply::~QDeclarativePixmapReply(unsigned int) + ??1QDeclarativeParserStatus@@UAE@XZ @ 25 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(void) + ?gradient@QDeclarativeRectangle@@QBEPAVQDeclarativeGradient@@XZ @ 26 NONAME ; class QDeclarativeGradient * QDeclarativeRectangle::gradient(void) const + ?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 27 NONAME ; void QMetaPropertyBuilder::setReadable(bool) + ?d_func@QDeclarativeExpression@@AAEPAVQDeclarativeExpressionPrivate@@XZ @ 28 NONAME ; class QDeclarativeExpressionPrivate * QDeclarativeExpression::d_func(void) + ??1QDeclarativeDomValueValueSource@@QAE@XZ @ 29 NONAME ; QDeclarativeDomValueValueSource::~QDeclarativeDomValueValueSource(void) + ??_EQDeclarativeStateGroup@@UAE@I@Z @ 30 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(unsigned int) + ?property@QDeclarativeDomObject@@QBE?AVQDeclarativeDomProperty@@ABVQByteArray@@@Z @ 31 NONAME ; class QDeclarativeDomProperty QDeclarativeDomObject::property(class QByteArray const &) const + ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *, int) + ?location@QDeclarativeCustomParserNode@@QBE?AULocation@QDeclarativeParser@@XZ @ 33 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserNode::location(void) const + ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQString@@PAVQObject@@@Z @ 34 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QString const &, class QObject *) + ?d_func@QDeclarativeContext@@AAEPAVQDeclarativeContextPrivate@@XZ @ 35 NONAME ; class QDeclarativeContextPrivate * QDeclarativeContext::d_func(void) + ?resetLeft@QDeclarativeAnchors@@QAEXXZ @ 36 NONAME ; void QDeclarativeAnchors::resetLeft(void) + ?staticMetaObject@QDeclarativePixmapReply@@2UQMetaObject@@B @ 37 NONAME ABSENT ; struct QMetaObject const QDeclarativePixmapReply::staticMetaObject + ?setOfflineStoragePath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 38 NONAME ; void QDeclarativeEngine::setOfflineStoragePath(class QString const &) + ?getStaticMetaObject@QListModelInterface@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & QListModelInterface::getStaticMetaObject(void) + ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *, int) + ??0QDeclarativeEngine@@QAE@PAVQObject@@@Z @ 41 NONAME ; QDeclarativeEngine::QDeclarativeEngine(class QObject *) + ??0QDeclarativeDebugObjectReference@@QAE@ABV0@@Z @ 42 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(class QDeclarativeDebugObjectReference const &) + ?set@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 43 NONAME ; void QDeclarativeListModel::set(int, class QScriptValue const &) + ?tr@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString QDeclarativeState::tr(char const *, char const *, int) + ?metaObject@QDeclarativeBinding@@UBEPBUQMetaObject@@XZ @ 45 NONAME ; struct QMetaObject const * QDeclarativeBinding::metaObject(void) const + ?setUser@QMetaPropertyBuilder@@QAEX_N@Z @ 46 NONAME ; void QMetaPropertyBuilder::setUser(bool) + ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 47 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *) + ?setHorizontalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 48 NONAME ; void QDeclarativeAnchors::setHorizontalCenterOffset(float) + ??0QDeclarativeProperty@@QAE@XZ @ 49 NONAME ; QDeclarativeProperty::QDeclarativeProperty(void) + ?valueType@QDeclarativeValueTypeFactory@@SAPAVQDeclarativeValueType@@H@Z @ 50 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::valueType(int) + ??1QDeclarativeText@@UAE@XZ @ 51 NONAME ; QDeclarativeText::~QDeclarativeText(void) + ?getStaticMetaObject@QDeclarativeText@@SAABUQMetaObject@@XZ @ 52 NONAME ; struct QMetaObject const & QDeclarativeText::getStaticMetaObject(void) + ?isDesignable@QMetaPropertyBuilder@@QBE_NXZ @ 53 NONAME ; bool QMetaPropertyBuilder::isDesignable(void) const + ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 54 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *, int) + ?errors@QDeclarativeView@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 55 NONAME ; class QList QDeclarativeView::errors(void) const + ??0QPacket@@QAE@ABV0@@Z @ 56 NONAME ; QPacket::QPacket(class QPacket const &) + ??1QDeclarativeDebugObjectExpressionWatch@@UAE@XZ @ 57 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(void) + ?bottom@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 58 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::bottom(void) const + ??_EQDeclarativeDebugObjectQuery@@UAE@I@Z @ 59 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(unsigned int) + ??0QDeclarativeDomObject@@QAE@XZ @ 60 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(void) + ?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 61 NONAME ; class QList QDeclarativeDomDocument::errors(void) const + ?toChanged@QDeclarativeTransition@@IAEXXZ @ 62 NONAME ; void QDeclarativeTransition::toChanged(void) + ?registerAutoParentFunction@QDeclarativePrivate@@YAHP6A?AW4AutoParentResult@1@PAVQObject@@0@Z@Z @ 63 NONAME ; int QDeclarativePrivate::registerAutoParentFunction(enum QDeclarativePrivate::AutoParentResult (*)(class QObject *, class QObject *)) + ?objectOwnership@QDeclarativeEngine@@SA?AW4ObjectOwnership@1@PAVQObject@@@Z @ 64 NONAME ; enum QDeclarativeEngine::ObjectOwnership QDeclarativeEngine::objectOwnership(class QObject *) + ??0QDeclarativeDebugWatch@@QAE@PAVQObject@@@Z @ 65 NONAME ; QDeclarativeDebugWatch::QDeclarativeDebugWatch(class QObject *) + ?value@QDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 66 NONAME ; class QVariant QDeclarativePropertyMap::value(class QString const &) const + ?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *) + ?isWaiting@QDeclarativeDebugQuery@@QBE_NXZ @ 68 NONAME ; bool QDeclarativeDebugQuery::isWaiting(void) const + ??1Variant@QDeclarativeParser@@QAE@XZ @ 69 NONAME ; QDeclarativeParser::Variant::~Variant(void) + ??0Variant@QDeclarativeParser@@QAE@ABVQString@@@Z @ 70 NONAME ; QDeclarativeParser::Variant::Variant(class QString const &) + ?paintedSizeChanged@QDeclarativeText@@IAEXXZ @ 71 NONAME ; void QDeclarativeText::paintedSizeChanged(void) + ??1QDeclarativeDebugClient@@UAE@XZ @ 72 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(void) + ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 73 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *) + ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 74 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *) + ?qt_metacast@QDeclarativeState@@UAEPAXPBD@Z @ 75 NONAME ; void * QDeclarativeState::qt_metacast(char const *) + ??1QDeclarativeDebugContextReference@@QAE@XZ @ 76 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(void) + ?getStaticMetaObject@QDeclarativeStateOperation@@SAABUQMetaObject@@XZ @ 77 NONAME ; struct QMetaObject const & QDeclarativeStateOperation::getStaticMetaObject(void) + ?isInvalid@QDeclarativeDomValue@@QBE_NXZ @ 78 NONAME ; bool QDeclarativeDomValue::isInvalid(void) const + ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 79 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *, int) + ??0QDeclarativeListReference@@QAE@ABV0@@Z @ 80 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QDeclarativeListReference const &) + ?registerType@QDeclarativePrivate@@YAHABURegisterInterface@1@@Z @ 81 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterInterface const &) + ?classBegin@QDeclarativeItem@@MAEXXZ @ 82 NONAME ; void QDeclarativeItem::classBegin(void) + ?setTransformOrigin@QDeclarativeItem@@QAEXW4TransformOrigin@1@@Z @ 83 NONAME ; void QDeclarativeItem::setTransformOrigin(enum QDeclarativeItem::TransformOrigin) + ?request@QDeclarativePixmapCache@@SAPAVQDeclarativePixmapReply@@PAVQDeclarativeEngine@@ABVQUrl@@HH@Z @ 84 NONAME ABSENT ; class QDeclarativePixmapReply * QDeclarativePixmapCache::request(class QDeclarativeEngine *, class QUrl const &, int, int) + ?event@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 85 NONAME ; bool QDeclarativeItem::event(class QEvent *) + ?setAttributes@QMetaMethodBuilder@@QAEXH@Z @ 86 NONAME ; void QMetaMethodBuilder::setAttributes(int) + ??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 87 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int) + ?qt_metacall@QDeclarativeDebugQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 88 NONAME ; int QDeclarativeDebugQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?findState@QDeclarativeStateGroup@@QBEPAVQDeclarativeState@@ABVQString@@@Z @ 89 NONAME ; class QDeclarativeState * QDeclarativeStateGroup::findState(class QString const &) const + ?asScript@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 90 NONAME ; class QString QDeclarativeParser::Variant::asScript(void) const + ?qt_metacast@QDeclarativeExtensionPlugin@@UAEPAXPBD@Z @ 91 NONAME ; void * QDeclarativeExtensionPlugin::qt_metacast(char const *) + ?objectId@QDeclarativeDomObject@@QBE?AVQString@@XZ @ 92 NONAME ; class QString QDeclarativeDomObject::objectId(void) const + ?right@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 93 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::right(void) const + ?removeFromObject@QDeclarativeAbstractBinding@@QAEXXZ @ 94 NONAME ; void QDeclarativeAbstractBinding::removeFromObject(void) + ?resizeMode@QDeclarativeView@@QBE?AW4ResizeMode@1@XZ @ 95 NONAME ; enum QDeclarativeView::ResizeMode QDeclarativeView::resizeMode(void) const + ?object@QDeclarativeOpenMetaObject@@QBEPAVQObject@@XZ @ 96 NONAME ; class QObject * QDeclarativeOpenMetaObject::object(void) const + ?staticMetaObject@QDeclarativeBehavior@@2UQMetaObject@@B @ 97 NONAME ; struct QMetaObject const QDeclarativeBehavior::staticMetaObject + ?toObject@QDeclarativeDomValue@@QBE?AVQDeclarativeDomObject@@XZ @ 98 NONAME ; class QDeclarativeDomObject QDeclarativeDomValue::toObject(void) const + ?setLine@QDeclarativeError@@QAEXH@Z @ 99 NONAME ; void QDeclarativeError::setLine(int) + ??6QDeclarativeInfo@@QAEAAV0@K@Z @ 100 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long) + ??0QDeclarativeDebugConnection@@QAE@PAVQObject@@@Z @ 101 NONAME ; QDeclarativeDebugConnection::QDeclarativeDebugConnection(class QObject *) + ?qt_metacast@QDeclarativeDebugQuery@@UAEPAXPBD@Z @ 102 NONAME ; void * QDeclarativeDebugQuery::qt_metacast(char const *) + ?isValid@QDeclarativeGridScaledImage@@QBE_NXZ @ 103 NONAME ; bool QDeclarativeGridScaledImage::isValid(void) const + ?qt_metacast@QDeclarativeContext@@UAEPAXPBD@Z @ 104 NONAME ; void * QDeclarativeContext::qt_metacast(char const *) + ?metaObject@QDeclarativeDebugClient@@UBEPBUQMetaObject@@XZ @ 105 NONAME ; struct QMetaObject const * QDeclarativeDebugClient::metaObject(void) const + ?transitions@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 106 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::transitions(void) + ??0QDeclarativeDebugPropertyWatch@@QAE@PAVQObject@@@Z @ 107 NONAME ; QDeclarativeDebugPropertyWatch::QDeclarativeDebugPropertyWatch(class QObject *) + ??_EQDeclarativeDebugPropertyReference@@QAE@I@Z @ 108 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(unsigned int) + ?itemsChanged@QListModelInterface@@IAEXHHABV?$QList@H@@@Z @ 109 NONAME ; void QListModelInterface::itemsChanged(int, int, class QList const &) + ??6@YA?AVQDebug@@V0@PAVQDeclarativeItem@@@Z @ 110 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeItem *) + ?write@QDeclarativePropertyPrivate@@SA_NABVQDeclarativeProperty@@ABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 111 NONAME ; bool QDeclarativePropertyPrivate::write(class QDeclarativeProperty const &, class QVariant const &, class QFlags) + ?verticalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 112 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::verticalTileRule(void) const + ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 113 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *) + ?isDynamic@QMetaPropertyBuilder@@QBE_NXZ @ 114 NONAME ; bool QMetaPropertyBuilder::isDynamic(void) const + ?removeClassInfo@QMetaObjectBuilder@@QAEXH@Z @ 115 NONAME ; void QMetaObjectBuilder::removeClassInfo(int) + ?warnings@QDeclarativeEngine@@IAEXABV?$QList@VQDeclarativeError@@@@@Z @ 116 NONAME ; void QDeclarativeEngine::warnings(class QList const &) + ?description@QDeclarativeError@@QBE?AVQString@@XZ @ 117 NONAME ; class QString QDeclarativeError::description(void) const + ?binding@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 118 NONAME ; class QString QDeclarativeDebugPropertyReference::binding(void) const + ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 119 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *) + ?readValueProperty@QDeclarativePropertyPrivate@@QAE?AVQVariant@@XZ @ 120 NONAME ; class QVariant QDeclarativePropertyPrivate::readValueProperty(void) + ?propertyType@QDeclarativeDomDynamicProperty@@QBEHXZ @ 121 NONAME ; int QDeclarativeDomDynamicProperty::propertyType(void) const + ?gridBottom@QDeclarativeGridScaledImage@@QBEHXZ @ 122 NONAME ; int QDeclarativeGridScaledImage::gridBottom(void) const + ?setRadius@QDeclarativeRectangle@@QAEXM@Z @ 123 NONAME ; void QDeclarativeRectangle::setRadius(float) + ?d_func@QDeclarativeBehavior@@AAEPAVQDeclarativeBehaviorPrivate@@XZ @ 124 NONAME ; class QDeclarativeBehaviorPrivate * QDeclarativeBehavior::d_func(void) + ?isValid@QDeclarativePen@@QAE_NXZ @ 125 NONAME ; bool QDeclarativePen::isValid(void) + ?result@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 126 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::result(void) const + ?isEnumOrFlag@QMetaPropertyBuilder@@QBE_NXZ @ 127 NONAME ; bool QMetaPropertyBuilder::isEnumOrFlag(void) const + ?addToObject@QDeclarativeAbstractBinding@@QAEXPAVQObject@@@Z @ 128 NONAME ; void QDeclarativeAbstractBinding::addToObject(class QObject *) + ?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 129 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *, int) + ?d_func@QDeclarativeAnchors@@AAEPAVQDeclarativeAnchorsPrivate@@XZ @ 130 NONAME ; class QDeclarativeAnchorsPrivate * QDeclarativeAnchors::d_func(void) + ??1QPacket@@UAE@XZ @ 131 NONAME ; QPacket::~QPacket(void) + ?top@QDeclarativeScaleGrid@@QBEHXZ @ 132 NONAME ; int QDeclarativeScaleGrid::top(void) const + ?setExpression@QDeclarativeExpression@@QAEXABVQString@@@Z @ 133 NONAME ; void QDeclarativeExpression::setExpression(class QString const &) + ??1QDeclarativeDebugEngineReference@@QAE@XZ @ 134 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(void) + ??0QDeclarativeStateOperation@@QAE@PAVQObject@@@Z @ 135 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObject *) + ?transform_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 136 NONAME ; void QDeclarativeItemPrivate::transform_clear(class QDeclarativeListProperty *) + ?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 137 NONAME ; struct QMetaObject const QDeclarativeValueType::staticMetaObject + ?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 138 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const + ?getStaticMetaObject@QDeclarativePixmapReply@@SAABUQMetaObject@@XZ @ 139 NONAME ABSENT ; struct QMetaObject const & QDeclarativePixmapReply::getStaticMetaObject(void) + ?focusChanged@QDeclarativeItem@@IAEX_N@Z @ 140 NONAME ; void QDeclarativeItem::focusChanged(bool) + ?getStaticMetaObject@QDeclarativeBinding@@SAABUQMetaObject@@XZ @ 141 NONAME ; struct QMetaObject const & QDeclarativeBinding::getStaticMetaObject(void) + ?copy@QDeclarativeMetaType@@SA_NHPAXPBX@Z @ 142 NONAME ; bool QDeclarativeMetaType::copy(int, void *, void const *) + ?qt_metacall@QDeclarativeDebugEnginesQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 143 NONAME ; int QDeclarativeDebugEnginesQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 144 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *) + ?setEnumOrFlag@QMetaPropertyBuilder@@QAEX_N@Z @ 145 NONAME ; void QMetaPropertyBuilder::setEnumOrFlag(bool) + ?getStaticMetaObject@QDeclarativeRectangle@@SAABUQMetaObject@@XZ @ 146 NONAME ; struct QMetaObject const & QDeclarativeRectangle::getStaticMetaObject(void) + ?isValid@QDeclarativeProperty@@QBE_NXZ @ 147 NONAME ; bool QDeclarativeProperty::isValid(void) const + ?isConnected@QDeclarativeDebugClient@@QBE_NXZ @ 148 NONAME ; bool QDeclarativeDebugClient::isConnected(void) const + ?enabled@QDeclarativeBinding@@QBE_NXZ @ 149 NONAME ; bool QDeclarativeBinding::enabled(void) const + ?setSource@QDeclarativeView@@QAEXABVQUrl@@@Z @ 150 NONAME ; void QDeclarativeView::setSource(class QUrl const &) + ??_EQDeclarativeDebugService@@UAE@I@Z @ 151 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(unsigned int) + ??0QDeclarativeDomDynamicProperty@@QAE@ABV0@@Z @ 152 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(class QDeclarativeDomDynamicProperty const &) + ?className@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 153 NONAME ; class QString QDeclarativeDebugObjectReference::className(void) const + ?indexOfSlot@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 154 NONAME ; int QMetaObjectBuilder::indexOfSlot(class QByteArray const &) + ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 155 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *, int) + ?progressChanged@QDeclarativeComponent@@IAEXM@Z @ 156 NONAME ; void QDeclarativeComponent::progressChanged(float) + ?hasError@QDeclarativeExpression@@QBE_NXZ @ 157 NONAME ; bool QDeclarativeExpression::hasError(void) const + ?property@QMetaObjectBuilder@@QBE?AVQMetaPropertyBuilder@@H@Z @ 158 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::property(int) const + ?index@QDeclarativeType@@QBEHXZ @ 159 NONAME ; int QDeclarativeType::index(void) const + ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 160 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *) + ?release@QDeclarativePixmapReply@@AAE_N_N@Z @ 161 NONAME ABSENT ; bool QDeclarativePixmapReply::release(bool) + ??0QDeclarativeScaleGrid@@QAE@PAVQObject@@@Z @ 162 NONAME ; QDeclarativeScaleGrid::QDeclarativeScaleGrid(class QObject *) + ?engines@QDeclarativeDebugEnginesQuery@@QBE?AV?$QList@VQDeclarativeDebugEngineReference@@@@XZ @ 163 NONAME ; class QList QDeclarativeDebugEnginesQuery::engines(void) const + ?qt_metacall@QDeclarativeDebugPropertyWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 164 NONAME ; int QDeclarativeDebugPropertyWatch::qt_metacall(enum QMetaObject::Call, int, void * *) + ?metaObject@QDeclarativeAnchors@@UBEPBUQMetaObject@@XZ @ 165 NONAME ; struct QMetaObject const * QDeclarativeAnchors::metaObject(void) const + ?sceneResized@QDeclarativeView@@IAEXVQSize@@@Z @ 166 NONAME ; void QDeclarativeView::sceneResized(class QSize) + ?subFocusItemChange@QDeclarativeItemPrivate@@UAEXXZ @ 167 NONAME ; void QDeclarativeItemPrivate::subFocusItemChange(void) + ?hasNotifySignal@QDeclarativeDebugPropertyReference@@QBE_NXZ @ 168 NONAME ; bool QDeclarativeDebugPropertyReference::hasNotifySignal(void) const + ?addSlot@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 169 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSlot(class QByteArray const &) + ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 170 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *) + ?propertyCreated@QDeclarativeOpenMetaObjectType@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 171 NONAME ; void QDeclarativeOpenMetaObjectType::propertyCreated(int, class QMetaPropertyBuilder &) + ??1QDeclarativeItemPrivate@@UAE@XZ @ 172 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(void) + ?clear@QDeclarativePropertyMap@@QAEXABVQString@@@Z @ 173 NONAME ; void QDeclarativePropertyMap::clear(class QString const &) + ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 174 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *, int) + ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 175 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeEngine *) + ?insert@QDeclarativePropertyMap@@QAEXABVQString@@ABVQVariant@@@Z @ 176 NONAME ; void QDeclarativePropertyMap::insert(class QString const &, class QVariant const &) + ??1QDeclarativeContext@@UAE@XZ @ 177 NONAME ; QDeclarativeContext::~QDeclarativeContext(void) + ?operationCount@QDeclarativeState@@QBEHXZ @ 178 NONAME ; int QDeclarativeState::operationCount(void) const + ?getStaticMetaObject@QDeclarativeItem@@SAABUQMetaObject@@XZ @ 179 NONAME ; struct QMetaObject const & QDeclarativeItem::getStaticMetaObject(void) + ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 180 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *, int) + ?status@QDeclarativeComponent@@QBE?AW4Status@1@XZ @ 181 NONAME ; enum QDeclarativeComponent::Status QDeclarativeComponent::status(void) const + ?boundingRect@QDeclarativeItem@@UBE?AVQRectF@@XZ @ 182 NONAME ; class QRectF QDeclarativeItem::boundingRect(void) const + ?availableInVersion@QDeclarativeType@@QBE_NHH@Z @ 183 NONAME ; bool QDeclarativeType::availableInVersion(int, int) const + ?getStaticMetaObject@QDeclarativeDebugWatch@@SAABUQMetaObject@@XZ @ 184 NONAME ; struct QMetaObject const & QDeclarativeDebugWatch::getStaticMetaObject(void) + ??_EQDeclarativeRectangle@@UAE@I@Z @ 185 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(unsigned int) + ?setTopMargin@QDeclarativeAnchors@@QAEXM@Z @ 186 NONAME ; void QDeclarativeAnchors::setTopMargin(float) + ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 187 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &) + ??1QDeclarativeValueTypeFactory@@QAE@XZ @ 188 NONAME ; QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory(void) + ?metaObject@QDeclarativeDebugObjectExpressionWatch@@UBEPBUQMetaObject@@XZ @ 189 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectExpressionWatch::metaObject(void) const + ??0QDeclarativeComponent@@QAE@PAVQObject@@@Z @ 190 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QObject *) + ?qt_metacast@QDeclarativeItem@@UAEPAXPBD@Z @ 191 NONAME ; void * QDeclarativeItem::qt_metacast(char const *) + ?changes@QDeclarativeState@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeStateOperation@@@@XZ @ 192 NONAME ; class QDeclarativeListProperty QDeclarativeState::changes(void) + ?resizeEvent@QDeclarativeView@@MAEXPAVQResizeEvent@@@Z @ 193 NONAME ; void QDeclarativeView::resizeEvent(class QResizeEvent *) + ?d_func@QDeclarativeBinding@@ABEPBVQDeclarativeBindingPrivate@@XZ @ 194 NONAME ; class QDeclarativeBindingPrivate const * QDeclarativeBinding::d_func(void) const + ?wrapMode@QDeclarativeText@@QBE?AW4WrapMode@1@XZ @ 195 NONAME ; enum QDeclarativeText::WrapMode QDeclarativeText::wrapMode(void) const + ?centerIn@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 196 NONAME ; class QGraphicsObject * QDeclarativeAnchors::centerIn(void) const + ??0QDeclarativeType@@AAE@HABURegisterType@QDeclarativePrivate@@@Z @ 197 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterType const &) + ?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 198 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *, int) + ??0QMetaObjectBuilder@@QAE@PBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 199 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(struct QMetaObject const *, class QFlags) + ?quit@QDeclarativeEngine@@IAEXXZ @ 200 NONAME ; void QDeclarativeEngine::quit(void) + ??0QMetaEnumBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 201 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(class QMetaObjectBuilder const *, int) + ?setBottom@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 202 NONAME ; void QDeclarativeAnchors::setBottom(class QDeclarativeAnchorLine const &) + ??0QDeclarativeCustomParser@@QAE@XZ @ 203 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(void) + ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 204 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(class QByteArray const &) const + ?styleColor@QDeclarativeText@@QBE?AVQColor@@XZ @ 205 NONAME ; class QColor QDeclarativeText::styleColor(void) const + ?centerInChanged@QDeclarativeAnchors@@IAEXXZ @ 206 NONAME ; void QDeclarativeAnchors::centerInChanged(void) + ?colorChanged@QDeclarativeRectangle@@IAEXXZ @ 207 NONAME ; void QDeclarativeRectangle::colorChanged(void) + ??0QDeclarativePropertyPrivate@@QAE@ABV0@@Z @ 208 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(class QDeclarativePropertyPrivate const &) + ?loadUrl@QDeclarativeComponent@@QAEXABVQUrl@@@Z @ 209 NONAME ; void QDeclarativeComponent::loadUrl(class QUrl const &) + ?beginCreate@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 210 NONAME ; class QObject * QDeclarativeComponent::beginCreate(class QDeclarativeContext *) + ?setRight@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 211 NONAME ; void QDeclarativeAnchors::setRight(class QDeclarativeAnchorLine const &) + ?needsNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 212 NONAME ; bool QDeclarativeProperty::needsNotifySignal(void) const + ?fill@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 213 NONAME ; class QGraphicsObject * QDeclarativeAnchors::fill(void) const + ?url@QDeclarativePixmapReply@@QBEABVQUrl@@XZ @ 214 NONAME ABSENT ; class QUrl const & QDeclarativePixmapReply::url(void) const + ?top@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 215 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::top(void) const + ?clear@QDeclarativeListReference@@QBE_NXZ @ 216 NONAME ; bool QDeclarativeListReference::clear(void) const + ?parentChanged@QDeclarativeItem@@IAEXPAV1@@Z @ 217 NONAME ; void QDeclarativeItem::parentChanged(class QDeclarativeItem *) + ?columnNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 218 NONAME ; int QDeclarativeDebugFileReference::columnNumber(void) const + ??0QDeclarativeListModel@@AAE@_NPAVQObject@@@Z @ 219 NONAME ; QDeclarativeListModel::QDeclarativeListModel(bool, class QObject *) + ?apply@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@PAVQDeclarativeTransition@@PAV1@@Z @ 220 NONAME ; void QDeclarativeState::apply(class QDeclarativeStateGroup *, class QDeclarativeTransition *, class QDeclarativeState *) + ?isValid@QDeclarativeDomProperty@@QBE_NXZ @ 221 NONAME ; bool QDeclarativeDomProperty::isValid(void) const + ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 222 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *) + ?statusChanged@QDeclarativeView@@IAEXW4Status@1@@Z @ 223 NONAME ; void QDeclarativeView::statusChanged(enum QDeclarativeView::Status) + ?componentComplete@QDeclarativeText@@UAEXXZ @ 224 NONAME ; void QDeclarativeText::componentComplete(void) + ?canCount@QDeclarativeListReference@@QBE_NXZ @ 225 NONAME ; bool QDeclarativeListReference::canCount(void) const + ??1QListModelInterface@@UAE@XZ @ 226 NONAME ; QListModelInterface::~QListModelInterface(void) + ??0QDeclarativeAnchors@@QAE@PAVQObject@@@Z @ 227 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QObject *) + ?resources_at@QDeclarativeItemPrivate@@SAPAVQObject@@PAV?$QDeclarativeListProperty@VQObject@@@@H@Z @ 228 NONAME ; class QObject * QDeclarativeItemPrivate::resources_at(class QDeclarativeListProperty *, int) + ?isExtendedType@QDeclarativeType@@QBE_NXZ @ 229 NONAME ; bool QDeclarativeType::isExtendedType(void) const + ?top@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 230 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::top(void) const + ??0QDeclarativePropertyMap@@QAE@PAVQObject@@@Z @ 231 NONAME ; QDeclarativePropertyMap::QDeclarativePropertyMap(class QObject *) + ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAXPAVQDeclarativeRefCount@@PAVQObject@@ABVQString@@HAAVQDeclarativeExpressionPrivate@@@Z @ 232 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, void *, class QDeclarativeRefCount *, class QObject *, class QString const &, int, class QDeclarativeExpressionPrivate &) + ?setColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 233 NONAME ; void QDeclarativeText::setColor(class QColor const &) + ?hasStdCppSet@QMetaPropertyBuilder@@QBE_NXZ @ 234 NONAME ; bool QMetaPropertyBuilder::hasStdCppSet(void) const + ??0QDeclarativeDebugFileReference@@QAE@ABV0@@Z @ 235 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(class QDeclarativeDebugFileReference const &) + ?toValueInterceptor@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueInterceptor@@XZ @ 236 NONAME ; class QDeclarativeDomValueValueInterceptor QDeclarativeDomValue::toValueInterceptor(void) const + ??0QDeclarativeDebugEngineReference@@QAE@H@Z @ 237 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(int) + ?state@QDeclarativeItemPrivate@@QBE?AVQString@@XZ @ 238 NONAME ; class QString QDeclarativeItemPrivate::state(void) const + ??1QDeclarativePropertyValueInterceptor@@UAE@XZ @ 239 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(void) + ?getStaticMetaObject@QDeclarativePropertyMap@@SAABUQMetaObject@@XZ @ 240 NONAME ; struct QMetaObject const & QDeclarativePropertyMap::getStaticMetaObject(void) + ??1QDeclarativeScaleGrid@@UAE@XZ @ 241 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(void) + ?idString@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 242 NONAME ; class QString QDeclarativeDebugObjectReference::idString(void) const + ?customTypeData@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 243 NONAME ; class QByteArray QDeclarativeDomObject::customTypeData(void) const + ?stop@QDeclarativeTransition@@QAEXXZ @ 244 NONAME ; void QDeclarativeTransition::stop(void) + ?data@QDeclarativeListModel@@UBE?AV?$QHash@HVQVariant@@@@HABV?$QList@H@@@Z @ 245 NONAME ; class QHash QDeclarativeListModel::data(int, class QList const &) const + ?verticalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 246 NONAME ; float QDeclarativeAnchors::verticalCenterOffset(void) const + ?metaObject@QDeclarativeText@@UBEPBUQMetaObject@@XZ @ 247 NONAME ; struct QMetaObject const * QDeclarativeText::metaObject(void) const + ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 248 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QObject *) + ?createProperty@QDeclarativeOpenMetaObjectType@@QAEHABVQByteArray@@@Z @ 249 NONAME ; int QDeclarativeOpenMetaObjectType::createProperty(class QByteArray const &) + ??0QDeclarativeContext@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 250 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, class QObject *) + ??6QDeclarativeInfo@@QAEAAV0@M@Z @ 251 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(float) + ??4QDeclarativeDomValueLiteral@@QAEAAV0@ABV0@@Z @ 252 NONAME ; class QDeclarativeDomValueLiteral & QDeclarativeDomValueLiteral::operator=(class QDeclarativeDomValueLiteral const &) + ?setScript@QDeclarativeScriptString@@QAEXABVQString@@@Z @ 253 NONAME ; void QDeclarativeScriptString::setScript(class QString const &) + ?qt_metacast@QPacketProtocol@@UAEPAXPBD@Z @ 254 NONAME ; void * QPacketProtocol::qt_metacast(char const *) + ?addMetaObject@QMetaObjectBuilder@@QAEXPBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 255 NONAME ; void QMetaObjectBuilder::addMetaObject(struct QMetaObject const *, class QFlags) + ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 256 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *, int) + ?qt_metacast@QDeclarativeText@@UAEPAXPBD@Z @ 257 NONAME ; void * QDeclarativeText::qt_metacast(char const *) + ?anchors@QDeclarativeItemPrivate@@QAEPAVQDeclarativeAnchors@@XZ @ 258 NONAME ; class QDeclarativeAnchors * QDeclarativeItemPrivate::anchors(void) + ??0QListModelInterface@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 259 NONAME ; QListModelInterface::QListModelInterface(class QObjectPrivate &, class QObject *) + ?valueTypeName@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 260 NONAME ; class QString QDeclarativeDebugPropertyReference::valueTypeName(void) const + ?setStyleColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 261 NONAME ; void QDeclarativeText::setStyleColor(class QColor const &) + ?create@QDeclarativeType@@QBEPAVQObject@@XZ @ 262 NONAME ; class QObject * QDeclarativeType::create(void) const + ?metaObject@QDeclarativeDebugExpressionQuery@@UBEPBUQMetaObject@@XZ @ 263 NONAME ; struct QMetaObject const * QDeclarativeDebugExpressionQuery::metaObject(void) const + ?readyRead@QPacketProtocol@@IAEXXZ @ 264 NONAME ; void QPacketProtocol::readyRead(void) + ?qt_metacall@QDeclarativeValueType@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 265 NONAME ; int QDeclarativeValueType::qt_metacall(enum QMetaObject::Call, int, void * *) + ?propertyType@QDeclarativePropertyPrivate@@QBEHXZ @ 266 NONAME ; int QDeclarativePropertyPrivate::propertyType(void) const + ?engine@QDeclarativeView@@QAEPAVQDeclarativeEngine@@XZ @ 267 NONAME ; class QDeclarativeEngine * QDeclarativeView::engine(void) + ?inputMethodQuery@QDeclarativeItem@@MBE?AVQVariant@@W4InputMethodQuery@Qt@@@Z @ 268 NONAME ; class QVariant QDeclarativeItem::inputMethodQuery(enum Qt::InputMethodQuery) const + ?sizeHint@QDeclarativeView@@UBE?AVQSize@@XZ @ 269 NONAME ; class QSize QDeclarativeView::sizeHint(void) const + ?flags@QDeclarativeCustomParser@@QBE?AV?$QFlags@W4Flag@QDeclarativeCustomParser@@@@XZ @ 270 NONAME ; class QFlags QDeclarativeCustomParser::flags(void) const + ?staticMetaObject@QDeclarativeDebugObjectExpressionWatch@@2UQMetaObject@@B @ 271 NONAME ; struct QMetaObject const QDeclarativeDebugObjectExpressionWatch::staticMetaObject + ??0QDeclarativeDebugPropertyReference@@QAE@ABV0@@Z @ 272 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(class QDeclarativeDebugPropertyReference const &) + ??_EQDeclarativeCustomParser@@UAE@I@Z @ 273 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(unsigned int) + ??6QDeclarativeInfo@@QAEAAV0@ABVQStringRef@@@Z @ 274 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QStringRef const &) + ?values@QDeclarativeDomList@@QBE?AV?$QList@VQDeclarativeDomValue@@@@XZ @ 275 NONAME ; class QList QDeclarativeDomList::values(void) const + ?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 276 NONAME ; class QString QDeclarativeComponent::errorString(void) const + ?metaObject@QDeclarativeEngineDebug@@UBEPBUQMetaObject@@XZ @ 277 NONAME ; struct QMetaObject const * QDeclarativeEngineDebug::metaObject(void) const + ??1QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 278 NONAME ; QDeclarativeDomValueValueInterceptor::~QDeclarativeDomValueValueInterceptor(void) + ?flatten@QDeclarativeListModel@@AAE_NXZ @ 279 NONAME ; bool QDeclarativeListModel::flatten(void) + ?propertyCount@QMetaObjectBuilder@@QBEHXZ @ 280 NONAME ; int QMetaObjectBuilder::propertyCount(void) const + ?method@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 281 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::method(int) const + ?textFormat@QDeclarativeText@@QBE?AW4TextFormat@1@XZ @ 282 NONAME ; enum QDeclarativeText::TextFormat QDeclarativeText::textFormat(void) const + ?getStaticMetaObject@QDeclarativeDebugObjectExpressionWatch@@SAABUQMetaObject@@XZ @ 283 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectExpressionWatch::getStaticMetaObject(void) + ?write@QDeclarativeBehavior@@UAEXABVQVariant@@@Z @ 284 NONAME ; void QDeclarativeBehavior::write(class QVariant const &) + ?resetTop@QDeclarativeAnchors@@QAEXXZ @ 285 NONAME ; void QDeclarativeAnchors::resetTop(void) + ?queryId@QDeclarativeDebugWatch@@QBEHXZ @ 286 NONAME ; int QDeclarativeDebugWatch::queryId(void) const + ?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 287 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *, int) + ?staticMetaObject@QDeclarativeComponent@@2UQMetaObject@@B @ 288 NONAME ; struct QMetaObject const QDeclarativeComponent::staticMetaObject + ?setStateGroup@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@@Z @ 289 NONAME ; void QDeclarativeState::setStateGroup(class QDeclarativeStateGroup *) + ?access@QMetaMethodBuilder@@QBE?AW4Access@QMetaMethod@@XZ @ 290 NONAME ; enum QMetaMethod::Access QMetaMethodBuilder::access(void) const + ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 291 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *) + ?attachedPropertiesType@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 292 NONAME ; struct QMetaObject const * QDeclarativeType::attachedPropertiesType(void) const + ?setName@QDeclarativeState@@QAEXABVQString@@@Z @ 293 NONAME ; void QDeclarativeState::setName(class QString const &) + ?setReversed@QDeclarativeTransition@@QAEX_N@Z @ 294 NONAME ; void QDeclarativeTransition::setReversed(bool) + ?idForObject@QDeclarativeDebugService@@SAHPAVQObject@@@Z @ 295 NONAME ; int QDeclarativeDebugService::idForObject(class QObject *) + ?qt_metacall@QDeclarativeDebugWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 296 NONAME ; int QDeclarativeDebugWatch::qt_metacall(enum QMetaObject::Call, int, void * *) + ?fromState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 297 NONAME ; class QString QDeclarativeTransition::fromState(void) const + ??1QDeclarativeExpression@@UAE@XZ @ 298 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(void) + ?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 299 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &) + ?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 300 NONAME ; void QMetaObjectBuilder::removeMethod(int) + ?get@QDeclarativePixmapCache@@SA?AW4Status@QDeclarativePixmapReply@@ABVQUrl@@PAVQPixmap@@PAVQString@@PAVQSize@@_NHH@Z @ 301 NONAME ABSENT ; enum QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(class QUrl const &, class QPixmap *, class QString *, class QSize *, bool, int, int) + ?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 302 NONAME ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const + ?methodCount@QMetaObjectBuilder@@QBEHXZ @ 303 NONAME ; int QMetaObjectBuilder::methodCount(void) const + ?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 304 NONAME ; class QFont QDeclarativeText::font(void) const + ?completeCreate@QDeclarativeComponent@@UAEXXZ @ 305 NONAME ; void QDeclarativeComponent::completeCreate(void) + ??0QDeclarativeDomProperty@@QAE@XZ @ 306 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(void) + ?initDefault@QDeclarativePropertyPrivate@@QAEXPAVQObject@@@Z @ 307 NONAME ; void QDeclarativePropertyPrivate::initDefault(class QObject *) + ?count@QDeclarativeListModel@@UBEHXZ @ 308 NONAME ; int QDeclarativeListModel::count(void) const + ?setSmooth@QDeclarativeItem@@QAEX_N@Z @ 309 NONAME ; void QDeclarativeItem::setSmooth(bool) + ?value@QDeclarativeDebugPropertyReference@@QBE?AVQVariant@@XZ @ 310 NONAME ; class QVariant QDeclarativeDebugPropertyReference::value(void) const + ?resources@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQObject@@@@XZ @ 311 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::resources(void) + ?clear@QPacketProtocol@@QAEXXZ @ 312 NONAME ; void QPacketProtocol::clear(void) + ?setState@QDeclarativeItemPrivate@@QAEXABVQString@@@Z @ 313 NONAME ; void QDeclarativeItemPrivate::setState(class QString const &) + ??4QDeclarativeDebugPropertyReference@@QAEAAV0@ABV0@@Z @ 314 NONAME ; class QDeclarativeDebugPropertyReference & QDeclarativeDebugPropertyReference::operator=(class QDeclarativeDebugPropertyReference const &) + ?metaObject@QDeclarativeView@@UBEPBUQMetaObject@@XZ @ 315 NONAME ; struct QMetaObject const * QDeclarativeView::metaObject(void) const + ?listElementType@QDeclarativeListReference@@QBEPBUQMetaObject@@XZ @ 316 NONAME ; struct QMetaObject const * QDeclarativeListReference::listElementType(void) const + ??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeContext@@@Z @ 317 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeContext *) + ?setTarget@QDeclarativeBehavior@@UAEXABVQDeclarativeProperty@@@Z @ 318 NONAME ; void QDeclarativeBehavior::setTarget(class QDeclarativeProperty const &) + ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 319 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *, int) + ?parent@QDeclarativeOpenMetaObject@@IBEPAUQAbstractDynamicMetaObject@@XZ @ 320 NONAME ; struct QAbstractDynamicMetaObject * QDeclarativeOpenMetaObject::parent(void) const + ??0QDeclarativeDebugClient@@QAE@ABVQString@@PAVQDeclarativeDebugConnection@@@Z @ 321 NONAME ; QDeclarativeDebugClient::QDeclarativeDebugClient(class QString const &, class QDeclarativeDebugConnection *) + ?qt_metacall@QDeclarativeStateOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 322 NONAME ; int QDeclarativeStateOperation::qt_metacall(enum QMetaObject::Call, int, void * *) + ?type@Variant@QDeclarativeParser@@QBE?AW4Type@12@XZ @ 323 NONAME ; enum QDeclarativeParser::Variant::Type QDeclarativeParser::Variant::type(void) const + ??6QDeclarativeInfo@@QAEAAV0@_N@Z @ 324 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(bool) + ?value@QDeclarativeDomProperty@@QBE?AVQDeclarativeDomValue@@XZ @ 325 NONAME ; class QDeclarativeDomValue QDeclarativeDomProperty::value(void) const + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectExpressionWatch@@ABVQDeclarativeDebugObjectReference@@ABVQString@@PAVQObject@@@Z @ 326 NONAME ; class QDeclarativeDebugObjectExpressionWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QString const &, class QObject *) + ??_EQDeclarativeDebugConnection@@UAE@I@Z @ 327 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(unsigned int) + ?qt_metacall@QDeclarativeDebugConnection@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 328 NONAME ; int QDeclarativeDebugConnection::qt_metacall(enum QMetaObject::Call, int, void * *) + ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 329 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *, int) + ?errors@QDeclarativeComponent@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 330 NONAME ; class QList QDeclarativeComponent::errors(void) const + ??0QDeclarativeCustomParserNode@@QAE@ABV0@@Z @ 331 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(class QDeclarativeCustomParserNode const &) + ??1QDeclarativeImageProvider@@UAE@XZ @ 332 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(void) + ?sync@QDeclarativeListModel@@QAEXXZ @ 333 NONAME ; void QDeclarativeListModel::sync(void) + ?objectForId@QDeclarativeDebugService@@SAPAVQObject@@H@Z @ 334 NONAME ; class QObject * QDeclarativeDebugService::objectForId(int) + ?hasFocus@QDeclarativeItem@@QBE_NXZ @ 335 NONAME ; bool QDeclarativeItem::hasFocus(void) const + ??1QDeclarativeExtensionPlugin@@UAE@XZ @ 336 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(void) + ?qt_metacall@QDeclarativeBehavior@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 337 NONAME ; int QDeclarativeBehavior::qt_metacall(enum QMetaObject::Call, int, void * *) + ?d_func@QDeclarativeBehavior@@ABEPBVQDeclarativeBehaviorPrivate@@XZ @ 338 NONAME ; class QDeclarativeBehaviorPrivate const * QDeclarativeBehavior::d_func(void) const + ?wrapModeChanged@QDeclarativeText@@IAEXXZ @ 339 NONAME ; void QDeclarativeText::wrapModeChanged(void) + ?elideModeChanged@QDeclarativeText@@IAEXW4TextElideMode@1@@Z @ 340 NONAME ; void QDeclarativeText::elideModeChanged(enum QDeclarativeText::TextElideMode) + ??1QDeclarativeExtensionInterface@@UAE@XZ @ 341 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(void) + ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQMetaEnum@@@Z @ 342 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QMetaEnum const &) + ?interfaceIId@QDeclarativeType@@QBEPBDXZ @ 343 NONAME ; char const * QDeclarativeType::interfaceIId(void) const + ?resetHorizontalCenter@QDeclarativeAnchors@@QAEXXZ @ 344 NONAME ; void QDeclarativeAnchors::resetHorizontalCenter(void) + ?outputWarningsToStandardError@QDeclarativeEngine@@QBE_NXZ @ 345 NONAME ; bool QDeclarativeEngine::outputWarningsToStandardError(void) const + ?getStaticMetaObject@QDeclarativeBehavior@@SAABUQMetaObject@@XZ @ 346 NONAME ; struct QMetaObject const & QDeclarativeBehavior::getStaticMetaObject(void) + ??0QMetaEnumBuilder@@QAE@XZ @ 347 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(void) + ?isValueType@QDeclarativeValueTypeFactory@@SA_NH@Z @ 348 NONAME ; bool QDeclarativeValueTypeFactory::isValueType(int) + ?setWidth@QDeclarativePen@@QAEXH@Z @ 349 NONAME ; void QDeclarativePen::setWidth(int) + ?isReadable@QMetaPropertyBuilder@@QBE_NXZ @ 350 NONAME ; bool QMetaPropertyBuilder::isReadable(void) const + ?metaObject@QDeclarativeExpression@@UBEPBUQMetaObject@@XZ @ 351 NONAME ; struct QMetaObject const * QDeclarativeExpression::metaObject(void) const + ??0QDeclarativeDomValueLiteral@@QAE@ABV0@@Z @ 352 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(class QDeclarativeDomValueLiteral const &) + ?getStaticMetaObject@QDeclarativeDebugQuery@@SAABUQMetaObject@@XZ @ 353 NONAME ; struct QMetaObject const & QDeclarativeDebugQuery::getStaticMetaObject(void) + ??0QDeclarativeDomComponent@@QAE@XZ @ 354 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(void) + ??1QDeclarativePropertyPrivate@@QAE@XZ @ 355 NONAME ; QDeclarativePropertyPrivate::~QDeclarativePropertyPrivate(void) + ?setBaselineOffset@QDeclarativeItem@@QAEXM@Z @ 356 NONAME ; void QDeclarativeItem::setBaselineOffset(float) + ??0QDeclarativeDebugPropertyReference@@QAE@XZ @ 357 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(void) + ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 358 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *, int) + ?setState@QDeclarativeStateGroup@@QAEXABVQString@@@Z @ 359 NONAME ; void QDeclarativeStateGroup::setState(class QString const &) + ??_EQDeclarativeImageProvider@@UAE@I@Z @ 360 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(unsigned int) + ?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 361 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *) + ?isLoading@QDeclarativeComponent@@QBE_NXZ @ 362 NONAME ; bool QDeclarativeComponent::isLoading(void) const + ?createFunction@QDeclarativeType@@QBEP6AXPAX@ZXZ @ 363 NONAME ; void (*)(void *) QDeclarativeType::createFunction(void) const + ?childrenRect@QDeclarativeItem@@QAE?AVQRectF@@XZ @ 364 NONAME ; class QRectF QDeclarativeItem::childrenRect(void) + ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 365 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *) + ?objectTypeMajorVersion@QDeclarativeDomObject@@QBEHXZ @ 366 NONAME ; int QDeclarativeDomObject::objectTypeMajorVersion(void) const + ??6QDeclarativeInfo@@QAEAAV0@D@Z @ 367 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char) + ??1QDeclarativeDomValueLiteral@@QAE@XZ @ 368 NONAME ; QDeclarativeDomValueLiteral::~QDeclarativeDomValueLiteral(void) + ?keepMouseGrab@QDeclarativeItem@@QBE_NXZ @ 369 NONAME ; bool QDeclarativeItem::keepMouseGrab(void) const + ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 370 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *, int) + ?getStaticMetaObject@QDeclarativeDebugConnection@@SAABUQMetaObject@@XZ @ 371 NONAME ; struct QMetaObject const & QDeclarativeDebugConnection::getStaticMetaObject(void) + ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 372 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *) + ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@H@Z @ 373 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](int) + ??0Variant@QDeclarativeParser@@QAE@XZ @ 374 NONAME ; QDeclarativeParser::Variant::Variant(void) + ?status@QDeclarativeView@@QBE?AW4Status@1@XZ @ 375 NONAME ; enum QDeclarativeView::Status QDeclarativeView::status(void) const + ??0QDeclarativeEngineDebug@@QAE@PAVQDeclarativeDebugConnection@@PAVQObject@@@Z @ 376 NONAME ; QDeclarativeEngineDebug::QDeclarativeEngineDebug(class QDeclarativeDebugConnection *, class QObject *) + ?create@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 377 NONAME ; class QObject * QDeclarativeComponent::create(class QDeclarativeContext *) + ??_EQPacket@@UAE@I@Z @ 378 NONAME ; QPacket::~QPacket(unsigned int) + ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 379 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *, int) + ?isResettable@QDeclarativeProperty@@QBE_NXZ @ 380 NONAME ; bool QDeclarativeProperty::isResettable(void) const + ?isList@QDeclarativeCustomParserProperty@@QBE_NXZ @ 381 NONAME ; bool QDeclarativeCustomParserProperty::isList(void) const + ?resetVerticalCenter@QDeclarativeAnchors@@QAEXXZ @ 382 NONAME ; void QDeclarativeAnchors::resetVerticalCenter(void) + ??0QDeclarativeValueType@@QAE@PAVQObject@@@Z @ 383 NONAME ; QDeclarativeValueType::QDeclarativeValueType(class QObject *) + ?staticMetaObject@QDeclarativeDebugConnection@@2UQMetaObject@@B @ 384 NONAME ; struct QMetaObject const QDeclarativeDebugConnection::staticMetaObject + ?isLiteral@QDeclarativeDomValue@@QBE_NXZ @ 385 NONAME ; bool QDeclarativeDomValue::isLiteral(void) const + ?qt_metacall@QDeclarativeItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 386 NONAME ; int QDeclarativeItem::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QListModelInterface@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 387 NONAME ; int QListModelInterface::qt_metacall(enum QMetaObject::Call, int, void * *) + ?move@QDeclarativeListModel@@QAEXHHH@Z @ 388 NONAME ; void QDeclarativeListModel::move(int, int, int) + ?metaObject@QDeclarativeBehavior@@UBEPBUQMetaObject@@XZ @ 389 NONAME ; struct QMetaObject const * QDeclarativeBehavior::metaObject(void) const + ?inputMethodPreHandler@QDeclarativeItem@@IAEXPAVQInputMethodEvent@@@Z @ 390 NONAME ; void QDeclarativeItem::inputMethodPreHandler(class QInputMethodEvent *) + ?d_func@QDeclarativeText@@AAEPAVQDeclarativeTextPrivate@@XZ @ 391 NONAME ; class QDeclarativeTextPrivate * QDeclarativeText::d_func(void) + ?signature@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 392 NONAME ; class QByteArray QMetaMethodBuilder::signature(void) const + ??_EQDeclarativeParserStatus@@UAE@I@Z @ 393 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(unsigned int) + ?rightMargin@QDeclarativeAnchors@@QBEMXZ @ 394 NONAME ; float QDeclarativeAnchors::rightMargin(void) const + ?itemsMoved@QListModelInterface@@IAEXHHH@Z @ 395 NONAME ; void QListModelInterface::itemsMoved(int, int, int) + ?rectFFromString@QDeclarativeStringConverters@@YA?AVQRectF@@ABVQString@@PA_N@Z @ 396 NONAME ; class QRectF QDeclarativeStringConverters::rectFFromString(class QString const &, bool *) + ?canAt@QDeclarativeListReference@@QBE_NXZ @ 397 NONAME ; bool QDeclarativeListReference::canAt(void) const + ?children@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 398 NONAME ; class QList QDeclarativeDebugObjectReference::children(void) const + ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 399 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *) + ?qt_metacall@QDeclarativeDebugExpressionQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 400 NONAME ; int QDeclarativeDebugExpressionQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?getStaticMetaObject@QDeclarativeEngine@@SAABUQMetaObject@@XZ @ 401 NONAME ; struct QMetaObject const & QDeclarativeEngine::getStaticMetaObject(void) + ?paintEvent@QDeclarativeView@@MAEXPAVQPaintEvent@@@Z @ 402 NONAME ; void QDeclarativeView::paintEvent(class QPaintEvent *) + ?name@QDeclarativeDebugPropertyWatch@@QBE?AVQString@@XZ @ 403 NONAME ; class QString QDeclarativeDebugPropertyWatch::name(void) const + ?bindingType@QDeclarativeAbstractBinding@@UBE?AW4Type@1@XZ @ 404 NONAME ; enum QDeclarativeAbstractBinding::Type QDeclarativeAbstractBinding::bindingType(void) const + ?margins@QDeclarativeAnchors@@QBEMXZ @ 405 NONAME ; float QDeclarativeAnchors::margins(void) const + ?length@QDeclarativeDomProperty@@QBEHXZ @ 406 NONAME ; int QDeclarativeDomProperty::length(void) const + ??1QDeclarativeDomImport@@QAE@XZ @ 407 NONAME ; QDeclarativeDomImport::~QDeclarativeDomImport(void) + ?addRef@QDeclarativePixmapReply@@AAEXXZ @ 408 NONAME ABSENT ; void QDeclarativePixmapReply::addRef(void) + ?mouseReleaseEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 409 NONAME ; void QDeclarativeText::mouseReleaseEvent(class QGraphicsSceneMouseEvent *) + ?isCustomType@QDeclarativeDomObject@@QBE_NXZ @ 410 NONAME ; bool QDeclarativeDomObject::isCustomType(void) const + ?registerType@QDeclarativePrivate@@YAHABURegisterType@1@@Z @ 411 NONAME ; int QDeclarativePrivate::registerType(struct QDeclarativePrivate::RegisterType const &) + ?radius@QDeclarativeRectangle@@QBEMXZ @ 412 NONAME ; float QDeclarativeRectangle::radius(void) const + ??0QDeclarativeComponent@@AAE@PAVQDeclarativeEngine@@PAVQDeclarativeCompiledData@@HHPAVQObject@@@Z @ 413 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QDeclarativeCompiledData *, int, int, class QObject *) + ?resources_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 414 NONAME ; int QDeclarativeItemPrivate::resources_count(class QDeclarativeListProperty *) + ?timerEvent@QDeclarativeView@@MAEXPAVQTimerEvent@@@Z @ 415 NONAME ; void QDeclarativeView::timerEvent(class QTimerEvent *) + ?finished@QDeclarativePixmapReply@@IAEXXZ @ 416 NONAME ABSENT ; void QDeclarativePixmapReply::finished(void) + ?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 417 NONAME ; void QDeclarativeTransition::setToState(class QString const &) + ?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 418 NONAME ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const + ?getStaticMetaObject@QDeclarativeView@@SAABUQMetaObject@@XZ @ 419 NONAME ; struct QMetaObject const & QDeclarativeView::getStaticMetaObject(void) + ?metaObject@QDeclarativeStateOperation@@UBEPBUQMetaObject@@XZ @ 420 NONAME ; struct QMetaObject const * QDeclarativeStateOperation::metaObject(void) const + ?keyReleasePreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 421 NONAME ; void QDeclarativeItem::keyReleasePreHandler(class QKeyEvent *) + ?append@QDeclarativeListModel@@QAEXABVQScriptValue@@@Z @ 422 NONAME ; void QDeclarativeListModel::append(class QScriptValue const &) + ??1QDeclarativeDebugObjectReference@@QAE@XZ @ 423 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(void) + ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 424 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *) + ?resolvedUrl@QDeclarativeContext@@QAE?AVQUrl@@ABV2@@Z @ 425 NONAME ; class QUrl QDeclarativeContext::resolvedUrl(class QUrl const &) + ?object@QDeclarativeListReference@@QBEPAVQObject@@XZ @ 426 NONAME ; class QObject * QDeclarativeListReference::object(void) const + ?setEnabled@QDeclarativeBehavior@@QAEX_N@Z @ 427 NONAME ; void QDeclarativeBehavior::setEnabled(bool) + ?line@QDeclarativeError@@QBEHXZ @ 428 NONAME ; int QDeclarativeError::line(void) const + ?heightValid@QDeclarativeItem@@IBE_NXZ @ 429 NONAME ; bool QDeclarativeItem::heightValid(void) const + ??1QDeclarativeOpenMetaObject@@UAE@XZ @ 430 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(void) + ??0QPacket@@QAE@XZ @ 431 NONAME ; QPacket::QPacket(void) + ?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 432 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *, int) + ?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 433 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *, int) + ??0QDeclarativeDebugEngineReference@@QAE@XZ @ 434 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(void) + ?qmlEngine@@YAPAVQDeclarativeEngine@@PBVQObject@@@Z @ 435 NONAME ; class QDeclarativeEngine * qmlEngine(class QObject const *) + ?error@QDeclarativeExpression@@QBE?AVQDeclarativeError@@XZ @ 436 NONAME ; class QDeclarativeError QDeclarativeExpression::error(void) const + ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 437 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *) + ?styleColorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 438 NONAME ; void QDeclarativeText::styleColorChanged(class QColor const &) + ?getStaticMetaObject@QDeclarativeDebugExpressionQuery@@SAABUQMetaObject@@XZ @ 439 NONAME ; struct QMetaObject const & QDeclarativeDebugExpressionQuery::getStaticMetaObject(void) + ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 440 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *, int) + ?writeValueProperty@QDeclarativePropertyPrivate@@QAE_NABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 441 NONAME ; bool QDeclarativePropertyPrivate::writeValueProperty(class QVariant const &, class QFlags) + ?errors@QDeclarativeCustomParser@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 442 NONAME ; class QList QDeclarativeCustomParser::errors(void) const + ?statesProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 443 NONAME ; class QDeclarativeListProperty QDeclarativeStateGroup::statesProperty(void) + ?roles@QDeclarativeListModel@@UBE?AV?$QList@H@@XZ @ 444 NONAME ; class QList QDeclarativeListModel::roles(void) const + ?name@QMetaEnumBuilder@@QBE?AVQByteArray@@XZ @ 445 NONAME ; class QByteArray QMetaEnumBuilder::name(void) const + ??_EQDeclarativeDebugRootContextQuery@@UAE@I@Z @ 446 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(unsigned int) + ?setColor@QDeclarativeRectangle@@QAEXABVQColor@@@Z @ 447 NONAME ; void QDeclarativeRectangle::setColor(class QColor const &) + ?clipChanged@QDeclarativeItem@@IAEX_N@Z @ 448 NONAME ; void QDeclarativeItem::clipChanged(bool) + ??0QDeclarativeCustomParser@@QAE@V?$QFlags@W4Flag@QDeclarativeCustomParser@@@@@Z @ 449 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(class QFlags) + ?valueChanged@QDeclarativeDebugWatch@@IAEXABVQByteArray@@ABVQVariant@@@Z @ 450 NONAME ; void QDeclarativeDebugWatch::valueChanged(class QByteArray const &, class QVariant const &) + ?smoothChanged@QDeclarativeItem@@IAEX_N@Z @ 451 NONAME ; void QDeclarativeItem::smoothChanged(bool) + ?colorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 452 NONAME ; void QDeclarativeText::colorChanged(class QColor const &) + ?continueExecute@QDeclarativeView@@AAEXXZ @ 453 NONAME ; void QDeclarativeView::continueExecute(void) + ?initialSize@QDeclarativeView@@QBE?AVQSize@@XZ @ 454 NONAME ; class QSize QDeclarativeView::initialSize(void) const + ?interfaceIId@QDeclarativeMetaType@@SAPBDH@Z @ 455 NONAME ; char const * QDeclarativeMetaType::interfaceIId(int) + ?isValid@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 456 NONAME ; bool QDeclarativeDomDynamicProperty::isValid(void) const + ?baselineChanged@QDeclarativeAnchors@@IAEXXZ @ 457 NONAME ; void QDeclarativeAnchors::baselineChanged(void) + ?name@QDeclarativeState@@QBE?AVQString@@XZ @ 458 NONAME ; class QString QDeclarativeState::name(void) const + ??4QDeclarativeDomObject@@QAEAAV0@ABV0@@Z @ 459 NONAME ; class QDeclarativeDomObject & QDeclarativeDomObject::operator=(class QDeclarativeDomObject const &) + ?qt_metacall@QDeclarativeContext@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 460 NONAME ; int QDeclarativeContext::qt_metacall(enum QMetaObject::Call, int, void * *) + ??_EQDeclarativeValueType@@UAE@I@Z @ 461 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(unsigned int) + ?qt_metacall@QDeclarativeState@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 462 NONAME ; int QDeclarativeState::qt_metacall(enum QMetaObject::Call, int, void * *) + ?isEnabled@QDeclarativeDebugService@@QBE_NXZ @ 463 NONAME ; bool QDeclarativeDebugService::isEnabled(void) const + ?stateChanged@QDeclarativeDebugWatch@@IAEXW4State@1@@Z @ 464 NONAME ; void QDeclarativeDebugWatch::stateChanged(enum QDeclarativeDebugWatch::State) + ??0QMetaMethodBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 465 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(class QMetaObjectBuilder const *, int) + ??4QDeclarativeListReference@@QAEAAV0@ABV0@@Z @ 466 NONAME ; class QDeclarativeListReference & QDeclarativeListReference::operator=(class QDeclarativeListReference const &) + ?componentFinalized@QDeclarativeBehavior@@AAEXXZ @ 467 NONAME ; void QDeclarativeBehavior::componentFinalized(void) + ?stateChanged@QDeclarativeDebugQuery@@IAEXW4State@1@@Z @ 468 NONAME ; void QDeclarativeDebugQuery::stateChanged(enum QDeclarativeDebugQuery::State) + ?setVerticalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 469 NONAME ; void QDeclarativeAnchors::setVerticalCenter(class QDeclarativeAnchorLine const &) + ?keyPressEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 470 NONAME ; void QDeclarativeItem::keyPressEvent(class QKeyEvent *) + ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 471 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *) + ?metaObject@QDeclarativeExtensionPlugin@@UBEPBUQMetaObject@@XZ @ 472 NONAME ; struct QMetaObject const * QDeclarativeExtensionPlugin::metaObject(void) const + ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 473 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *, int) + ?setCenterIn@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 474 NONAME ; void QDeclarativeAnchors::setCenterIn(class QGraphicsObject *) + ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@ABVQByteArray@@HH@Z @ 475 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(class QByteArray const &, int, int) + ??0QDeclarativeDebugObjectQuery@@AAE@PAVQObject@@@Z @ 476 NONAME ; QDeclarativeDebugObjectQuery::QDeclarativeDebugObjectQuery(class QObject *) + ?isComponent@QDeclarativeDomObject@@QBE_NXZ @ 477 NONAME ; bool QDeclarativeDomObject::isComponent(void) const + ?inputMethodEvent@QDeclarativeItem@@MAEXPAVQInputMethodEvent@@@Z @ 478 NONAME ; void QDeclarativeItem::inputMethodEvent(class QInputMethodEvent *) + ?styleChanged@QDeclarativeText@@IAEXW4TextStyle@1@@Z @ 479 NONAME ; void QDeclarativeText::styleChanged(enum QDeclarativeText::TextStyle) + ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeEngine@@@Z @ 480 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeEngine *) + ?pluginPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 481 NONAME ; class QStringList QDeclarativeEngine::pluginPathList(void) const + ?parentContext@QDeclarativeContext@@QBEPAV1@XZ @ 482 NONAME ; class QDeclarativeContext * QDeclarativeContext::parentContext(void) const + ?leftMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 483 NONAME ; void QDeclarativeAnchors::leftMarginChanged(void) + ?staticMetaObject@QDeclarativeDebugService@@2UQMetaObject@@B @ 484 NONAME ; struct QMetaObject const QDeclarativeDebugService::staticMetaObject + ?topMargin@QDeclarativeAnchors@@QBEMXZ @ 485 NONAME ; float QDeclarativeAnchors::topMargin(void) const + ??0QDeclarativeDebugExpressionQuery@@AAE@PAVQObject@@@Z @ 486 NONAME ; QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(class QObject *) + ?qt_metacast@QDeclarativePixmapReply@@UAEPAXPBD@Z @ 487 NONAME ABSENT ; void * QDeclarativePixmapReply::qt_metacast(char const *) + ??0QPacket@@IAE@ABVQByteArray@@@Z @ 488 NONAME ; QPacket::QPacket(class QByteArray const &) + ?setFlags@QMetaObjectBuilder@@QAEXV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@@Z @ 489 NONAME ; void QMetaObjectBuilder::setFlags(class QFlags) + ?horizontalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 490 NONAME ; void QDeclarativeAnchors::horizontalCenterChanged(void) + ?right@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 491 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::right(void) const + ?pendingRequests@QDeclarativePixmapCache@@SAHXZ @ 492 NONAME ABSENT ; int QDeclarativePixmapCache::pendingRequests(void) + ?staticMetaObject@QDeclarativeDebugObjectQuery@@2UQMetaObject@@B @ 493 NONAME ; struct QMetaObject const QDeclarativeDebugObjectQuery::staticMetaObject + ?propertyRead@QDeclarativeOpenMetaObject@@MAEXH@Z @ 494 NONAME ; void QDeclarativeOpenMetaObject::propertyRead(int) + ?importPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 495 NONAME ; class QStringList QDeclarativeEngine::importPathList(void) const + ?border@QDeclarativeRectangle@@QAEPAVQDeclarativePen@@XZ @ 496 NONAME ; class QDeclarativePen * QDeclarativeRectangle::border(void) + ?baselineOffset@QDeclarativeItem@@QBEMXZ @ 497 NONAME ; float QDeclarativeItem::baselineOffset(void) const + ?dateFromString@QDeclarativeStringConverters@@YA?AVQDate@@ABVQString@@PA_N@Z @ 498 NONAME ; class QDate QDeclarativeStringConverters::dateFromString(class QString const &, bool *) + ?qt_metacast@QDeclarativeDebugObjectExpressionWatch@@UAEPAXPBD@Z @ 499 NONAME ; void * QDeclarativeDebugObjectExpressionWatch::qt_metacast(char const *) + ??0QDeclarativeDomValue@@QAE@ABV0@@Z @ 500 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(class QDeclarativeDomValue const &) + ??1QDeclarativeListModel@@UAE@XZ @ 501 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(void) + ?qmlAttachedPropertiesObject@@YAPAVQObject@@PAHPBV1@PBUQMetaObject@@_N@Z @ 502 NONAME ; class QObject * qmlAttachedPropertiesObject(int *, class QObject const *, struct QMetaObject const *, bool) + ??_EQDeclarativeDebugClient@@UAE@I@Z @ 503 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(unsigned int) + ??4QDeclarativeDomComponent@@QAEAAV0@ABV0@@Z @ 504 NONAME ; class QDeclarativeDomComponent & QDeclarativeDomComponent::operator=(class QDeclarativeDomComponent const &) + ?tr@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 505 NONAME ; class QString QPacketProtocol::tr(char const *, char const *) + ?setFont@QDeclarativeText@@QAEXABVQFont@@@Z @ 506 NONAME ; void QDeclarativeText::setFont(class QFont const &) + ?fromChanged@QDeclarativeTransition@@IAEXXZ @ 507 NONAME ; void QDeclarativeTransition::fromChanged(void) + ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 508 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QMetaMethod const &) + ?setHeight@QDeclarativeItemPrivate@@UAEXM@Z @ 509 NONAME ; void QDeclarativeItemPrivate::setHeight(float) + ??0Variant@QDeclarativeParser@@QAE@ABV01@@Z @ 510 NONAME ; QDeclarativeParser::Variant::Variant(class QDeclarativeParser::Variant const &) + ?getStaticMetaObject@QDeclarativeExtensionPlugin@@SAABUQMetaObject@@XZ @ 511 NONAME ; struct QMetaObject const & QDeclarativeExtensionPlugin::getStaticMetaObject(void) + ??0QDeclarativeBinding@@QAE@PAXPAVQDeclarativeRefCount@@PAVQObject@@PAVQDeclarativeContextData@@ABVQString@@H2@Z @ 512 NONAME ; QDeclarativeBinding::QDeclarativeBinding(void *, class QDeclarativeRefCount *, class QObject *, class QDeclarativeContextData *, class QString const &, int, class QObject *) + ?qt_metacast@QDeclarativeDebugClient@@UAEPAXPBD@Z @ 513 NONAME ; void * QDeclarativeDebugClient::qt_metacast(char const *) + ?classInfoValue@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 514 NONAME ; class QByteArray QMetaObjectBuilder::classInfoValue(int) const + ?right@QDeclarativeScaleGrid@@QBEHXZ @ 515 NONAME ; int QDeclarativeScaleGrid::right(void) const + ?setClassName@QMetaObjectBuilder@@QAEXABVQByteArray@@@Z @ 516 NONAME ; void QMetaObjectBuilder::setClassName(class QByteArray const &) + ??1QDeclarativeAnchors@@UAE@XZ @ 517 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(void) + ?removeConstructor@QMetaObjectBuilder@@QAEXH@Z @ 518 NONAME ; void QMetaObjectBuilder::removeConstructor(int) + ??4QDeclarativeDomValueValueInterceptor@@QAEAAV0@ABV0@@Z @ 519 NONAME ; class QDeclarativeDomValueValueInterceptor & QDeclarativeDomValueValueInterceptor::operator=(class QDeclarativeDomValueValueInterceptor const &) + ?resolveType@QDeclarativeCustomParser@@IBEPBUQMetaObject@@ABVQByteArray@@@Z @ 520 NONAME ; struct QMetaObject const * QDeclarativeCustomParser::resolveType(class QByteArray const &) const + ??_EQDeclarativePropertyValueSource@@UAE@I@Z @ 521 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(unsigned int) + ?staticMetaObject@QDeclarativeItem@@2UQMetaObject@@B @ 522 NONAME ; struct QMetaObject const QDeclarativeItem::staticMetaObject + ?qt_metacast@QDeclarativeDebugRootContextQuery@@UAEPAXPBD@Z @ 523 NONAME ; void * QDeclarativeDebugRootContextQuery::qt_metacast(char const *) + ?itemsRemoved@QListModelInterface@@IAEXHH@Z @ 524 NONAME ; void QListModelInterface::itemsRemoved(int, int) + ?networkAccessManager@QDeclarativeEngine@@QBEPAVQNetworkAccessManager@@XZ @ 525 NONAME ; class QNetworkAccessManager * QDeclarativeEngine::networkAccessManager(void) const + ??0QDeclarativeDomValue@@QAE@XZ @ 526 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(void) + ?init@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItem@@@Z @ 527 NONAME ; void QDeclarativeItemPrivate::init(class QDeclarativeItem *) + ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQByteArray@@0H@Z @ 528 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QByteArray const &, class QByteArray const &, int) + ?getStaticMetaObject@QDeclarativeState@@SAABUQMetaObject@@XZ @ 529 NONAME ; struct QMetaObject const & QDeclarativeState::getStaticMetaObject(void) + ?isResettable@QMetaPropertyBuilder@@QBE_NXZ @ 530 NONAME ; bool QMetaPropertyBuilder::isResettable(void) const + ?bottomMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 531 NONAME ; void QDeclarativeAnchors::bottomMarginChanged(void) + ?offlineStoragePath@QDeclarativeEngine@@QBE?AVQString@@XZ @ 532 NONAME ; class QString QDeclarativeEngine::offlineStoragePath(void) const + ?keys@QDeclarativePropertyMap@@QBE?AVQStringList@@XZ @ 533 NONAME ; class QStringList QDeclarativePropertyMap::keys(void) const + ?addItemChangeListener@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItemChangeListener@@V?$QFlags@W4ChangeType@QDeclarativeItemPrivate@@@@@Z @ 534 NONAME ; void QDeclarativeItemPrivate::addItemChangeListener(class QDeclarativeItemChangeListener *, class QFlags) + ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 535 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QMetaMethod const &) + ??6QDeclarativeInfo@@QAEAAV0@F@Z @ 536 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(short) + ?serialize@QMetaObjectBuilder@@QBEXAAVQDataStream@@@Z @ 537 NONAME ; void QMetaObjectBuilder::serialize(class QDataStream &) const + ??0QDeclarativeDebugContextReference@@QAE@ABV0@@Z @ 538 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(class QDeclarativeDebugContextReference const &) + ?saveProperty@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H@Z @ 539 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveProperty(struct QMetaObject const *, int) + ?propertyType@QDeclarativeProperty@@QBEHXZ @ 540 NONAME ; int QDeclarativeProperty::propertyType(void) const + ?isDefaultProperty@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 541 NONAME ; bool QDeclarativeDomDynamicProperty::isDefaultProperty(void) const + ??_EQDeclarativeBehavior@@UAE@I@Z @ 542 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(unsigned int) + ??_EQDeclarativeListModel@@UAE@I@Z @ 543 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(unsigned int) + ?isCreatable@QDeclarativeType@@QBE_NXZ @ 544 NONAME ; bool QDeclarativeType::isCreatable(void) const + ??6QDeclarativeInfo@@QAEAAV0@ABVQString@@@Z @ 545 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QString const &) + ?tr@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 546 NONAME ; class QString QDeclarativePen::tr(char const *, char const *) + ?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 547 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *, int) + ??0QDeclarativeListModel@@QAE@PAVQObject@@@Z @ 548 NONAME ; QDeclarativeListModel::QDeclarativeListModel(class QObject *) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugContextReference@@ABVQString@@PAVQObject@@@Z @ 549 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugContextReference const &, class QString const &, class QObject *) + ?setColumn@QDeclarativeError@@QAEXH@Z @ 550 NONAME ; void QDeclarativeError::setColumn(int) + ??1QDeclarativeTransition@@UAE@XZ @ 551 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(void) + ??AQDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 552 NONAME ; class QVariant QDeclarativePropertyMap::operator[](class QString const &) const + ?qt_metacall@QDeclarativeListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 553 NONAME ; int QDeclarativeListModel::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qdeclarativeelement_destructor@QDeclarativePrivate@@YAXPAVQObject@@@Z @ 554 NONAME ; void QDeclarativePrivate::qdeclarativeelement_destructor(class QObject *) + ?registerCustomStringConverter@QDeclarativeMetaType@@SAXHP6A?AVQVariant@@ABVQString@@@Z@Z @ 555 NONAME ; void QDeclarativeMetaType::registerCustomStringConverter(int, class QVariant (*)(class QString const &)) + ?metaObject@QDeclarativeEngine@@UBEPBUQMetaObject@@XZ @ 556 NONAME ; struct QMetaObject const * QDeclarativeEngine::metaObject(void) const + ??_EQDeclarativeDebugContextReference@@QAE@I@Z @ 557 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(unsigned int) + ?propertyWrite@QDeclarativeOpenMetaObject@@MAEXH@Z @ 558 NONAME ; void QDeclarativeOpenMetaObject::propertyWrite(int) + ?qt_metacall@QDeclarativeDebugService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 559 NONAME ; int QDeclarativeDebugService::qt_metacall(enum QMetaObject::Call, int, void * *) + ?setVerticalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 560 NONAME ; void QDeclarativeAnchors::setVerticalCenterOffset(float) + ??1QDeclarativeDebugWatch@@UAE@XZ @ 561 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(void) + ??1QPacketAutoSend@@UAE@XZ @ 562 NONAME ; QPacketAutoSend::~QPacketAutoSend(void) + ?geometryChanged@QDeclarativeText@@MAEXABVQRectF@@0@Z @ 563 NONAME ; void QDeclarativeText::geometryChanged(class QRectF const &, class QRectF const &) + ?d_func@QDeclarativeRectangle@@AAEPAVQDeclarativeRectanglePrivate@@XZ @ 564 NONAME ; class QDeclarativeRectanglePrivate * QDeclarativeRectangle::d_func(void) + ?qt_metacast@QDeclarativeListModel@@UAEPAXPBD@Z @ 565 NONAME ; void * QDeclarativeListModel::qt_metacast(char const *) + ?name@QDeclarativeCustomParserProperty@@QBE?AVQByteArray@@XZ @ 566 NONAME ; class QByteArray QDeclarativeCustomParserProperty::name(void) const + ?update@QDeclarativeBinding@@QAEXXZ @ 567 NONAME ; void QDeclarativeBinding::update(void) + ?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 568 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *) + ?qt_metacast@QDeclarativeDebugConnection@@UAEPAXPBD@Z @ 569 NONAME ; void * QDeclarativeDebugConnection::qt_metacast(char const *) + ?removeWatch@QDeclarativeEngineDebug@@QAEXPAVQDeclarativeDebugWatch@@@Z @ 570 NONAME ; void QDeclarativeEngineDebug::removeWatch(class QDeclarativeDebugWatch *) + ?qt_metacast@QDeclarativeBinding@@UAEPAXPBD@Z @ 571 NONAME ; void * QDeclarativeBinding::qt_metacast(char const *) + ?baseline@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 572 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::baseline(void) const + ?restore@QDeclarativePropertyPrivate@@SA?AVQDeclarativeProperty@@ABVQByteArray@@PAVQObject@@PAVQDeclarativeContextData@@@Z @ 573 NONAME ; class QDeclarativeProperty QDeclarativePropertyPrivate::restore(class QByteArray const &, class QObject *, class QDeclarativeContextData *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@@Z @ 574 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *) + ?source@QDeclarativeDebugObjectReference@@QBE?AVQDeclarativeDebugFileReference@@XZ @ 575 NONAME ; class QDeclarativeDebugFileReference QDeclarativeDebugObjectReference::source(void) const + ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 576 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *, int) + ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@H@Z @ 577 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(int) + ??1QDeclarativeCustomParser@@UAE@XZ @ 578 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(void) + ?toList@QDeclarativeDomValue@@QBE?AVQDeclarativeDomList@@XZ @ 579 NONAME ; class QDeclarativeDomList QDeclarativeDomValue::toList(void) const + ?metaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 580 NONAME ; struct QMetaObject const * QDeclarativeType::metaObject(void) const + ?animation@QDeclarativeBehavior@@QAEPAVQDeclarativeAbstractAnimation@@XZ @ 581 NONAME ; class QDeclarativeAbstractAnimation * QDeclarativeBehavior::animation(void) + ?listType@QDeclarativeMetaType@@SAHH@Z @ 582 NONAME ; int QDeclarativeMetaType::listType(int) + ?transform_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@PAVQGraphicsTransform@@@Z @ 583 NONAME ; void QDeclarativeItemPrivate::transform_append(class QDeclarativeListProperty *, class QGraphicsTransform *) + ?d_func@QDeclarativeComponent@@AAEPAVQDeclarativeComponentPrivate@@XZ @ 584 NONAME ; class QDeclarativeComponentPrivate * QDeclarativeComponent::d_func(void) + ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@@Z @ 585 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &) + ?qt_metacall@QDeclarativeScaleGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 586 NONAME ; int QDeclarativeScaleGrid::qt_metacall(enum QMetaObject::Call, int, void * *) + ?size@QDeclarativePropertyMap@@QBEHXZ @ 587 NONAME ; int QDeclarativePropertyMap::size(void) const + ?cancel@QDeclarativeState@@QAEXXZ @ 588 NONAME ; void QDeclarativeState::cancel(void) + ?qt_metacall@QDeclarativeStateGroup@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 589 NONAME ; int QDeclarativeStateGroup::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QDeclarativePropertyPrivate@@QAE@XZ @ 590 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(void) + ?getStaticMetaObject@QDeclarativeDebugPropertyWatch@@SAABUQMetaObject@@XZ @ 591 NONAME ; struct QMetaObject const & QDeclarativeDebugPropertyWatch::getStaticMetaObject(void) + ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 592 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *, int) + ?transformOrigin@QDeclarativeItem@@QBE?AW4TransformOrigin@1@XZ @ 593 NONAME ; enum QDeclarativeItem::TransformOrigin QDeclarativeItem::transformOrigin(void) const + ?setState@QDeclarativeDebugWatch@@AAEXW4State@1@@Z @ 594 NONAME ; void QDeclarativeDebugWatch::setState(enum QDeclarativeDebugWatch::State) + ?evaluateEnum@QDeclarativeCustomParser@@IBEHABVQByteArray@@@Z @ 595 NONAME ; int QDeclarativeCustomParser::evaluateEnum(class QByteArray const &) const + ?setState@QDeclarativeDebugQuery@@AAEXW4State@1@@Z @ 596 NONAME ; void QDeclarativeDebugQuery::setState(enum QDeclarativeDebugQuery::State) + ?d_func@QDeclarativeText@@ABEPBVQDeclarativeTextPrivate@@XZ @ 597 NONAME ; class QDeclarativeTextPrivate const * QDeclarativeText::d_func(void) const + ?transitionsProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 598 NONAME ; class QDeclarativeListProperty QDeclarativeStateGroup::transitionsProperty(void) + ?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 599 NONAME ; class QByteArray QDeclarativeType::typeName(void) const + ?asStringList@Variant@QDeclarativeParser@@QBE?AVQStringList@@XZ @ 600 NONAME ; class QStringList QDeclarativeParser::Variant::asStringList(void) const + ?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 601 NONAME ; void QMetaEnumBuilder::removeKey(int) + ?downloadProgress@QDeclarativePixmapReply@@IAEX_J0@Z @ 602 NONAME ABSENT ; void QDeclarativePixmapReply::downloadProgress(long long, long long) + ?addRelatedMetaObject@QMetaObjectBuilder@@QAEHABQ6AABUQMetaObject@@XZ@Z @ 603 NONAME ; int QMetaObjectBuilder::addRelatedMetaObject(struct QMetaObject const & (* const)(void) const &) + ??0QDeclarativeDomValueLiteral@@QAE@XZ @ 604 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(void) + ??_EQDeclarativeDebugObjectExpressionWatch@@UAE@I@Z @ 605 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(unsigned int) + ?computeTransformOrigin@QDeclarativeItemPrivate@@QBE?AVQPointF@@XZ @ 606 NONAME ; class QPointF QDeclarativeItemPrivate::computeTransformOrigin(void) const + ??0QDeclarativeListReference@@QAE@PAVQObject@@PBDPAVQDeclarativeEngine@@@Z @ 607 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QObject *, char const *, class QDeclarativeEngine *) + ?setData@QListModelInterface@@UAE_NHABV?$QHash@HVQVariant@@@@@Z @ 608 NONAME ; bool QListModelInterface::setData(int, class QHash const &) + ??0QDeclarativePen@@QAE@PAVQObject@@@Z @ 609 NONAME ; QDeclarativePen::QDeclarativePen(class QObject *) + ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 610 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *, int) + ?setContextObject@QDeclarativeContext@@QAEXPAVQObject@@@Z @ 611 NONAME ; void QDeclarativeContext::setContextObject(class QObject *) + ??_EQDeclarativeState@@UAE@I@Z @ 612 NONAME ; QDeclarativeState::~QDeclarativeState(unsigned int) + ?expression@QDeclarativeExpression@@QBE?AVQString@@XZ @ 613 NONAME ; class QString QDeclarativeExpression::expression(void) const + ??1QDeclarativeDomDocument@@QAE@XZ @ 614 NONAME ; QDeclarativeDomDocument::~QDeclarativeDomDocument(void) + ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 615 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *, int) + ?asNumber@Variant@QDeclarativeParser@@QBENXZ @ 616 NONAME ; double QDeclarativeParser::Variant::asNumber(void) const + ?d_func@QDeclarativeDebugClient@@ABEPBVQDeclarativeDebugClientPrivate@@XZ @ 617 NONAME ; class QDeclarativeDebugClientPrivate const * QDeclarativeDebugClient::d_func(void) const + ?sceneEvent@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 618 NONAME ; bool QDeclarativeItem::sceneEvent(class QEvent *) + ??0QDeclarativeDebugRootContextQuery@@AAE@PAVQObject@@@Z @ 619 NONAME ; QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(class QObject *) + ?name@QDeclarativeDebugEngineReference@@QBE?AVQString@@XZ @ 620 NONAME ; class QString QDeclarativeDebugEngineReference::name(void) const + ??_EQDeclarativeTransition@@UAE@I@Z @ 621 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(unsigned int) + ??0QDeclarativeAction@@QAE@ABV0@@Z @ 622 NONAME ; QDeclarativeAction::QDeclarativeAction(class QDeclarativeAction const &) + ?extends@QDeclarativeState@@QBE?AVQString@@XZ @ 623 NONAME ; class QString QDeclarativeState::extends(void) const + ?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserProperty@@ABVQString@@@Z @ 624 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserProperty const &, class QString const &) + ??0QDeclarativeCustomParserNode@@QAE@XZ @ 625 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(void) + ?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 626 NONAME ; class QString QDeclarativeDomImport::version(void) const + ?smooth@QDeclarativeItem@@QBE_NXZ @ 627 NONAME ; bool QDeclarativeItem::smooth(void) const + ?implicitSize@QDeclarativePixmapReply@@QBE?AVQSize@@XZ @ 628 NONAME ABSENT ; class QSize QDeclarativePixmapReply::implicitSize(void) const + ??1QDeclarativeInfo@@QAE@XZ @ 629 NONAME ; QDeclarativeInfo::~QDeclarativeInfo(void) + ?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 630 NONAME ; void * QDeclarativeStateOperation::qt_metacast(char const *) + ??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 631 NONAME ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &) + ?isValueType@QDeclarativePropertyPrivate@@QBE_NXZ @ 632 NONAME ; bool QDeclarativePropertyPrivate::isValueType(void) const + ??0QDeclarativeDomValueValueSource@@QAE@ABV0@@Z @ 633 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(class QDeclarativeDomValueValueSource const &) + ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 634 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *, int) + ??_EQDeclarativeDebugExpressionQuery@@UAE@I@Z @ 635 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(unsigned int) + ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 636 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *, int) + ?qt_metacall@QDeclarativeDebugObjectExpressionWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 637 NONAME ; int QDeclarativeDebugObjectExpressionWatch::qt_metacall(enum QMetaObject::Call, int, void * *) + ?d_func@QDeclarativeItem@@AAEPAVQDeclarativeItemPrivate@@XZ @ 638 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItem::d_func(void) + ?binding@QDeclarativeDomValueBinding@@QBE?AVQString@@XZ @ 639 NONAME ; class QString QDeclarativeDomValueBinding::binding(void) const + ?updateAutoState@QDeclarativeStateGroup@@AAE_NXZ @ 640 NONAME ; bool QDeclarativeStateGroup::updateAutoState(void) + ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 641 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *) + ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 642 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *, int) + ??1QDeclarativeProperty@@QAE@XZ @ 643 NONAME ; QDeclarativeProperty::~QDeclarativeProperty(void) + ?fontChanged@QDeclarativeText@@IAEXABVQFont@@@Z @ 644 NONAME ; void QDeclarativeText::fontChanged(class QFont const &) + ?removeItemChangeListener@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItemChangeListener@@V?$QFlags@W4ChangeType@QDeclarativeItemPrivate@@@@@Z @ 645 NONAME ; void QDeclarativeItemPrivate::removeItemChangeListener(class QDeclarativeItemChangeListener *, class QFlags) + ?isList@QDeclarativeDomValue@@QBE_NXZ @ 646 NONAME ; bool QDeclarativeDomValue::isList(void) const + ?insert@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 647 NONAME ; void QDeclarativeListModel::insert(int, class QScriptValue const &) + ?staticMetaObject@QDeclarativeListModel@@2UQMetaObject@@B @ 648 NONAME ; struct QMetaObject const QDeclarativeListModel::staticMetaObject + ?indexOfConstructor@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 649 NONAME ; int QMetaObjectBuilder::indexOfConstructor(class QByteArray const &) + ?lineNumber@QDeclarativeExpression@@QBEHXZ @ 650 NONAME ; int QDeclarativeExpression::lineNumber(void) const + ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 651 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *, int) + ?toString@QDeclarativeError@@QBE?AVQString@@XZ @ 652 NONAME ; class QString QDeclarativeError::toString(void) const + ?index@QMetaPropertyBuilder@@QBEHXZ @ 653 NONAME ; int QMetaPropertyBuilder::index(void) const + ?commaPositions@QDeclarativeDomList@@QBE?AV?$QList@H@@XZ @ 654 NONAME ; class QList QDeclarativeDomList::commaPositions(void) const + ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 655 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *) + ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 656 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *) + ?tr@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 657 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *) + ?setTextFormat@QDeclarativeText@@QAEXW4TextFormat@1@@Z @ 658 NONAME ; void QDeclarativeText::setTextFormat(enum QDeclarativeText::TextFormat) + ?parserStatusCast@QDeclarativeType@@QBEHXZ @ 659 NONAME ; int QDeclarativeType::parserStatusCast(void) const + ??_EQListModelInterface@@UAE@I@Z @ 660 NONAME ; QListModelInterface::~QListModelInterface(unsigned int) + ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 661 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *) + ?getStaticMetaObject@QDeclarativeListModel@@SAABUQMetaObject@@XZ @ 662 NONAME ; struct QMetaObject const & QDeclarativeListModel::getStaticMetaObject(void) + ?setStdCppSet@QMetaPropertyBuilder@@QAEX_N@Z @ 663 NONAME ; void QMetaPropertyBuilder::setStdCppSet(bool) + ??0QDeclarativeItemPrivate@@QAE@XZ @ 664 NONAME ; QDeclarativeItemPrivate::QDeclarativeItemPrivate(void) + ??0QDeclarativeDebugService@@QAE@ABVQString@@PAVQObject@@@Z @ 665 NONAME ; QDeclarativeDebugService::QDeclarativeDebugService(class QString const &, class QObject *) + ??_EQPacketAutoSend@@UAE@I@Z @ 666 NONAME ; QPacketAutoSend::~QPacketAutoSend(unsigned int) + ?saveValueType@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H0H@Z @ 667 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveValueType(struct QMetaObject const *, int, struct QMetaObject const *, int) + ?resetHeight@QDeclarativeItem@@QAEXXZ @ 668 NONAME ; void QDeclarativeItem::resetHeight(void) + ?setVAlign@QDeclarativeText@@QAEXW4VAlignment@1@@Z @ 669 NONAME ; void QDeclarativeText::setVAlign(enum QDeclarativeText::VAlignment) + ??1QDeclarativeDebugService@@UAE@XZ @ 670 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(void) + ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 671 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *, int) + ?elideMode@QDeclarativeText@@QBE?AW4TextElideMode@1@XZ @ 672 NONAME ; enum QDeclarativeText::TextElideMode QDeclarativeText::elideMode(void) const + ?baseUrl@QDeclarativeContext@@QBE?AVQUrl@@XZ @ 673 NONAME ; class QUrl QDeclarativeContext::baseUrl(void) const + ?qt_metacall@QDeclarativeDebugRootContextQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 674 NONAME ; int QDeclarativeDebugRootContextQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ?isNamed@QDeclarativeState@@QBE_NXZ @ 675 NONAME ; bool QDeclarativeState::isNamed(void) const + ?isString@Variant@QDeclarativeParser@@QBE_NXZ @ 676 NONAME ; bool QDeclarativeParser::Variant::isString(void) const + ?restart@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 677 NONAME ; long long QDeclarativeItemPrivate::restart(class QElapsedTimer &) + ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 678 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *, int) + ?qt_metacast@QDeclarativeTransition@@UAEPAXPBD@Z @ 679 NONAME ; void * QDeclarativeTransition::qt_metacast(char const *) + ?timeFromString@QDeclarativeStringConverters@@YA?AVQTime@@ABVQString@@PA_N@Z @ 680 NONAME ; class QTime QDeclarativeStringConverters::timeFromString(class QString const &, bool *) + ?d_func@QDeclarativeDebugClient@@AAEPAVQDeclarativeDebugClientPrivate@@XZ @ 681 NONAME ; class QDeclarativeDebugClientPrivate * QDeclarativeDebugClient::d_func(void) + ??1QDeclarativeType@@AAE@XZ @ 682 NONAME ; QDeclarativeType::~QDeclarativeType(void) + ?colorFromString@QDeclarativeStringConverters@@YA?AVQColor@@ABVQString@@PA_N@Z @ 683 NONAME ; class QColor QDeclarativeStringConverters::colorFromString(class QString const &, bool *) + ??_EQPacketProtocol@@UAE@I@Z @ 684 NONAME ; QPacketProtocol::~QPacketProtocol(unsigned int) + ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 685 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *) + ??0QDeclarativeDebugObjectReference@@QAE@XZ @ 686 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(void) + ?staticMetaObject@QDeclarativeExtensionPlugin@@2UQMetaObject@@B @ 687 NONAME ; struct QMetaObject const QDeclarativeExtensionPlugin::staticMetaObject + ?isNull@QDeclarativeScaleGrid@@QBE_NXZ @ 688 NONAME ; bool QDeclarativeScaleGrid::isNull(void) const + ??_EQDeclarativeStateOperation@@UAE@I@Z @ 689 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(unsigned int) + ??6QDeclarativeInfo@@QAEAAV0@H@Z @ 690 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(int) + ??0QDeclarativeDomDynamicProperty@@QAE@XZ @ 691 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(void) + ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 692 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *, int) + ?type@QDeclarativeProperty@@QBE?AW4Type@1@XZ @ 693 NONAME ; enum QDeclarativeProperty::Type QDeclarativeProperty::type(void) const + ??0QDeclarativeDebugQuery@@IAE@PAVQObject@@@Z @ 694 NONAME ; QDeclarativeDebugQuery::QDeclarativeDebugQuery(class QObject *) + ?baselineOffset@QDeclarativeAnchors@@QBEMXZ @ 695 NONAME ; float QDeclarativeAnchors::baselineOffset(void) const + ??4QDeclarativeDomDocument@@QAEAAV0@ABV0@@Z @ 696 NONAME ; class QDeclarativeDomDocument & QDeclarativeDomDocument::operator=(class QDeclarativeDomDocument const &) + ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@PAVQDeclarativeOpenMetaObjectType@@_N@Z @ 697 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, class QDeclarativeOpenMetaObjectType *, bool) + ?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 698 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *) + ??0QPacketProtocol@@QAE@PAVQIODevice@@PAVQObject@@@Z @ 699 NONAME ; QPacketProtocol::QPacketProtocol(class QIODevice *, class QObject *) + ??1QDeclarativeListReference@@QAE@XZ @ 700 NONAME ; QDeclarativeListReference::~QDeclarativeListReference(void) + ?clearError@QDeclarativeExpression@@QAEXXZ @ 701 NONAME ; void QDeclarativeExpression::clearError(void) + ?setLineNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 702 NONAME ; void QDeclarativeDebugFileReference::setLineNumber(int) + ?qt_metacall@QDeclarativeExtensionPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 703 NONAME ; int QDeclarativeExtensionPlugin::qt_metacall(enum QMetaObject::Call, int, void * *) + ?boundingRect@QDeclarativeText@@UBE?AVQRectF@@XZ @ 704 NONAME ; class QRectF QDeclarativeText::boundingRect(void) const + ?setColor@QDeclarativePen@@QAEXABVQColor@@@Z @ 705 NONAME ; void QDeclarativePen::setColor(class QColor const &) + ??0QDeclarativeDomImport@@QAE@XZ @ 706 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(void) + ?clearErrors@QDeclarativeCustomParser@@QAEXXZ @ 707 NONAME ; void QDeclarativeCustomParser::clearErrors(void) + ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 708 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *, int) + ?toRelocatableData@QMetaObjectBuilder@@QBE?AVQByteArray@@PA_N@Z @ 709 NONAME ; class QByteArray QMetaObjectBuilder::toRelocatableData(bool *) const + ?qt_metacast@QDeclarativeView@@UAEPAXPBD@Z @ 710 NONAME ; void * QDeclarativeView::qt_metacast(char const *) + ?mapToItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 711 NONAME ; class QScriptValue QDeclarativeItem::mapToItem(class QScriptValue const &, float, float) const + ?setPluginPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 712 NONAME ; void QDeclarativeEngine::setPluginPathList(class QStringList const &) + ?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 713 NONAME ; struct QMetaObject const * QDeclarativeState::metaObject(void) const + ?errorString@QDeclarativePixmapReply@@QBE?AVQString@@XZ @ 714 NONAME ABSENT ; class QString QDeclarativePixmapReply::errorString(void) const + ?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 715 NONAME ; class QRectF QDeclarativeRectangle::boundingRect(void) const + ?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 716 NONAME ; class QString QDeclarativeDomImport::uri(void) const + ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@PAVQObject@@@Z @ 717 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QObject *) + ?setBaseUrl@QDeclarativeEngine@@QAEXABVQUrl@@@Z @ 718 NONAME ; void QDeclarativeEngine::setBaseUrl(class QUrl const &) + ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 719 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *, int) + ?setScriptable@QMetaPropertyBuilder@@QAEX_N@Z @ 720 NONAME ; void QMetaPropertyBuilder::setScriptable(bool) + ??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeEngine@@@Z @ 721 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeEngine *) + ?itemsInserted@QListModelInterface@@IAEXHH@Z @ 722 NONAME ; void QListModelInterface::itemsInserted(int, int) + ?generateBorderedRect@QDeclarativeRectangle@@AAEXXZ @ 723 NONAME ; void QDeclarativeRectangle::generateBorderedRect(void) + ?verticalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 724 NONAME ; void QDeclarativeAnchors::verticalCenterOffsetChanged(void) + ?width@QDeclarativeItem@@QBEMXZ @ 725 NONAME ; float QDeclarativeItem::width(void) const + ?isValueInterceptor@QDeclarativeDomValue@@QBE_NXZ @ 726 NONAME ; bool QDeclarativeDomValue::isValueInterceptor(void) const + ?transform_at@QDeclarativeItemPrivate@@SAPAVQGraphicsTransform@@PAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@H@Z @ 727 NONAME ; class QGraphicsTransform * QDeclarativeItemPrivate::transform_at(class QDeclarativeListProperty *, int) + ??1QDeclarativeDomValueBinding@@QAE@XZ @ 728 NONAME ; QDeclarativeDomValueBinding::~QDeclarativeDomValueBinding(void) + ?qt_metacast@QDeclarativeAnchors@@UAEPAXPBD@Z @ 729 NONAME ; void * QDeclarativeAnchors::qt_metacast(char const *) + ?isInterface@QDeclarativeMetaType@@SA_NH@Z @ 730 NONAME ; bool QDeclarativeMetaType::isInterface(int) + ?qt_metacall@QDeclarativeRectangle@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 731 NONAME ; int QDeclarativeRectangle::qt_metacall(enum QMetaObject::Call, int, void * *) + ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 732 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *, int) + ??0Variant@QDeclarativeParser@@QAE@ABVQString@@PAVNode@AST@QDeclarativeJS@@@Z @ 733 NONAME ; QDeclarativeParser::Variant::Variant(class QString const &, class QDeclarativeJS::AST::Node *) + ?rootObject@QDeclarativeDomDocument@@QBE?AVQDeclarativeDomObject@@XZ @ 734 NONAME ; class QDeclarativeDomObject QDeclarativeDomDocument::rootObject(void) const + ?rightChanged@QDeclarativeAnchors@@IAEXXZ @ 735 NONAME ; void QDeclarativeAnchors::rightChanged(void) + ??6QDeclarativeInfo@@QAEAAV0@ABVQByteArray@@@Z @ 736 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QByteArray const &) + ?qt_metacast@QDeclarativeEngine@@UAEPAXPBD@Z @ 737 NONAME ; void * QDeclarativeEngine::qt_metacast(char const *) + ?objectType@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 738 NONAME ; class QByteArray QDeclarativeDomObject::objectType(void) const + ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 739 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QByteArray const &) + ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 740 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeContext *) + ?staticMetaObject@QDeclarativeDebugExpressionQuery@@2UQMetaObject@@B @ 741 NONAME ; struct QMetaObject const QDeclarativeDebugExpressionQuery::staticMetaObject + ?queryRootContexts@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugRootContextQuery@@ABVQDeclarativeDebugEngineReference@@PAVQObject@@@Z @ 742 NONAME ; class QDeclarativeDebugRootContextQuery * QDeclarativeEngineDebug::queryRootContexts(class QDeclarativeDebugEngineReference const &, class QObject *) + ?vector3DFromString@QDeclarativeStringConverters@@YA?AVQVector3D@@ABVQString@@PA_N@Z @ 743 NONAME ; class QVector3D QDeclarativeStringConverters::vector3DFromString(class QString const &, bool *) + ??_EQDeclarativeDebugPropertyWatch@@UAE@I@Z @ 744 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(unsigned int) + ?relatedMetaObjectCount@QMetaObjectBuilder@@QBEHXZ @ 745 NONAME ; int QMetaObjectBuilder::relatedMetaObjectCount(void) const + ?script@QDeclarativeScriptString@@QBE?AVQString@@XZ @ 746 NONAME ; class QString QDeclarativeScriptString::script(void) const + ?index@QMetaMethodBuilder@@QBEHXZ @ 747 NONAME ; int QMetaMethodBuilder::index(void) const + ??4QDeclarativeDomValueBinding@@QAEAAV0@ABV0@@Z @ 748 NONAME ; class QDeclarativeDomValueBinding & QDeclarativeDomValueBinding::operator=(class QDeclarativeDomValueBinding const &) + ??0QDeclarativeExpression@@QAE@XZ @ 749 NONAME ; QDeclarativeExpression::QDeclarativeExpression(void) + ?paint@QDeclarativeItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 750 NONAME ; void QDeclarativeItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 751 NONAME ; class QPacketAutoSend QPacketProtocol::send(void) + ?countChanged@QDeclarativeListModel@@IAEXXZ @ 752 NONAME ; void QDeclarativeListModel::countChanged(void) + ?setBindingForObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@ABVQVariant@@_NPAVQObject@@@Z @ 753 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool, class QObject *) + ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 754 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *) + ??_EQDeclarativeBinding@@UAE@I@Z @ 755 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int) + ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 756 NONAME ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const + ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 757 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *) + ?staticMetaObject@QDeclarativeBinding@@2UQMetaObject@@B @ 758 NONAME ; struct QMetaObject const QDeclarativeBinding::staticMetaObject + ?qualifier@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 759 NONAME ; class QString QDeclarativeDomImport::qualifier(void) const + ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 760 NONAME ABSENT ; class QString QDeclarativePixmapCache::tr(char const *, char const *, int) + ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 761 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeContext *) + ?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 762 NONAME ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *) + ?contains@QDeclarativePropertyMap@@QBE_NABVQString@@@Z @ 763 NONAME ; bool QDeclarativePropertyMap::contains(class QString const &) const + ?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 764 NONAME ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *) + ?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 765 NONAME ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const + ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 766 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *) + ??0QDeclarativePixmapReply@@AAE@PAVQDeclarativeImageReader@@ABVQUrl@@HH@Z @ 767 NONAME ABSENT ; QDeclarativePixmapReply::QDeclarativePixmapReply(class QDeclarativeImageReader *, class QUrl const &, int, int) + ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 768 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *, int) + ?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 769 NONAME ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const + ?hasNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 770 NONAME ; bool QDeclarativeProperty::hasNotifySignal(void) const + ?create@QDeclarativeType@@QBEXPAPAVQObject@@PAPAXI@Z @ 771 NONAME ; void QDeclarativeType::create(class QObject * *, void * *, unsigned int) const + ?reversible@QDeclarativeTransition@@QBE_NXZ @ 772 NONAME ; bool QDeclarativeTransition::reversible(void) const + ?invalidPacket@QPacketProtocol@@IAEXXZ @ 773 NONAME ; void QPacketProtocol::invalidPacket(void) + ??0QDeclarativeDebugObjectReference@@QAE@H@Z @ 774 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int) + ?superClass@QMetaObjectBuilder@@QBEPBUQMetaObject@@XZ @ 775 NONAME ; struct QMetaObject const * QMetaObjectBuilder::superClass(void) const + ?isValid@QDeclarativeListReference@@QBE_NXZ @ 776 NONAME ; bool QDeclarativeListReference::isValid(void) const + ?source@QDeclarativeView@@QBE?AVQUrl@@XZ @ 777 NONAME ; class QUrl QDeclarativeView::source(void) const + ?method@QDeclarativeProperty@@QBE?AVQMetaMethod@@XZ @ 778 NONAME ; class QMetaMethod QDeclarativeProperty::method(void) const + ??0QDeclarativeInfo@@QAE@ABV0@@Z @ 779 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfo const &) + ?deleteFromBinding@QDeclarativeAction@@QAEXXZ @ 780 NONAME ; void QDeclarativeAction::deleteFromBinding(void) + ?setClip@QDeclarativeItem@@QAEX_N@Z @ 781 NONAME ; void QDeclarativeItem::setClip(bool) + ??4QDeclarativeCustomParserNode@@QAEAAV0@ABV0@@Z @ 782 NONAME ; class QDeclarativeCustomParserNode & QDeclarativeCustomParserNode::operator=(class QDeclarativeCustomParserNode const &) + ?color@QDeclarativePen@@QBE?AVQColor@@XZ @ 783 NONAME ; class QColor QDeclarativePen::color(void) const + ?setDesignable@QMetaPropertyBuilder@@QAEX_N@Z @ 784 NONAME ; void QMetaPropertyBuilder::setDesignable(bool) + ?setWrapMode@QDeclarativeText@@QAEXW4WrapMode@1@@Z @ 785 NONAME ; void QDeclarativeText::setWrapMode(enum QDeclarativeText::WrapMode) + ?addClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@0@Z @ 786 NONAME ; int QMetaObjectBuilder::addClassInfo(class QByteArray const &, class QByteArray const &) + ?qt_metacall@QDeclarativePen@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 787 NONAME ; int QDeclarativePen::qt_metacall(enum QMetaObject::Call, int, void * *) + ?dynamicProperty@QDeclarativeDomObject@@QBE?AVQDeclarativeDomDynamicProperty@@ABVQByteArray@@@Z @ 788 NONAME ; class QDeclarativeDomDynamicProperty QDeclarativeDomObject::dynamicProperty(class QByteArray const &) const + ??1QDeclarativeDomComponent@@QAE@XZ @ 789 NONAME ; QDeclarativeDomComponent::~QDeclarativeDomComponent(void) + ?setRight@QDeclarativeScaleGrid@@QAEXH@Z @ 790 NONAME ; void QDeclarativeScaleGrid::setRight(int) + ?isList@QDeclarativeMetaType@@SA_NH@Z @ 791 NONAME ; bool QDeclarativeMetaType::isList(int) + ??6QDeclarativeInfo@@QAEAAV0@VQTextStreamManipulator@@@Z @ 792 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStreamManipulator) + ?index@QDeclarativeProperty@@QBEHXZ @ 793 NONAME ; int QDeclarativeProperty::index(void) const + ?d_func@QMetaPropertyBuilder@@ABEPAVQMetaPropertyBuilderPrivate@@XZ @ 794 NONAME ; class QMetaPropertyBuilderPrivate * QMetaPropertyBuilder::d_func(void) const + ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 795 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *, int) + ?setEnabled@QDeclarativeAbstractBinding@@QAEX_N@Z @ 796 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool) + ?returnType@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 797 NONAME ; class QByteArray QMetaMethodBuilder::returnType(void) const + ?propertyValueSourceCast@QDeclarativeType@@QBEHXZ @ 798 NONAME ; int QDeclarativeType::propertyValueSourceCast(void) const + ?mousePressEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 799 NONAME ; void QDeclarativeText::mousePressEvent(class QGraphicsSceneMouseEvent *) + ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 800 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *) + ?constructor@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 801 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::constructor(int) const + ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PAVQObject@@@Z @ 802 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(class QObject *) + ?resetHeight@QDeclarativeItemPrivate@@UAEXXZ @ 803 NONAME ; void QDeclarativeItemPrivate::resetHeight(void) + ?qt_metacast@QDeclarativeDebugPropertyWatch@@UAEPAXPBD@Z @ 804 NONAME ; void * QDeclarativeDebugPropertyWatch::qt_metacast(char const *) + ??1QDeclarativeStateOperation@@UAE@XZ @ 805 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(void) + ??_EQDeclarativeDebugQuery@@UAE@I@Z @ 806 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(unsigned int) + ?update@QDeclarativeAbstractBinding@@QAEXXZ @ 807 NONAME ; void QDeclarativeAbstractBinding::update(void) + ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 808 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *, int) + ?read@QPacketProtocol@@QAE?AVQPacket@@XZ @ 809 NONAME ; class QPacket QPacketProtocol::read(void) + ?setParentItem@QDeclarativeItem@@QAEXPAV1@@Z @ 810 NONAME ; void QDeclarativeItem::setParentItem(class QDeclarativeItem *) + ?qmlAttachedProperties@QDeclarativeComponent@@SAPAVQDeclarativeComponentAttached@@PAVQObject@@@Z @ 811 NONAME ; class QDeclarativeComponentAttached * QDeclarativeComponent::qmlAttachedProperties(class QObject *) + ??0QDeclarativeView@@QAE@ABVQUrl@@PAVQWidget@@@Z @ 812 NONAME ; QDeclarativeView::QDeclarativeView(class QUrl const &, class QWidget *) + ?qt_metacall@QDeclarativePixmapReply@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 813 NONAME ABSENT ; int QDeclarativePixmapReply::qt_metacall(enum QMetaObject::Call, int, void * *) + ?valueChanged@QDeclarativeExpression@@IAEXXZ @ 814 NONAME ; void QDeclarativeExpression::valueChanged(void) + ?childrenChanged@QDeclarativeItem@@IAEXXZ @ 815 NONAME ; void QDeclarativeItem::childrenChanged(void) + ??_EQDeclarativeView@@UAE@I@Z @ 816 NONAME ; QDeclarativeView::~QDeclarativeView(unsigned int) + ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 817 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *, int) + ?tag@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 818 NONAME ; class QByteArray QMetaMethodBuilder::tag(void) const + ?getStaticMetaObject@QPacketProtocol@@SAABUQMetaObject@@XZ @ 819 NONAME ; struct QMetaObject const & QPacketProtocol::getStaticMetaObject(void) + ?setContext@QDeclarativeScriptString@@QAEXPAVQDeclarativeContext@@@Z @ 820 NONAME ; void QDeclarativeScriptString::setContext(class QDeclarativeContext *) + ?addImageProvider@QDeclarativeEngine@@QAEXABVQString@@PAVQDeclarativeImageProvider@@@Z @ 821 NONAME ; void QDeclarativeEngine::addImageProvider(class QString const &, class QDeclarativeImageProvider *) + ?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 822 NONAME ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const + ?stateChanged@QDeclarativeItem@@IAEXABVQString@@@Z @ 823 NONAME ; void QDeclarativeItem::stateChanged(class QString const &) + ?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 824 NONAME ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment) + ?tr@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 825 NONAME ABSENT ; class QString QDeclarativePixmapCache::tr(char const *, char const *) + ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 826 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &) + ?setDynamic@QMetaPropertyBuilder@@QAEX_N@Z @ 827 NONAME ; void QMetaPropertyBuilder::setDynamic(bool) + ?d_func@QDeclarativeEngine@@ABEPBVQDeclarativeEnginePrivate@@XZ @ 828 NONAME ; class QDeclarativeEnginePrivate const * QDeclarativeEngine::d_func(void) const + ?toBinding@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueBinding@@XZ @ 829 NONAME ; class QDeclarativeDomValueBinding QDeclarativeDomValue::toBinding(void) const + ?removeImageProvider@QDeclarativeEngine@@QAEXABVQString@@@Z @ 830 NONAME ; void QDeclarativeEngine::removeImageProvider(class QString const &) + ?horizontalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 831 NONAME ; void QDeclarativeAnchors::horizontalCenterOffsetChanged(void) + ?tr@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 832 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *) + ?d_func@QDeclarativeItem@@ABEPBVQDeclarativeItemPrivate@@XZ @ 833 NONAME ; class QDeclarativeItemPrivate const * QDeclarativeItem::d_func(void) const + ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 834 NONAME ABSENT ; class QString QDeclarativePixmapReply::tr(char const *, char const *) + ?isUser@QMetaPropertyBuilder@@QBE_NXZ @ 835 NONAME ; bool QMetaPropertyBuilder::isUser(void) const + ?doUpdate@QDeclarativeRectangle@@AAEXXZ @ 836 NONAME ; void QDeclarativeRectangle::doUpdate(void) + ?qmlExecuteDeferred@@YAXPAVQObject@@@Z @ 837 NONAME ; void qmlExecuteDeferred(class QObject *) + ?setImplicitHeight@QDeclarativeItem@@IAEXM@Z @ 838 NONAME ; void QDeclarativeItem::setImplicitHeight(float) + ?horizontalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 839 NONAME ; float QDeclarativeAnchors::horizontalCenterOffset(void) const + ?resetRight@QDeclarativeAnchors@@QAEXXZ @ 840 NONAME ; void QDeclarativeAnchors::resetRight(void) + ??6QDeclarativeInfo@@QAEAAV0@J@Z @ 841 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long) + ?isReady@QDeclarativeComponent@@QBE_NXZ @ 842 NONAME ; bool QDeclarativeComponent::isReady(void) const + ??4QDeclarativeDebugObjectReference@@QAEAAV0@ABV0@@Z @ 843 NONAME ; class QDeclarativeDebugObjectReference & QDeclarativeDebugObjectReference::operator=(class QDeclarativeDebugObjectReference const &) + ??1QDeclarativeDomDynamicProperty@@QAE@XZ @ 844 NONAME ; QDeclarativeDomDynamicProperty::~QDeclarativeDomDynamicProperty(void) + ??1QDeclarativeBehavior@@UAE@XZ @ 845 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(void) + ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@@Z @ 846 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *) + ?qt_metacall@QDeclarativeDebugClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 847 NONAME ; int QDeclarativeDebugClient::qt_metacall(enum QMetaObject::Call, int, void * *) + ?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 848 NONAME ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const + ??1QDeclarativeDebugQuery@@UAE@XZ @ 849 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void) + ?data_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 850 NONAME ; void QDeclarativeItemPrivate::data_append(class QDeclarativeListProperty *, class QObject *) + ??1QDeclarativePixmapReply@@UAE@XZ @ 851 NONAME ABSENT ; QDeclarativePixmapReply::~QDeclarativePixmapReply(void) + ?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 852 NONAME ; class QString QDeclarativeState::tr(char const *, char const *) + ?isLoading@QDeclarativePixmapReply@@ABE_NXZ @ 853 NONAME ABSENT ; bool QDeclarativePixmapReply::isLoading(void) const + ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 854 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int) + ?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 855 NONAME ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *) + ?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 856 NONAME ; float QDeclarativeAnchors::bottomMargin(void) const + ?q_func@QDeclarativeItemPrivate@@AAEPAVQDeclarativeItem@@XZ @ 857 NONAME ; class QDeclarativeItem * QDeclarativeItemPrivate::q_func(void) + ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 858 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *) + ??1QDeclarativeDomList@@QAE@XZ @ 859 NONAME ; QDeclarativeDomList::~QDeclarativeDomList(void) + ??0QDeclarativeOpenMetaObjectType@@QAE@PBUQMetaObject@@PAVQDeclarativeEngine@@@Z @ 860 NONAME ; QDeclarativeOpenMetaObjectType::QDeclarativeOpenMetaObjectType(struct QMetaObject const *, class QDeclarativeEngine *) + ?removeProperty@QMetaObjectBuilder@@QAEXH@Z @ 861 NONAME ; void QMetaObjectBuilder::removeProperty(int) + ?staticMetaObject@QDeclarativeScaleGrid@@2UQMetaObject@@B @ 862 NONAME ; struct QMetaObject const QDeclarativeScaleGrid::staticMetaObject + ??0QDeclarativeDomObject@@QAE@ABV0@@Z @ 863 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(class QDeclarativeDomObject const &) + ?qt_metacast@QDeclarativeDebugWatch@@UAEPAXPBD@Z @ 864 NONAME ; void * QDeclarativeDebugWatch::qt_metacast(char const *) + ?implicitHeight@QDeclarativeItem@@QBEMXZ @ 865 NONAME ; float QDeclarativeItem::implicitHeight(void) const + ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 866 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *) + ?status@QDeclarativePixmapReply@@QBE?AW4Status@1@XZ @ 867 NONAME ABSENT ; enum QDeclarativePixmapReply::Status QDeclarativePixmapReply::status(void) const + ??6@YA?AVQDebug@@V0@ABVQDeclarativeError@@@Z @ 868 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeError const &) + ?setContextProperty@QDeclarativeContext@@QAEXABVQString@@ABVQVariant@@@Z @ 869 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QVariant const &) + ?imports@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeDomImport@@@@XZ @ 870 NONAME ; class QList QDeclarativeDomDocument::imports(void) const + ?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 871 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *) + ?getStaticMetaObject@QDeclarativePen@@SAABUQMetaObject@@XZ @ 872 NONAME ; struct QMetaObject const & QDeclarativePen::getStaticMetaObject(void) + ?penChanged@QDeclarativePen@@IAEXXZ @ 873 NONAME ; void QDeclarativePen::penChanged(void) + ?propertyTypeName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 874 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyTypeName(void) const + ?position@QDeclarativeDomValue@@QBEHXZ @ 875 NONAME ; int QDeclarativeDomValue::position(void) const + ?setWidth@QDeclarativeItemPrivate@@UAEXM@Z @ 876 NONAME ; void QDeclarativeItemPrivate::setWidth(float) + ?staticMetaObject@QDeclarativeDebugWatch@@2UQMetaObject@@B @ 877 NONAME ; struct QMetaObject const QDeclarativeDebugWatch::staticMetaObject + ??_EQDeclarativeContext@@UAE@I@Z @ 878 NONAME ; QDeclarativeContext::~QDeclarativeContext(unsigned int) + ?rootContext@QDeclarativeView@@QAEPAVQDeclarativeContext@@XZ @ 879 NONAME ; class QDeclarativeContext * QDeclarativeView::rootContext(void) + ?staticMetaObject@QDeclarativeDebugQuery@@2UQMetaObject@@B @ 880 NONAME ; struct QMetaObject const QDeclarativeDebugQuery::staticMetaObject + ??0QDeclarativeExtensionPlugin@@QAE@PAVQObject@@@Z @ 881 NONAME ; QDeclarativeExtensionPlugin::QDeclarativeExtensionPlugin(class QObject *) + ??_EQDeclarativeOpenMetaObject@@UAE@I@Z @ 882 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(unsigned int) + ?states@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 883 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::states(void) + ?rawMetaObjectForType@QDeclarativePropertyPrivate@@SAPBUQMetaObject@@PAVQDeclarativeEnginePrivate@@H@Z @ 884 NONAME ; struct QMetaObject const * QDeclarativePropertyPrivate::rawMetaObjectForType(class QDeclarativeEnginePrivate *, int) + ?setHeight@QDeclarativeItem@@QAEXM@Z @ 885 NONAME ; void QDeclarativeItem::setHeight(float) + ??0QDeclarativeDomDocument@@QAE@ABV0@@Z @ 886 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(class QDeclarativeDomDocument const &) + ?position@QDeclarativeDomDynamicProperty@@QBEHXZ @ 887 NONAME ; int QDeclarativeDomDynamicProperty::position(void) const + ?animations@QDeclarativeTransition@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeAbstractAnimation@@@@XZ @ 888 NONAME ; class QDeclarativeListProperty QDeclarativeTransition::animations(void) + ?tr@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 889 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *, int) + ??_EQMetaObjectBuilder@@UAE@I@Z @ 890 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(unsigned int) + ?propertyName@QDeclarativeDomProperty@@QBE?AVQByteArray@@XZ @ 891 NONAME ; class QByteArray QDeclarativeDomProperty::propertyName(void) const + ??0QDeclarativeView@@QAE@PAVQWidget@@@Z @ 892 NONAME ; QDeclarativeView::QDeclarativeView(class QWidget *) + ?createObject@QDeclarativeComponent@@IAE?AVQScriptValue@@PAVQObject@@@Z @ 893 NONAME ; class QScriptValue QDeclarativeComponent::createObject(class QObject *) + ?name@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 894 NONAME ; class QString QDeclarativeDebugPropertyReference::name(void) const + ?object@QDeclarativeDomValueValueSource@@QBE?AVQDeclarativeDomObject@@XZ @ 895 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueSource::object(void) const + ??0QMetaPropertyBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 896 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(class QMetaObjectBuilder const *, int) + ?d_func@QDeclarativeEngineDebug@@ABEPBVQDeclarativeEngineDebugPrivate@@XZ @ 897 NONAME ; class QDeclarativeEngineDebugPrivate const * QDeclarativeEngineDebug::d_func(void) const + ?d_func@QDeclarativeBinding@@AAEPAVQDeclarativeBindingPrivate@@XZ @ 898 NONAME ; class QDeclarativeBindingPrivate * QDeclarativeBinding::d_func(void) + ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 899 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *, int) + ?attachedPropertiesFuncId@QDeclarativeMetaType@@SAHPBUQMetaObject@@@Z @ 900 NONAME ; int QDeclarativeMetaType::attachedPropertiesFuncId(struct QMetaObject const *) + ?horizontalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 901 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::horizontalCenter(void) const + ?isNull@QDeclarativeComponent@@QBE_NXZ @ 902 NONAME ; bool QDeclarativeComponent::isNull(void) const + ?d_func@QDeclarativeRectangle@@ABEPBVQDeclarativeRectanglePrivate@@XZ @ 903 NONAME ; class QDeclarativeRectanglePrivate const * QDeclarativeRectangle::d_func(void) const + ?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 904 NONAME ; void QDeclarativeAnchors::setRightMargin(float) + ?className@QMetaObjectBuilder@@QBE?AVQByteArray@@XZ @ 905 NONAME ; class QByteArray QMetaObjectBuilder::className(void) const + ??0QDeclarativeState@@QAE@PAVQObject@@@Z @ 906 NONAME ; QDeclarativeState::QDeclarativeState(class QObject *) + ?contexts@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugContextReference@@@@XZ @ 907 NONAME ; class QList QDeclarativeDebugContextReference::contexts(void) const + ?keyReleaseEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 908 NONAME ; void QDeclarativeItem::keyReleaseEvent(class QKeyEvent *) + ?qt_metacall@QDeclarativeAnchors@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 909 NONAME ; int QDeclarativeAnchors::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QDeclarativeAnchors@@QAE@PAVQGraphicsObject@@PAVQObject@@@Z @ 910 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QGraphicsObject *, class QObject *) + ??4QDeclarativeScriptString@@QAEAAV0@ABV0@@Z @ 911 NONAME ; class QDeclarativeScriptString & QDeclarativeScriptString::operator=(class QDeclarativeScriptString const &) + ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 912 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty const &) + ?hasNotifySignal@QMetaPropertyBuilder@@QBE_NXZ @ 913 NONAME ; bool QMetaPropertyBuilder::hasNotifySignal(void) const + ??4QDeclarativeDomImport@@QAEAAV0@ABV0@@Z @ 914 NONAME ; class QDeclarativeDomImport & QDeclarativeDomImport::operator=(class QDeclarativeDomImport const &) + ?resetFill@QDeclarativeAnchors@@QAEXXZ @ 915 NONAME ; void QDeclarativeAnchors::resetFill(void) + ??6QDeclarativeInfo@@QAEAAV0@_K@Z @ 916 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long long) + ?d_func@QDeclarativeComponent@@ABEPBVQDeclarativeComponentPrivate@@XZ @ 917 NONAME ; class QDeclarativeComponentPrivate const * QDeclarativeComponent::d_func(void) const + ??0QDeclarativeBehavior@@QAE@PAVQObject@@@Z @ 918 NONAME ; QDeclarativeBehavior::QDeclarativeBehavior(class QObject *) + ?length@QDeclarativeDomValue@@QBEHXZ @ 919 NONAME ; int QDeclarativeDomValue::length(void) const + ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 920 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *, int) + ??0QDeclarativeType@@AAE@HABURegisterInterface@QDeclarativePrivate@@@Z @ 921 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterInterface const &) + ?scopeObject@QDeclarativeScriptString@@QBEPAVQObject@@XZ @ 922 NONAME ; class QObject * QDeclarativeScriptString::scopeObject(void) const + ?left@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 923 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::left(void) const + ??1QDeclarativeDebuggerStatus@@UAE@XZ @ 924 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(void) + ??6QDeclarativeInfo@@QAEAAV0@ABVQLatin1String@@@Z @ 925 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QLatin1String const &) + ?at@QDeclarativeListReference@@QBEPAVQObject@@H@Z @ 926 NONAME ; class QObject * QDeclarativeListReference::at(int) const + ?metaObject@QDeclarativeDebugWatch@@UBEPBUQMetaObject@@XZ @ 927 NONAME ; struct QMetaObject const * QDeclarativeDebugWatch::metaObject(void) const + ?qt_metacast@QListModelInterface@@UAEPAXPBD@Z @ 928 NONAME ; void * QListModelInterface::qt_metacast(char const *) + ?deserialize@QMetaObjectBuilder@@QAEXAAVQDataStream@@ABV?$QMap@VQByteArray@@PB$$CBUQMetaObject@@@@@Z @ 929 NONAME ; void QMetaObjectBuilder::deserialize(class QDataStream &, class QMap const &) + ?canClear@QDeclarativeListReference@@QBE_NXZ @ 930 NONAME ; bool QDeclarativeListReference::canClear(void) const + ??4QDeclarativeCustomParserProperty@@QAEAAV0@ABV0@@Z @ 931 NONAME ; class QDeclarativeCustomParserProperty & QDeclarativeCustomParserProperty::operator=(class QDeclarativeCustomParserProperty const &) + ?parameterNames@QMetaMethodBuilder@@QBE?AV?$QList@VQByteArray@@@@XZ @ 932 NONAME ; class QList QMetaMethodBuilder::parameterNames(void) const + ?get@QDeclarativeListModel@@QBE?AVQScriptValue@@H@Z @ 933 NONAME ; class QScriptValue QDeclarativeListModel::get(int) const + ?createSize@QDeclarativeType@@QBEHXZ @ 934 NONAME ; int QDeclarativeType::createSize(void) const + ?isValueSource@QDeclarativeDomValue@@QBE_NXZ @ 935 NONAME ; bool QDeclarativeDomValue::isValueSource(void) const + ?isWritable@QDeclarativeProperty@@QBE_NXZ @ 936 NONAME ; bool QDeclarativeProperty::isWritable(void) const + ?setKeepMouseGrab@QDeclarativeItem@@QAEX_N@Z @ 937 NONAME ; void QDeclarativeItem::setKeepMouseGrab(bool) + ??0QDeclarativeDebugContextReference@@QAE@XZ @ 938 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(void) + ?setParameterNames@QMetaMethodBuilder@@QAEXABV?$QList@VQByteArray@@@@@Z @ 939 NONAME ; void QMetaMethodBuilder::setParameterNames(class QList const &) + ?getStaticMetaObject@QDeclarativeDebugRootContextQuery@@SAABUQMetaObject@@XZ @ 940 NONAME ; struct QMetaObject const & QDeclarativeDebugRootContextQuery::getStaticMetaObject(void) + ?textChanged@QDeclarativeText@@IAEXABVQString@@@Z @ 941 NONAME ; void QDeclarativeText::textChanged(class QString const &) + ?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 942 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *) + ??0QDeclarativeCustomParserProperty@@QAE@ABV0@@Z @ 943 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(class QDeclarativeCustomParserProperty const &) + ?getStaticMetaObject@QDeclarativeComponent@@SAABUQMetaObject@@XZ @ 944 NONAME ; struct QMetaObject const & QDeclarativeComponent::getStaticMetaObject(void) + ?parentItem@QDeclarativeItem@@QBEPAV1@XZ @ 945 NONAME ; class QDeclarativeItem * QDeclarativeItem::parentItem(void) const + ?value@QMetaEnumBuilder@@QBEHH@Z @ 946 NONAME ; int QMetaEnumBuilder::value(int) const + ??_EQDeclarativeExpression@@UAE@I@Z @ 947 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(unsigned int) + ?load@QDeclarativeDomDocument@@QAE_NPAVQDeclarativeEngine@@ABVQByteArray@@ABVQUrl@@@Z @ 948 NONAME ; bool QDeclarativeDomDocument::load(class QDeclarativeEngine *, class QByteArray const &, class QUrl const &) + ?staticMetaObject@QDeclarativeStateGroup@@2UQMetaObject@@B @ 949 NONAME ; struct QMetaObject const QDeclarativeStateGroup::staticMetaObject + ?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 950 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *) + ?verticalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 951 NONAME ; void QDeclarativeAnchors::verticalCenterChanged(void) + ?isScriptable@QMetaPropertyBuilder@@QBE_NXZ @ 952 NONAME ; bool QMetaPropertyBuilder::isScriptable(void) const + ?typeCategory@QDeclarativeMetaType@@SA?AW4TypeCategory@1@H@Z @ 953 NONAME ; enum QDeclarativeMetaType::TypeCategory QDeclarativeMetaType::typeCategory(int) + ?findSignalByName@QDeclarativePropertyPrivate@@SA?AVQMetaMethod@@PBUQMetaObject@@ABVQByteArray@@@Z @ 954 NONAME ; class QMetaMethod QDeclarativePropertyPrivate::findSignalByName(struct QMetaObject const *, class QByteArray const &) + ?length@QDeclarativeDomDynamicProperty@@QBEHXZ @ 955 NONAME ; int QDeclarativeDomDynamicProperty::length(void) const + ?property@QDeclarativeBinding@@QBE?AVQDeclarativeProperty@@XZ @ 956 NONAME ; class QDeclarativeProperty QDeclarativeBinding::property(void) const + ??0QDeclarativeDomValueBinding@@QAE@XZ @ 957 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(void) + ?addImportPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 958 NONAME ; void QDeclarativeEngine::addImportPath(class QString const &) + ?engine@QDeclarativeContext@@QBEPAVQDeclarativeEngine@@XZ @ 959 NONAME ; class QDeclarativeEngine * QDeclarativeContext::engine(void) const + ?length@QDeclarativeDomObject@@QBEHXZ @ 960 NONAME ; int QDeclarativeDomObject::length(void) const + ?setBaselineOffset@QDeclarativeAnchors@@QAEXM@Z @ 961 NONAME ; void QDeclarativeAnchors::setBaselineOffset(float) + ?append@QDeclarativeListReference@@QBE_NPAVQObject@@@Z @ 962 NONAME ; bool QDeclarativeListReference::append(class QObject *) const + ?d_func@QDeclarativeEngineDebug@@AAEPAVQDeclarativeEngineDebugPrivate@@XZ @ 963 NONAME ; class QDeclarativeEngineDebugPrivate * QDeclarativeEngineDebug::d_func(void) + ??1QDeclarativeNetworkAccessManagerFactory@@UAE@XZ @ 964 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(void) + ?textFormatChanged@QDeclarativeText@@IAEXW4TextFormat@1@@Z @ 965 NONAME ; void QDeclarativeText::textFormatChanged(enum QDeclarativeText::TextFormat) + ?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 966 NONAME ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *) + ?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 967 NONAME ; class QByteArray QDeclarativeType::qmlTypeName(void) const + ?tr@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 968 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *) + ?setLoading@QDeclarativePixmapReply@@AAEXXZ @ 969 NONAME ABSENT ; void QDeclarativePixmapReply::setLoading(void) + ?isProperty@QDeclarativeProperty@@QBE_NXZ @ 970 NONAME ; bool QDeclarativeProperty::isProperty(void) const + ?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 971 NONAME ; class QList QDeclarativeStateGroup::states(void) const + ??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 972 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void) + ?isValid@QDeclarativeDomObject@@QBE_NXZ @ 973 NONAME ; bool QDeclarativeDomObject::isValid(void) const + ?staticMetaObject@QDeclarativeAnchors@@2UQMetaObject@@B @ 974 NONAME ; struct QMetaObject const QDeclarativeAnchors::staticMetaObject + ??_EQDeclarativePen@@UAE@I@Z @ 975 NONAME ; QDeclarativePen::~QDeclarativePen(unsigned int) + ??0QDeclarativeDomProperty@@QAE@ABV0@@Z @ 976 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(class QDeclarativeDomProperty const &) + ?_states@QDeclarativeItemPrivate@@QAEPAVQDeclarativeStateGroup@@XZ @ 977 NONAME ; class QDeclarativeStateGroup * QDeclarativeItemPrivate::_states(void) + ?verticalAlignmentChanged@QDeclarativeText@@IAEXW4VAlignment@1@@Z @ 978 NONAME ; void QDeclarativeText::verticalAlignmentChanged(enum QDeclarativeText::VAlignment) + ?typeId@QDeclarativeType@@QBEHXZ @ 979 NONAME ; int QDeclarativeType::typeId(void) const + ?marginsChanged@QDeclarativeAnchors@@IAEXXZ @ 980 NONAME ; void QDeclarativeAnchors::marginsChanged(void) + ?setValue@QDeclarativeOpenMetaObject@@QAEXHABVQVariant@@@Z @ 981 NONAME ; void QDeclarativeOpenMetaObject::setValue(int, class QVariant const &) + ?parentProperty@QDeclarativeItemPrivate@@SAXPAVQObject@@PAXPAVQDeclarativeNotifierEndpoint@@@Z @ 982 NONAME ; void QDeclarativeItemPrivate::parentProperty(class QObject *, void *, class QDeclarativeNotifierEndpoint *) + ??4QDeclarativeDebugContextReference@@QAEAAV0@ABV0@@Z @ 983 NONAME ; class QDeclarativeDebugContextReference & QDeclarativeDebugContextReference::operator=(class QDeclarativeDebugContextReference const &) + ?isModule@QDeclarativeMetaType@@SA_NABVQByteArray@@HH@Z @ 984 NONAME ; bool QDeclarativeMetaType::isModule(class QByteArray const &, int, int) + ?parentFunctions@QDeclarativeMetaType@@SA?AV?$QList@P6A?AW4AutoParentResult@QDeclarativePrivate@@PAVQObject@@0@Z@@XZ @ 985 NONAME ; class QList QDeclarativeMetaType::parentFunctions(void) + ?metaObject@QDeclarativeDebugPropertyWatch@@UBEPBUQMetaObject@@XZ @ 986 NONAME ; struct QMetaObject const * QDeclarativeDebugPropertyWatch::metaObject(void) const + ??0QDeclarativeRectangle@@QAE@PAVQDeclarativeItem@@@Z @ 987 NONAME ; QDeclarativeRectangle::QDeclarativeRectangle(class QDeclarativeItem *) + ?setOutputWarningsToStandardError@QDeclarativeEngine@@QAEX_N@Z @ 988 NONAME ; void QDeclarativeEngine::setOutputWarningsToStandardError(bool) + ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@0@Z @ 989 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &, class QByteArray const &) + ?enumerator@QMetaObjectBuilder@@QBE?AVQMetaEnumBuilder@@H@Z @ 990 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::enumerator(int) const + ?fromRelocatableData@QMetaObjectBuilder@@SAXPAUQMetaObject@@PBU2@ABVQByteArray@@@Z @ 991 NONAME ; void QMetaObjectBuilder::fromRelocatableData(struct QMetaObject *, struct QMetaObject const *, class QByteArray const &) + ?gridRight@QDeclarativeGridScaledImage@@QBEHXZ @ 992 NONAME ; int QDeclarativeGridScaledImage::gridRight(void) const + ?isAlias@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 993 NONAME ; bool QDeclarativeDomDynamicProperty::isAlias(void) const + ?d_func@QDeclarativeContext@@ABEPBVQDeclarativeContextPrivate@@XZ @ 994 NONAME ; class QDeclarativeContextPrivate const * QDeclarativeContext::d_func(void) const + ?getStaticMetaObject@QDeclarativeDebugEnginesQuery@@SAABUQMetaObject@@XZ @ 995 NONAME ; struct QMetaObject const & QDeclarativeDebugEnginesQuery::getStaticMetaObject(void) + ?tr@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 996 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *, int) + ?staticMetaObject@QDeclarativeDebugPropertyWatch@@2UQMetaObject@@B @ 997 NONAME ; struct QMetaObject const QDeclarativeDebugPropertyWatch::staticMetaObject + ?setDescription@QDeclarativeError@@QAEXABVQString@@@Z @ 998 NONAME ; void QDeclarativeError::setDescription(class QString const &) + ??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@@Z @ 999 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &) + ??1QDeclarativeOpenMetaObjectType@@UAE@XZ @ 1000 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(void) + ?setReversible@QDeclarativeTransition@@QAEX_N@Z @ 1001 NONAME ; void QDeclarativeTransition::setReversible(bool) + ?notifySignal@QMetaPropertyBuilder@@QBE?AVQMetaMethodBuilder@@XZ @ 1002 NONAME ; class QMetaMethodBuilder QMetaPropertyBuilder::notifySignal(void) const + ??0QDeclarativeDomList@@QAE@XZ @ 1003 NONAME ; QDeclarativeDomList::QDeclarativeDomList(void) + ?indexOfSignal@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1004 NONAME ; int QMetaObjectBuilder::indexOfSignal(class QByteArray const &) + ?toState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 1005 NONAME ; class QString QDeclarativeTransition::toState(void) const + ??0QDeclarativeDomDocument@@QAE@XZ @ 1006 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(void) + ?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 1007 NONAME ; void QDeclarativeState::setWhen(class QDeclarativeBinding *) + ?isWhenKnown@QDeclarativeState@@QBE_NXZ @ 1008 NONAME ; bool QDeclarativeState::isWhenKnown(void) const + ?agent@QDeclarativeListModel@@QAEPAVQDeclarativeListModelWorkerAgent@@XZ @ 1009 NONAME ; class QDeclarativeListModelWorkerAgent * QDeclarativeListModel::agent(void) + ?engine@QDeclarativeExpression@@QBEPAVQDeclarativeEngine@@XZ @ 1010 NONAME ; class QDeclarativeEngine * QDeclarativeExpression::engine(void) const + ??_EQDeclarativeDebugWatch@@UAE@I@Z @ 1011 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(unsigned int) + ?isEmpty@QPacket@@QBE_NXZ @ 1012 NONAME ; bool QPacket::isEmpty(void) const + ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@PBUQMetaObject@@@Z @ 1013 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(struct QMetaObject const *) + ?setFill@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 1014 NONAME ; void QDeclarativeAnchors::setFill(class QGraphicsObject *) + ?setHAlign@QDeclarativeText@@QAEXW4HAlignment@1@@Z @ 1015 NONAME ; void QDeclarativeText::setHAlign(enum QDeclarativeText::HAlignment) + ??0QDeclarativeScriptString@@QAE@ABV0@@Z @ 1016 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(class QDeclarativeScriptString const &) + ?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1017 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *) + ?metaObject@QDeclarativeDebugRootContextQuery@@UBEPBUQMetaObject@@XZ @ 1018 NONAME ; struct QMetaObject const * QDeclarativeDebugRootContextQuery::metaObject(void) const + ?setSignalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@PAV2@@Z @ 1019 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::setSignalExpression(class QDeclarativeProperty const &, class QDeclarativeExpression *) + ?reversibleChanged@QDeclarativeTransition@@IAEXXZ @ 1020 NONAME ; void QDeclarativeTransition::reversibleChanged(void) + ??4QDeclarativeDomValueValueSource@@QAEAAV0@ABV0@@Z @ 1021 NONAME ; class QDeclarativeDomValueValueSource & QDeclarativeDomValueValueSource::operator=(class QDeclarativeDomValueValueSource const &) + ?name@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 1022 NONAME ; class QString QDeclarativeDebugObjectReference::name(void) const + ?anchorLines@QDeclarativeItemPrivate@@QBEPAUAnchorLines@1@XZ @ 1023 NONAME ; struct QDeclarativeItemPrivate::AnchorLines * QDeclarativeItemPrivate::anchorLines(void) const + ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABVQDeclarativeError@@@Z @ 1024 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QDeclarativeError const &) + ?staticMetaObject@QDeclarativeText@@2UQMetaObject@@B @ 1025 NONAME ; struct QMetaObject const QDeclarativeText::staticMetaObject + ?color@QDeclarativeRectangle@@QBE?AVQColor@@XZ @ 1026 NONAME ; class QColor QDeclarativeRectangle::color(void) const + ?isEnabled@QDeclarativeDebugClient@@QBE_NXZ @ 1027 NONAME ; bool QDeclarativeDebugClient::isEnabled(void) const + ?send@QPacketProtocol@@QAEXABVQPacket@@@Z @ 1028 NONAME ; void QPacketProtocol::send(class QPacket const &) + ?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserNode@@ABVQString@@@Z @ 1029 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserNode const &, class QString const &) + ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PBUQMetaObject@@@Z @ 1030 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(struct QMetaObject const *) + ?isComponentComplete@QDeclarativeItem@@IBE_NXZ @ 1031 NONAME ; bool QDeclarativeItem::isComponentComplete(void) const + ?type@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 1032 NONAME ; class QByteArray QMetaPropertyBuilder::type(void) const + ?setProperty@QDeclarativeListModel@@QAEXHABVQString@@ABVQVariant@@@Z @ 1033 NONAME ; void QDeclarativeListModel::setProperty(int, class QString const &, class QVariant const &) + ?rootContext@QDeclarativeDebugRootContextQuery@@QBE?AVQDeclarativeDebugContextReference@@XZ @ 1034 NONAME ; class QDeclarativeDebugContextReference QDeclarativeDebugRootContextQuery::rootContext(void) const + ?contextForObject@QDeclarativeEngine@@SAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1035 NONAME ; class QDeclarativeContext * QDeclarativeEngine::contextForObject(class QObject const *) + ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQMetaProperty@@@Z @ 1036 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QMetaProperty const &) + ?isQObject@QDeclarativeMetaType@@SA_NH@Z @ 1037 NONAME ; bool QDeclarativeMetaType::isQObject(int) + ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 1038 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *) + ?getStaticMetaObject@QDeclarativeValueType@@SAABUQMetaObject@@XZ @ 1039 NONAME ; struct QMetaObject const & QDeclarativeValueType::getStaticMetaObject(void) + ?valueChanged@QDeclarativePropertyMap@@IAEXABVQString@@ABVQVariant@@@Z @ 1040 NONAME ; void QDeclarativePropertyMap::valueChanged(class QString const &, class QVariant const &) + ?staticMetaObject@QPacketProtocol@@2UQMetaObject@@B @ 1041 NONAME ; struct QMetaObject const QPacketProtocol::staticMetaObject + ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 1042 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *, int) + ??0QDeclarativeScriptString@@QAE@XZ @ 1043 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(void) + ?tr@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1044 NONAME ; class QString QListModelInterface::tr(char const *, char const *) + ?height@QDeclarativeItemPrivate@@UBEMXZ @ 1045 NONAME ; float QDeclarativeItemPrivate::height(void) const + ?qt_metacast@QDeclarativeDebugObjectQuery@@UAEPAXPBD@Z @ 1046 NONAME ; void * QDeclarativeDebugObjectQuery::qt_metacast(char const *) + ?type@QDeclarativeDomValue@@QBE?AW4Type@1@XZ @ 1047 NONAME ; enum QDeclarativeDomValue::Type QDeclarativeDomValue::type(void) const + ?staticMetacallFunction@QMetaObjectBuilder@@QBEP6AHW4Call@QMetaObject@@HPAPAX@ZXZ @ 1048 NONAME ; int (*)(enum QMetaObject::Call, int, void * *) QMetaObjectBuilder::staticMetacallFunction(void) const + ?setStyle@QDeclarativeText@@QAEXW4TextStyle@1@@Z @ 1049 NONAME ; void QDeclarativeText::setStyle(enum QDeclarativeText::TextStyle) + ?staticMetaObject@QDeclarativePropertyMap@@2UQMetaObject@@B @ 1050 NONAME ; struct QMetaObject const QDeclarativePropertyMap::staticMetaObject + ??_EQDeclarativeDebugEnginesQuery@@UAE@I@Z @ 1051 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(unsigned int) + ?enumeratorCount@QMetaObjectBuilder@@QBEHXZ @ 1052 NONAME ; int QMetaObjectBuilder::enumeratorCount(void) const + ?setConsistentTime@QDeclarativeItemPrivate@@SAX_J@Z @ 1053 NONAME ; void QDeclarativeItemPrivate::setConsistentTime(long long) + ?initializeEngine@QDeclarativeExtensionPlugin@@UAEXPAVQDeclarativeEngine@@PBD@Z @ 1054 NONAME ; void QDeclarativeExtensionPlugin::initializeEngine(class QDeclarativeEngine *, char const *) + ?metaObject@QDeclarativeDebugQuery@@UBEPBUQMetaObject@@XZ @ 1055 NONAME ; struct QMetaObject const * QDeclarativeDebugQuery::metaObject(void) const + ?rightMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1056 NONAME ; void QDeclarativeAnchors::rightMarginChanged(void) + ??_EQDeclarativePropertyValueInterceptor@@UAE@I@Z @ 1057 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(unsigned int) + ?linkActivated@QDeclarativeText@@IAEXABVQString@@@Z @ 1058 NONAME ; void QDeclarativeText::linkActivated(class QString const &) + ?canConvert@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1059 NONAME ; bool QDeclarativePropertyPrivate::canConvert(struct QMetaObject const *, struct QMetaObject const *) + ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 1060 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *, int) + ?toComponent@QDeclarativeDomObject@@QBE?AVQDeclarativeDomComponent@@XZ @ 1061 NONAME ; class QDeclarativeDomComponent QDeclarativeDomObject::toComponent(void) const + ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 1062 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *) + ?setLeft@QDeclarativeScaleGrid@@QAEXH@Z @ 1063 NONAME ; void QDeclarativeScaleGrid::setLeft(int) + ??1QDeclarativeGridScaledImage@@QAE@XZ @ 1064 NONAME ; QDeclarativeGridScaledImage::~QDeclarativeGridScaledImage(void) + ??0QDeclarativeGridScaledImage@@QAE@ABV0@@Z @ 1065 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QDeclarativeGridScaledImage const &) + ?column@QDeclarativeError@@QBEHXZ @ 1066 NONAME ; int QDeclarativeError::column(void) const + ?properties@QDeclarativeCustomParserNode@@QBE?AV?$QList@VQDeclarativeCustomParserProperty@@@@XZ @ 1067 NONAME ; class QList QDeclarativeCustomParserNode::properties(void) const + ?qt_metacast@QDeclarativeScaleGrid@@UAEPAXPBD@Z @ 1068 NONAME ; void * QDeclarativeScaleGrid::qt_metacast(char const *) + ??0QDeclarativeListReference@@QAE@XZ @ 1069 NONAME ; QDeclarativeListReference::QDeclarativeListReference(void) + ??1QDeclarativeDebugRootContextQuery@@UAE@XZ @ 1070 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(void) + ?name@QDeclarativeCustomParserNode@@QBE?AVQByteArray@@XZ @ 1071 NONAME ; class QByteArray QDeclarativeCustomParserNode::name(void) const + ?object@QDeclarativeDomValueValueInterceptor@@QBE?AVQDeclarativeDomObject@@XZ @ 1072 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueInterceptor::object(void) const + ??1QDeclarativePen@@UAE@XZ @ 1073 NONAME ; QDeclarativePen::~QDeclarativePen(void) + ?data@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQObject@@@@XZ @ 1074 NONAME ; class QDeclarativeListProperty QDeclarativeItemPrivate::data(void) + ?qt_metacall@QDeclarativeBinding@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1075 NONAME ; int QDeclarativeBinding::qt_metacall(enum QMetaObject::Call, int, void * *) + ??1QDeclarativeEngine@@UAE@XZ @ 1076 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(void) + ?debugId@QDeclarativeDebugContextReference@@QBEHXZ @ 1077 NONAME ; int QDeclarativeDebugContextReference::debugId(void) const + ?propertyNameParts@QDeclarativeDomProperty@@QBE?AV?$QList@VQByteArray@@@@XZ @ 1078 NONAME ; class QList QDeclarativeDomProperty::propertyNameParts(void) const + ?rootContext@QDeclarativeEngine@@QAEPAVQDeclarativeContext@@XZ @ 1079 NONAME ; class QDeclarativeContext * QDeclarativeEngine::rootContext(void) + ?resetWidth@QDeclarativeItemPrivate@@UAEXXZ @ 1080 NONAME ; void QDeclarativeItemPrivate::resetWidth(void) + ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@ABVQByteArray@@@Z @ 1081 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](class QByteArray const &) + ?bottom@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1082 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::bottom(void) const + ?device@QPacketProtocol@@QAEPAVQIODevice@@XZ @ 1083 NONAME ; class QIODevice * QPacketProtocol::device(void) + ?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1084 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *) + ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@HPA_N@Z @ 1085 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &, int, bool *) + ?metaObject@QDeclarativeComponent@@UBEPBUQMetaObject@@XZ @ 1086 NONAME ; struct QMetaObject const * QDeclarativeComponent::metaObject(void) const + ?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABV?$QList@VQDeclarativeError@@@@@Z @ 1087 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QList const &) + ?assignedValues@QDeclarativeCustomParserProperty@@QBE?AV?$QList@VQVariant@@@@XZ @ 1088 NONAME ; class QList QDeclarativeCustomParserProperty::assignedValues(void) const + ?setValue@QDeclarativeOpenMetaObject@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1089 NONAME ; void QDeclarativeOpenMetaObject::setValue(class QByteArray const &, class QVariant const &) + ?data@QDeclarativeListModel@@UBE?AVQVariant@@HH@Z @ 1090 NONAME ; class QVariant QDeclarativeListModel::data(int, int) const + ?setElideMode@QDeclarativeText@@QAEXW4TextElideMode@1@@Z @ 1091 NONAME ; void QDeclarativeText::setElideMode(enum QDeclarativeText::TextElideMode) + ?d_func@QDeclarativePropertyMap@@ABEPBVQDeclarativePropertyMapPrivate@@XZ @ 1092 NONAME ; class QDeclarativePropertyMapPrivate const * QDeclarativePropertyMap::d_func(void) const + ?consistentTime@QDeclarativeItemPrivate@@2_JA @ 1093 NONAME ; long long QDeclarativeItemPrivate::consistentTime + ?setWidth@QDeclarativeItem@@QAEXM@Z @ 1094 NONAME ; void QDeclarativeItem::setWidth(float) + ?contextObject@QDeclarativeContext@@QBEPAVQObject@@XZ @ 1095 NONAME ; class QObject * QDeclarativeContext::contextObject(void) const + ?qt_metacall@QDeclarativeDebugObjectQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1096 NONAME ; int QDeclarativeDebugObjectQuery::qt_metacall(enum QMetaObject::Call, int, void * *) + ??_EQDeclarativeOpenMetaObjectType@@UAE@I@Z @ 1097 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(unsigned int) + ?isWritable@QMetaPropertyBuilder@@QBE_NXZ @ 1098 NONAME ; bool QMetaPropertyBuilder::isWritable(void) const + ?sizeFFromString@QDeclarativeStringConverters@@YA?AVQSizeF@@ABVQString@@PA_N@Z @ 1099 NONAME ; class QSizeF QDeclarativeStringConverters::sizeFFromString(class QString const &, bool *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 1100 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeEngine *) + ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1101 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &) + ??0QDeclarativeDebugFileReference@@QAE@XZ @ 1102 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(void) + ?mapFromItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 1103 NONAME ; class QScriptValue QDeclarativeItem::mapFromItem(class QScriptValue const &, float, float) const + ?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 1104 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int) + ?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 1105 NONAME ; class QString QPacketProtocol::tr(char const *, char const *, int) + ?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 1106 NONAME ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const + ?metaObject@QDeclarativePixmapReply@@UBEPBUQMetaObject@@XZ @ 1107 NONAME ABSENT ; struct QMetaObject const * QDeclarativePixmapReply::metaObject(void) const + ?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 1108 NONAME ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &) + ?enabled@QDeclarativeBehavior@@QBE_NXZ @ 1109 NONAME ; bool QDeclarativeBehavior::enabled(void) const + ?initProperty@QDeclarativePropertyPrivate@@QAEXPAVQObject@@ABVQString@@@Z @ 1110 NONAME ; void QDeclarativePropertyPrivate::initProperty(class QObject *, class QString const &) + ?isEditable@QMetaPropertyBuilder@@QBE_NXZ @ 1111 NONAME ; bool QMetaPropertyBuilder::isEditable(void) const + ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContextData@@1@Z @ 1112 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContextData *, class QObject *) + ?expression@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 1113 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::expression(void) const + ??4QDeclarativeDomList@@QAEAAV0@ABV0@@Z @ 1114 NONAME ; class QDeclarativeDomList & QDeclarativeDomList::operator=(class QDeclarativeDomList const &) + ?qt_metacall@QDeclarativeComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1115 NONAME ; int QDeclarativeComponent::qt_metacall(enum QMetaObject::Call, int, void * *) + ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 1116 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *, int) + ?staticMetaObject@QDeclarativeEngine@@2UQMetaObject@@B @ 1117 NONAME ; struct QMetaObject const QDeclarativeEngine::staticMetaObject + ?staticMetaObject@QDeclarativeStateOperation@@2UQMetaObject@@B @ 1118 NONAME ; struct QMetaObject const QDeclarativeStateOperation::staticMetaObject + ?actions@QDeclarativeStateOperation@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1119 NONAME ; class QList QDeclarativeStateOperation::actions(void) + ?objectClassName@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1120 NONAME ; class QByteArray QDeclarativeDomObject::objectClassName(void) const + ??8QDeclarativeProperty@@QBE_NABV0@@Z @ 1121 NONAME ; bool QDeclarativeProperty::operator==(class QDeclarativeProperty const &) const + ??1QDeclarativeDomValue@@QAE@XZ @ 1122 NONAME ; QDeclarativeDomValue::~QDeclarativeDomValue(void) + ??_EQDeclarativePropertyMap@@UAE@I@Z @ 1123 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(unsigned int) + ?staticMetaObject@QDeclarativeDebugRootContextQuery@@2UQMetaObject@@B @ 1124 NONAME ; struct QMetaObject const QDeclarativeDebugRootContextQuery::staticMetaObject + ?noCreationReason@QDeclarativeType@@QBE?AVQString@@XZ @ 1125 NONAME ; class QString QDeclarativeType::noCreationReason(void) const + ?setUrl@QDeclarativeDebugFileReference@@QAEXABVQUrl@@@Z @ 1126 NONAME ; void QDeclarativeDebugFileReference::setUrl(class QUrl const &) + ??1QDeclarativeCustomParserProperty@@QAE@XZ @ 1127 NONAME ; QDeclarativeCustomParserProperty::~QDeclarativeCustomParserProperty(void) + ??1QPacketProtocol@@UAE@XZ @ 1128 NONAME ; QPacketProtocol::~QPacketProtocol(void) + ??1QDeclarativeAbstractBinding@@MAE@XZ @ 1129 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(void) + ?indexOfEnumerator@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1130 NONAME ; int QMetaObjectBuilder::indexOfEnumerator(class QByteArray const &) + ?qt_metacast@QDeclarativePen@@UAEPAXPBD@Z @ 1131 NONAME ; void * QDeclarativePen::qt_metacast(char const *) + ?leftMargin@QDeclarativeAnchors@@QBEMXZ @ 1132 NONAME ; float QDeclarativeAnchors::leftMargin(void) const + ??1QDeclarativeComponent@@UAE@XZ @ 1133 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(void) + ??1QDeclarativeItem@@UAE@XZ @ 1134 NONAME ; QDeclarativeItem::~QDeclarativeItem(void) + ?setEnabled@QDeclarativeAbstractBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1135 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool, class QFlags) + ?staticMetaObject@QListModelInterface@@2UQMetaObject@@B @ 1136 NONAME ; struct QMetaObject const QListModelInterface::staticMetaObject + ?d_func@QDeclarativeTransition@@ABEPBVQDeclarativeTransitionPrivate@@XZ @ 1137 NONAME ; class QDeclarativeTransitionPrivate const * QDeclarativeTransition::d_func(void) const + ?sourceFile@QDeclarativeExpression@@QBE?AVQString@@XZ @ 1138 NONAME ; class QString QDeclarativeExpression::sourceFile(void) const + ??_EQDeclarativeAnchors@@UAE@I@Z @ 1139 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(unsigned int) + ?removeNotifySignal@QMetaPropertyBuilder@@QAEXXZ @ 1140 NONAME ; void QMetaPropertyBuilder::removeNotifySignal(void) + ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 1141 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *) + ?setImportPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 1142 NONAME ; void QDeclarativeEngine::setImportPathList(class QStringList const &) + ?enabledChanged@QDeclarativeDebugService@@MAEX_N@Z @ 1143 NONAME ; void QDeclarativeDebugService::enabledChanged(bool) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1144 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QObject *) + ?asAST@Variant@QDeclarativeParser@@QBEPAVNode@AST@QDeclarativeJS@@XZ @ 1145 NONAME ; class QDeclarativeJS::AST::Node * QDeclarativeParser::Variant::asAST(void) const + ?indexOfClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1146 NONAME ; int QMetaObjectBuilder::indexOfClassInfo(class QByteArray const &) + ??0QDeclarativeDomImport@@QAE@ABV0@@Z @ 1147 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(class QDeclarativeDomImport const &) + ?width@QDeclarativePen@@QBEHXZ @ 1148 NONAME ; int QDeclarativePen::width(void) const + ?d_func@QDeclarativeStateGroup@@AAEPAVQDeclarativeStateGroupPrivate@@XZ @ 1149 NONAME ; class QDeclarativeStateGroupPrivate * QDeclarativeStateGroup::d_func(void) + ??6QDeclarativeInfo@@QAEAAV0@P6AAAVQTextStream@@AAV1@@Z@Z @ 1150 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStream & (*)(class QTextStream &)) + ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 1151 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *) + ?type@QDeclarativeOpenMetaObject@@QBEPAVQDeclarativeOpenMetaObjectType@@XZ @ 1152 NONAME ; class QDeclarativeOpenMetaObjectType * QDeclarativeOpenMetaObject::type(void) const + ?tr@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 1153 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *) + ??0QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 1154 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(void) + ??1QDeclarativeDebugPropertyWatch@@UAE@XZ @ 1155 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(void) + ?evaluate@QDeclarativeExpression@@QAE?AVQVariant@@PA_N@Z @ 1156 NONAME ; class QVariant QDeclarativeExpression::evaluate(bool *) + ?isDefaultProperty@QDeclarativeDomProperty@@QBE_NXZ @ 1157 NONAME ; bool QDeclarativeDomProperty::isDefaultProperty(void) const + ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1158 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QVariant const &) + ?metaObject@QDeclarativeRectangle@@UBEPBUQMetaObject@@XZ @ 1159 NONAME ; struct QMetaObject const * QDeclarativeRectangle::metaObject(void) const + ?forcedWidth@QDeclarativePixmapReply@@QBEHXZ @ 1160 NONAME ABSENT ; int QDeclarativePixmapReply::forcedWidth(void) const + ?removeRelatedMetaObject@QMetaObjectBuilder@@QAEXH@Z @ 1161 NONAME ; void QMetaObjectBuilder::removeRelatedMetaObject(int) + ??0QDeclarativeError@@QAE@XZ @ 1162 NONAME ; QDeclarativeError::QDeclarativeError(void) + ?object@QDeclarativeProperty@@QBEPAVQObject@@XZ @ 1163 NONAME ; class QObject * QDeclarativeProperty::object(void) const + ?stateGroup@QDeclarativeState@@QBEPAVQDeclarativeStateGroup@@XZ @ 1164 NONAME ; class QDeclarativeStateGroup * QDeclarativeState::stateGroup(void) const + ?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@H@Z @ 1165 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, int) const + ?focusChanged@QDeclarativeItemPrivate@@UAEX_N@Z @ 1166 NONAME ; void QDeclarativeItemPrivate::focusChanged(bool) + ?contextDebugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 1167 NONAME ; int QDeclarativeDebugObjectReference::contextDebugId(void) const + ?url@QDeclarativeDebugFileReference@@QBE?AVQUrl@@XZ @ 1168 NONAME ; class QUrl QDeclarativeDebugFileReference::url(void) const + ?paint@QDeclarativeRectangle@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1169 NONAME ; void QDeclarativeRectangle::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ??6QDeclarativeState@@QAEAAV0@PAVQDeclarativeStateOperation@@@Z @ 1170 NONAME ; class QDeclarativeState & QDeclarativeState::operator<<(class QDeclarativeStateOperation *) + ?destroy@QDeclarativeAbstractBinding@@UAEXXZ @ 1171 NONAME ; void QDeclarativeAbstractBinding::destroy(void) + ?qt_metacast@QDeclarativeDebugService@@UAEPAXPBD@Z @ 1172 NONAME ; void * QDeclarativeDebugService::qt_metacast(char const *) + ?qt_metacast@QDeclarativeValueType@@UAEPAXPBD@Z @ 1173 NONAME ; void * QDeclarativeValueType::qt_metacast(char const *) + ?childAt@QDeclarativeItem@@QBEPAV1@MM@Z @ 1174 NONAME ; class QDeclarativeItem * QDeclarativeItem::childAt(float, float) const + ?paintedWidth@QDeclarativeText@@QBEMXZ @ 1175 NONAME ; float QDeclarativeText::paintedWidth(void) const + ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1176 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *) + ?clip@QDeclarativeItem@@QBE_NXZ @ 1177 NONAME ; bool QDeclarativeItem::clip(void) const + ??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@PAVQObject@@@Z @ 1178 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QUrl const &, class QObject *) + ??0QDeclarativeValueTypeFactory@@QAE@XZ @ 1179 NONAME ; QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory(void) + ?literal@QDeclarativeDomValueLiteral@@QBE?AVQString@@XZ @ 1180 NONAME ; class QString QDeclarativeDomValueLiteral::literal(void) const + ??_EQDeclarativeEngineDebug@@UAE@I@Z @ 1181 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(unsigned int) + ?bottom@QDeclarativeScaleGrid@@QBEHXZ @ 1182 NONAME ; int QDeclarativeScaleGrid::bottom(void) const + ?d_func@QDeclarativePropertyMap@@AAEPAVQDeclarativePropertyMapPrivate@@XZ @ 1183 NONAME ; class QDeclarativePropertyMapPrivate * QDeclarativePropertyMap::d_func(void) + ?forceFocus@QDeclarativeItem@@QAEXXZ @ 1184 NONAME ; void QDeclarativeItem::forceFocus(void) + ?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1185 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *) + ??0QDeclarativeTransition@@QAE@PAVQObject@@@Z @ 1186 NONAME ; QDeclarativeTransition::QDeclarativeTransition(class QObject *) + ?horizontalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1187 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::horizontalCenter(void) const + ?setObjectOwnership@QDeclarativeEngine@@SAXPAVQObject@@W4ObjectOwnership@1@@Z @ 1188 NONAME ; void QDeclarativeEngine::setObjectOwnership(class QObject *, enum QDeclarativeEngine::ObjectOwnership) + ?tr@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 1189 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *, int) + ?metaCall@QDeclarativeOpenMetaObject@@MAEHW4Call@QMetaObject@@HPAPAX@Z @ 1190 NONAME ; int QDeclarativeOpenMetaObject::metaCall(enum QMetaObject::Call, int, void * *) + ??_EQDeclarativeText@@UAE@I@Z @ 1191 NONAME ; QDeclarativeText::~QDeclarativeText(unsigned int) + ?setLeftMargin@QDeclarativeAnchors@@QAEXM@Z @ 1192 NONAME ; void QDeclarativeAnchors::setLeftMargin(float) + ?metaObject@QDeclarativeStateGroup@@UBEPBUQMetaObject@@XZ @ 1193 NONAME ; struct QMetaObject const * QDeclarativeStateGroup::metaObject(void) const + ?expression@QDeclarativeAbstractBinding@@UBE?AVQString@@XZ @ 1194 NONAME ; class QString QDeclarativeAbstractBinding::expression(void) const + ??6QDeclarativeInfo@@QAEAAV0@N@Z @ 1195 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(double) + ?setAnimation@QDeclarativeBehavior@@QAEXPAVQDeclarativeAbstractAnimation@@@Z @ 1196 NONAME ; void QDeclarativeBehavior::setAnimation(class QDeclarativeAbstractAnimation *) + ?properties@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugPropertyReference@@@@XZ @ 1197 NONAME ; class QList QDeclarativeDebugObjectReference::properties(void) const + ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 1198 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *) + ?context@QDeclarativeExpression@@QBEPAVQDeclarativeContext@@XZ @ 1199 NONAME ; class QDeclarativeContext * QDeclarativeExpression::context(void) const + ?qt_metacast@QDeclarativeBehavior@@UAEPAXPBD@Z @ 1200 NONAME ; void * QDeclarativeBehavior::qt_metacast(char const *) + ?objectTypeMinorVersion@QDeclarativeDomObject@@QBEHXZ @ 1201 NONAME ; int QDeclarativeDomObject::objectTypeMinorVersion(void) const + ??0QDeclarativePropertyValueInterceptor@@QAE@XZ @ 1202 NONAME ; QDeclarativePropertyValueInterceptor::QDeclarativePropertyValueInterceptor(void) + ?isValid@QDeclarativeError@@QBE_NXZ @ 1203 NONAME ; bool QDeclarativeError::isValid(void) const + ??0QMetaMethodBuilder@@QAE@XZ @ 1204 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(void) + ?completed@QDeclarativeState@@IAEXXZ @ 1205 NONAME ; void QDeclarativeState::completed(void) + ?tr@QDeclarativePixmapReply@@SA?AVQString@@PBD0H@Z @ 1206 NONAME ABSENT ; class QString QDeclarativePixmapReply::tr(char const *, char const *, int) + ?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 1207 NONAME ; void QDeclarativeRectangle::radiusChanged(void) + ?getStaticMetaObject@QDeclarativeExpression@@SAABUQMetaObject@@XZ @ 1208 NONAME ; struct QMetaObject const & QDeclarativeExpression::getStaticMetaObject(void) + ?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1209 NONAME ; int QDeclarativeGridScaledImage::gridLeft(void) const + ?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 1210 NONAME ; void QMetaPropertyBuilder::setWritable(bool) + ?qt_metacast@QDeclarativeStateGroup@@UAEPAXPBD@Z @ 1211 NONAME ; void * QDeclarativeStateGroup::qt_metacast(char const *) + ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PAVQObject@@@Z @ 1212 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(class QObject *) + ?qt_metacast@QDeclarativeEngineDebug@@UAEPAXPBD@Z @ 1213 NONAME ; void * QDeclarativeEngineDebug::qt_metacast(char const *) + ?staticMetaObject@QDeclarativeExpression@@2UQMetaObject@@B @ 1214 NONAME ; struct QMetaObject const QDeclarativeExpression::staticMetaObject + ?statusChanged@QDeclarativeComponent@@IAEXW4Status@1@@Z @ 1215 NONAME ; void QDeclarativeComponent::statusChanged(enum QDeclarativeComponent::Status) + ?setTarget@QDeclarativeBinding@@QAEXABVQDeclarativeProperty@@@Z @ 1216 NONAME ; void QDeclarativeBinding::setTarget(class QDeclarativeProperty const &) + ?imageProvider@QDeclarativeEngine@@QBEPAVQDeclarativeImageProvider@@ABVQString@@@Z @ 1217 NONAME ; class QDeclarativeImageProvider * QDeclarativeEngine::imageProvider(class QString const &) const + ?packetsAvailable@QPacketProtocol@@QBE_JXZ @ 1218 NONAME ; long long QPacketProtocol::packetsAvailable(void) const + ?state@QDeclarativeDebugWatch@@QBE?AW4State@1@XZ @ 1219 NONAME ; enum QDeclarativeDebugWatch::State QDeclarativeDebugWatch::state(void) const + ?attachedPropertiesFuncById@QDeclarativeMetaType@@SAP6APAVQObject@@PAV2@@ZH@Z @ 1220 NONAME ; class QObject * (*)(class QObject *) QDeclarativeMetaType::attachedPropertiesFuncById(int) + ?resetBaseline@QDeclarativeAnchors@@QAEXXZ @ 1221 NONAME ; void QDeclarativeAnchors::resetBaseline(void) + ?name@QDeclarativeDebugClient@@QBE?AVQString@@XZ @ 1222 NONAME ; class QString QDeclarativeDebugClient::name(void) const + ?propertyValueInterceptorCast@QDeclarativeType@@QBEHXZ @ 1223 NONAME ; int QDeclarativeType::propertyValueInterceptorCast(void) const + ?setData@QDeclarativeComponent@@QAEXABVQByteArray@@ABVQUrl@@@Z @ 1224 NONAME ; void QDeclarativeComponent::setData(class QByteArray const &, class QUrl const &) + ??4QDeclarativeDomValue@@QAEAAV0@ABV0@@Z @ 1225 NONAME ; class QDeclarativeDomValue & QDeclarativeDomValue::operator=(class QDeclarativeDomValue const &) + ?toString@QDeclarativeListModel@@UBE?AVQString@@H@Z @ 1226 NONAME ; class QString QDeclarativeListModel::toString(int) const + ?resetWidth@QDeclarativeItem@@QAEXXZ @ 1227 NONAME ; void QDeclarativeItem::resetWidth(void) + ??0QDeclarativeProperty@@QAE@ABV0@@Z @ 1228 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QDeclarativeProperty const &) + ?text@QDeclarativeText@@QBE?AVQString@@XZ @ 1229 NONAME ; class QString QDeclarativeText::text(void) const + ??1QDeclarativeDebugObjectQuery@@UAE@XZ @ 1230 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(void) + ?count@QDeclarativeOpenMetaObject@@QBEHXZ @ 1231 NONAME ; int QDeclarativeOpenMetaObject::count(void) const + ?isFlag@QMetaEnumBuilder@@QBE_NXZ @ 1232 NONAME ; bool QMetaEnumBuilder::isFlag(void) const + ?bindingIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1233 NONAME ; int QDeclarativePropertyPrivate::bindingIndex(class QDeclarativeProperty const &) + ??0QDeclarativeDomValueBinding@@QAE@ABV0@@Z @ 1234 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(class QDeclarativeDomValueBinding const &) + ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 1235 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *) + ?classInfoName@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 1236 NONAME ; class QByteArray QMetaObjectBuilder::classInfoName(int) const + ?metaObject@QDeclarativeDebugObjectQuery@@UBEPBUQMetaObject@@XZ @ 1237 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectQuery::metaObject(void) const + ??4QDeclarativeDomDynamicProperty@@QAEAAV0@ABV0@@Z @ 1238 NONAME ; class QDeclarativeDomDynamicProperty & QDeclarativeDomDynamicProperty::operator=(class QDeclarativeDomDynamicProperty const &) + ??_EQDeclarativeDebugEngineReference@@QAE@I@Z @ 1239 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(unsigned int) + ?usedAnchors@QDeclarativeAnchors@@QBE?AV?$QFlags@W4Anchor@QDeclarativeAnchors@@@@XZ @ 1240 NONAME ; class QFlags QDeclarativeAnchors::usedAnchors(void) const + ?baseline@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1241 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::baseline(void) const + ?clear@QDeclarativeListModel@@QAEXXZ @ 1242 NONAME ; void QDeclarativeListModel::clear(void) + ??0QDeclarativeDebugObjectExpressionWatch@@QAE@PAVQObject@@@Z @ 1243 NONAME ; QDeclarativeDebugObjectExpressionWatch::QDeclarativeDebugObjectExpressionWatch(class QObject *) + ??4QDeclarativeDomProperty@@QAEAAV0@ABV0@@Z @ 1244 NONAME ; class QDeclarativeDomProperty & QDeclarativeDomProperty::operator=(class QDeclarativeDomProperty const &) + ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1245 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &) + ?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 1246 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *) + ?borderChanged@QDeclarativeScaleGrid@@IAEXXZ @ 1247 NONAME ; void QDeclarativeScaleGrid::borderChanged(void) + ??1QDeclarativeRectangle@@UAE@XZ @ 1248 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(void) + ?count@QDeclarativePropertyMap@@QBEHXZ @ 1249 NONAME ; int QDeclarativePropertyMap::count(void) const + ?setReturnType@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1250 NONAME ; void QMetaMethodBuilder::setReturnType(class QByteArray const &) + ??0QDeclarativePropertyValueSource@@QAE@XZ @ 1251 NONAME ; QDeclarativePropertyValueSource::QDeclarativePropertyValueSource(void) + ?tr@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 1252 NONAME ; class QString QDeclarativePen::tr(char const *, char const *, int) + ?toLiteral@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueLiteral@@XZ @ 1253 NONAME ; class QDeclarativeDomValueLiteral QDeclarativeDomValue::toLiteral(void) const + ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@_N@Z @ 1254 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, bool) + ?url@QDeclarativeComponent@@QBE?AVQUrl@@XZ @ 1255 NONAME ; class QUrl QDeclarativeComponent::url(void) const + ?componentComplete@QDeclarativeStateGroup@@UAEXXZ @ 1256 NONAME ; void QDeclarativeStateGroup::componentComplete(void) + ?setMargins@QDeclarativeAnchors@@QAEXM@Z @ 1257 NONAME ; void QDeclarativeAnchors::setMargins(float) + ?qt_metacall@QDeclarativeView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1258 NONAME ; int QDeclarativeView::qt_metacall(enum QMetaObject::Call, int, void * *) + ?state@QDeclarativeStateGroup@@QBE?AVQString@@XZ @ 1259 NONAME ; class QString QDeclarativeStateGroup::state(void) const + ??0QDeclarativeDomComponent@@QAE@ABV0@@Z @ 1260 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(class QDeclarativeDomComponent const &) + ?queryAvailableEngines@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugEnginesQuery@@PAVQObject@@@Z @ 1261 NONAME ; class QDeclarativeDebugEnginesQuery * QDeclarativeEngineDebug::queryAvailableEngines(class QObject *) + ??_EQDeclarativeItemPrivate@@UAE@I@Z @ 1262 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(unsigned int) + ?expression@QDeclarativeBinding@@UBE?AVQString@@XZ @ 1263 NONAME ; class QString QDeclarativeBinding::expression(void) const + ?position@QDeclarativeDomProperty@@QBEHXZ @ 1264 NONAME ; int QDeclarativeDomProperty::position(void) const + ?registerValueTypes@QDeclarativeValueTypeFactory@@SAXXZ @ 1265 NONAME ; void QDeclarativeValueTypeFactory::registerValueTypes(void) + ?dynamicProperties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomDynamicProperty@@@@XZ @ 1266 NONAME ; class QList QDeclarativeDomObject::dynamicProperties(void) const + ?attachedPropertiesFunction@QDeclarativeType@@QBEP6APAVQObject@@PAV2@@ZXZ @ 1267 NONAME ; class QObject * (*)(class QObject *) QDeclarativeType::attachedPropertiesFunction(void) const + ??1QDeclarativePropertyMap@@UAE@XZ @ 1268 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(void) + ??_EQDeclarativeExtensionInterface@@UAE@I@Z @ 1269 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(unsigned int) + ??0Variant@QDeclarativeParser@@QAE@NABVQString@@@Z @ 1270 NONAME ; QDeclarativeParser::Variant::Variant(double, class QString const &) + ??6QDeclarativeInfo@@QAEAAV0@VQBool@@@Z @ 1271 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QBool) + ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@PAVQObject@@HHPAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1272 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QObject *, int, int, class QDeclarativeAbstractBinding *, class QFlags) + ?qt_metacast@QDeclarativeDebugExpressionQuery@@UAEPAXPBD@Z @ 1273 NONAME ; void * QDeclarativeDebugExpressionQuery::qt_metacast(char const *) + ?contextProperty@QDeclarativeContext@@QBE?AVQVariant@@ABVQString@@@Z @ 1274 NONAME ; class QVariant QDeclarativeContext::contextProperty(class QString const &) const + ?verticalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1275 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::verticalCenter(void) const + ?metaObject@QDeclarativeScaleGrid@@UBEPBUQMetaObject@@XZ @ 1276 NONAME ; struct QMetaObject const * QDeclarativeScaleGrid::metaObject(void) const + ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0H@Z @ 1277 NONAME ABSENT ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *, int) + ?qmlContext@@YAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1278 NONAME ; class QDeclarativeContext * qmlContext(class QObject const *) + ?transform_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 1279 NONAME ; int QDeclarativeItemPrivate::transform_count(class QDeclarativeListProperty *) + ?tr@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 1280 NONAME ; class QString QListModelInterface::tr(char const *, char const *, int) + ??1QDeclarativeDebugFileReference@@QAE@XZ @ 1281 NONAME ; QDeclarativeDebugFileReference::~QDeclarativeDebugFileReference(void) + ?style@QDeclarativeText@@QBE?AW4TextStyle@1@XZ @ 1282 NONAME ; enum QDeclarativeText::TextStyle QDeclarativeText::style(void) const + ??0QDeclarativeAbstractBinding@@QAE@XZ @ 1283 NONAME ; QDeclarativeAbstractBinding::QDeclarativeAbstractBinding(void) + ?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 1284 NONAME ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject + ?cancel@QDeclarativePixmapCache@@SAXABVQUrl@@PAVQObject@@@Z @ 1285 NONAME ABSENT ; void QDeclarativePixmapCache::cancel(class QUrl const &, class QObject *) + ?isError@QDeclarativeComponent@@QBE_NXZ @ 1286 NONAME ; bool QDeclarativeComponent::isError(void) const + ?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1287 NONAME ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *) + ?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 1288 NONAME ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const + ??1QDeclarativeDebugConnection@@UAE@XZ @ 1289 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(void) + ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@H@Z @ 1290 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(int) const + ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 1291 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *, int) + ?setFromState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 1292 NONAME ; void QDeclarativeTransition::setFromState(class QString const &) + ?metaObject@QDeclarativeDebugService@@UBEPBUQMetaObject@@XZ @ 1293 NONAME ; struct QMetaObject const * QDeclarativeDebugService::metaObject(void) const + ?state@QDeclarativeDebugQuery@@QBE?AW4State@1@XZ @ 1294 NONAME ; enum QDeclarativeDebugQuery::State QDeclarativeDebugQuery::state(void) const + ?setBottom@QDeclarativeScaleGrid@@QAEXH@Z @ 1295 NONAME ; void QDeclarativeScaleGrid::setBottom(int) + ?topMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1296 NONAME ; void QDeclarativeAnchors::topMarginChanged(void) + ?itemChange@QDeclarativeItem@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1297 NONAME ; class QVariant QDeclarativeItem::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &) + ?position@QDeclarativeDomObject@@QBEHXZ @ 1298 NONAME ; int QDeclarativeDomObject::position(void) const + ?update@QDeclarativeBinding@@UAEXV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1299 NONAME ; void QDeclarativeBinding::update(class QFlags) + ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 1300 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *) + ?isDebuggingEnabled@QDeclarativeDebugService@@SA_NXZ @ 1301 NONAME ; bool QDeclarativeDebugService::isDebuggingEnabled(void) + ?tr@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 1302 NONAME ; class QString QDeclarativeText::tr(char const *, char const *, int) + ?reset@QDeclarativeProperty@@QBE_NXZ @ 1303 NONAME ; bool QDeclarativeProperty::reset(void) const + ?objectDebugId@QDeclarativeDebugWatch@@QBEHXZ @ 1304 NONAME ; int QDeclarativeDebugWatch::objectDebugId(void) const + ?width@QDeclarativeItemPrivate@@UBEMXZ @ 1305 NONAME ; float QDeclarativeItemPrivate::width(void) const + ?d_func@QMetaMethodBuilder@@ABEPAVQMetaMethodBuilderPrivate@@XZ @ 1306 NONAME ; class QMetaMethodBuilderPrivate * QMetaMethodBuilder::d_func(void) const + ?isScript@Variant@QDeclarativeParser@@QBE_NXZ @ 1307 NONAME ; bool QDeclarativeParser::Variant::isScript(void) const + ?classBegin@QDeclarativeStateGroup@@UAEXXZ @ 1308 NONAME ; void QDeclarativeStateGroup::classBegin(void) + ?qt_metacast@QDeclarativeRectangle@@UAEPAXPBD@Z @ 1309 NONAME ; void * QDeclarativeRectangle::qt_metacast(char const *) + ?qt_metacast@QDeclarativeExpression@@UAEPAXPBD@Z @ 1310 NONAME ; void * QDeclarativeExpression::qt_metacast(char const *) + ?indexOfProperty@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1311 NONAME ; int QMetaObjectBuilder::indexOfProperty(class QByteArray const &) + ?vAlign@QDeclarativeText@@QBE?AW4VAlignment@1@XZ @ 1312 NONAME ; enum QDeclarativeText::VAlignment QDeclarativeText::vAlign(void) const + ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQByteArray@@@Z @ 1313 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QByteArray const &) + ??1QDeclarativeError@@QAE@XZ @ 1314 NONAME ; QDeclarativeError::~QDeclarativeError(void) + ?property@QDeclarativeProperty@@QBE?AVQMetaProperty@@XZ @ 1315 NONAME ; class QMetaProperty QDeclarativeProperty::property(void) const + ?tr@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 1316 NONAME ; class QString QDeclarativeText::tr(char const *, char const *) + ?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeContext@@@Z @ 1317 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeContext *) + ??0QDeclarativeGridScaledImage@@QAE@XZ @ 1318 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(void) + ?setText@QDeclarativeText@@QAEXABVQString@@@Z @ 1319 NONAME ; void QDeclarativeText::setText(class QString const &) + ?setBaseline@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1320 NONAME ; void QDeclarativeAnchors::setBaseline(class QDeclarativeAnchorLine const &) + ?resetCenterIn@QDeclarativeAnchors@@QAEXXZ @ 1321 NONAME ; void QDeclarativeAnchors::resetCenterIn(void) + ?pixmapUrl@QDeclarativeGridScaledImage@@QBE?AVQString@@XZ @ 1322 NONAME ; class QString QDeclarativeGridScaledImage::pixmapUrl(void) const + ?name@QDeclarativeOpenMetaObject@@QBE?AVQByteArray@@H@Z @ 1323 NONAME ; class QByteArray QDeclarativeOpenMetaObject::name(int) const + ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 1324 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *) + ?getStaticMetaObject@QDeclarativeAnchors@@SAABUQMetaObject@@XZ @ 1325 NONAME ; struct QMetaObject const & QDeclarativeAnchors::getStaticMetaObject(void) + ?qt_metacall@QDeclarativeEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1326 NONAME ; int QDeclarativeEngine::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@@Z @ 1327 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &) + ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 1328 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *) + ?setStaticMetacallFunction@QMetaObjectBuilder@@QAEXP6AHW4Call@QMetaObject@@HPAPAX@Z@Z @ 1329 NONAME ; void QMetaObjectBuilder::setStaticMetacallFunction(int (*)(enum QMetaObject::Call, int, void * *)) + ?properties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomProperty@@@@XZ @ 1330 NONAME ; class QList QDeclarativeDomObject::properties(void) const + ??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 1331 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *) + ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 1332 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *, int) + ?dateTimeFromString@QDeclarativeStringConverters@@YA?AVQDateTime@@ABVQString@@PA_N@Z @ 1333 NONAME ; class QDateTime QDeclarativeStringConverters::dateTimeFromString(class QString const &, bool *) + ?implicitWidth@QDeclarativeItem@@QBEMXZ @ 1334 NONAME ; float QDeclarativeItem::implicitWidth(void) const + ?metaObject@QDeclarativeContext@@UBEPBUQMetaObject@@XZ @ 1335 NONAME ; struct QMetaObject const * QDeclarativeContext::metaObject(void) const + ??0QDeclarativeContext@@AAE@PAVQDeclarativeContextData@@@Z @ 1336 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContextData *) + ?maximumPacketSize@QPacketProtocol@@QBEHXZ @ 1337 NONAME ; int QPacketProtocol::maximumPacketSize(void) const + ??_EQDeclarativeDebuggerStatus@@UAE@I@Z @ 1338 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(unsigned int) + ?error@QDeclarativeCustomParser@@IAEXABVQString@@@Z @ 1339 NONAME ; void QDeclarativeCustomParser::error(class QString const &) + ?messageReceived@QDeclarativeDebugService@@MAEXABVQByteArray@@@Z @ 1340 NONAME ; void QDeclarativeDebugService::messageReceived(class QByteArray const &) + ??0QDeclarativeParserStatus@@QAE@XZ @ 1341 NONAME ; QDeclarativeParserStatus::QDeclarativeParserStatus(void) + ?isNumber@Variant@QDeclarativeParser@@QBE_NXZ @ 1342 NONAME ; bool QDeclarativeParser::Variant::isNumber(void) const + ?getStaticMetaObject@QDeclarativeEngineDebug@@SAABUQMetaObject@@XZ @ 1343 NONAME ; struct QMetaObject const & QDeclarativeEngineDebug::getStaticMetaObject(void) + ??_EQDeclarativeEngine@@UAE@I@Z @ 1344 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(unsigned int) + ??1QDeclarativeCustomParserNode@@QAE@XZ @ 1345 NONAME ; QDeclarativeCustomParserNode::~QDeclarativeCustomParserNode(void) + ??1QDeclarativeAction@@QAE@XZ @ 1346 NONAME ; QDeclarativeAction::~QDeclarativeAction(void) + ?resourcesLoading@QDeclarativeText@@QBEHXZ @ 1347 NONAME ; int QDeclarativeText::resourcesLoading(void) const + ?isBoolean@Variant@QDeclarativeParser@@QBE_NXZ @ 1348 NONAME ; bool QDeclarativeParser::Variant::isBoolean(void) const + ??0QDeclarativeAction@@QAE@XZ @ 1349 NONAME ; QDeclarativeAction::QDeclarativeAction(void) + ?signalOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 1350 NONAME ; int QDeclarativeOpenMetaObjectType::signalOffset(void) const + ?index@QMetaEnumBuilder@@QBEHXZ @ 1351 NONAME ; int QMetaEnumBuilder::index(void) const + ?setResettable@QMetaPropertyBuilder@@QAEX_N@Z @ 1352 NONAME ; void QMetaPropertyBuilder::setResettable(bool) + ??0QDeclarativeError@@QAE@ABV0@@Z @ 1353 NONAME ; QDeclarativeError::QDeclarativeError(class QDeclarativeError const &) + ?classInfoCount@QMetaObjectBuilder@@QBEHXZ @ 1354 NONAME ; int QMetaObjectBuilder::classInfoCount(void) const + ?isObject@QDeclarativeDomValue@@QBE_NXZ @ 1355 NONAME ; bool QDeclarativeDomValue::isObject(void) const + ?left@QDeclarativeScaleGrid@@QBEHXZ @ 1356 NONAME ; int QDeclarativeScaleGrid::left(void) const + ?qt_metacast@QDeclarativeDebugEnginesQuery@@UAEPAXPBD@Z @ 1357 NONAME ; void * QDeclarativeDebugEnginesQuery::qt_metacast(char const *) + ?d_func@QDeclarativeView@@AAEPAVQDeclarativeViewPrivate@@XZ @ 1358 NONAME ; class QDeclarativeViewPrivate * QDeclarativeView::d_func(void) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugPropertyWatch@@ABVQDeclarativeDebugPropertyReference@@PAVQObject@@@Z @ 1359 NONAME ; class QDeclarativeDebugPropertyWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugPropertyReference const &, class QObject *) + ?stateChanged@QDeclarativeStateGroup@@IAEXABVQString@@@Z @ 1360 NONAME ; void QDeclarativeStateGroup::stateChanged(class QString const &) + ?customStringConverter@QDeclarativeMetaType@@SAP6A?AVQVariant@@ABVQString@@@ZH@Z @ 1361 NONAME ; class QVariant (*)(class QString const &) QDeclarativeMetaType::customStringConverter(int) + ??0QDeclarativeDomValueValueSource@@QAE@XZ @ 1362 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(void) + ?baselineOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 1363 NONAME ; void QDeclarativeAnchors::baselineOffsetChanged(void) + ?tr@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 1364 NONAME ; class QString QDeclarativeView::tr(char const *, char const *, int) + ??4QDeclarativeDebugFileReference@@QAEAAV0@ABV0@@Z @ 1365 NONAME ; class QDeclarativeDebugFileReference & QDeclarativeDebugFileReference::operator=(class QDeclarativeDebugFileReference const &) + ?eventFilter@QDeclarativeView@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 1366 NONAME ; bool QDeclarativeView::eventFilter(class QObject *, class QEvent *) + ??1QDeclarativeView@@UAE@XZ @ 1367 NONAME ; QDeclarativeView::~QDeclarativeView(void) + ?verticalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1368 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::verticalCenter(void) const + ?setIsFlag@QMetaEnumBuilder@@QAEX_N@Z @ 1369 NONAME ; void QMetaEnumBuilder::setIsFlag(bool) + ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 1370 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *, int) + ?majorVersion@QDeclarativeType@@QBEHXZ @ 1371 NONAME ; int QDeclarativeType::majorVersion(void) const + ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 1372 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *) + ?baseUrl@QDeclarativeEngine@@QBE?AVQUrl@@XZ @ 1373 NONAME ; class QUrl QDeclarativeEngine::baseUrl(void) const + ??6QDeclarativeInfo@@QAEAAV0@PBX@Z @ 1374 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(void const *) + ?setTop@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1375 NONAME ; void QDeclarativeAnchors::setTop(class QDeclarativeAnchorLine const &) + ?setEnabled@QDeclarativeBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1376 NONAME ; void QDeclarativeBinding::setEnabled(bool, class QFlags) + ??_EQDeclarativeNetworkAccessManagerFactory@@UAE@I@Z @ 1377 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(unsigned int) + ?qmlTypes@QDeclarativeMetaType@@SA?AV?$QList@PAVQDeclarativeType@@@@XZ @ 1378 NONAME ; class QList QDeclarativeMetaType::qmlTypes(void) + ?valueTypeCoreIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1379 NONAME ; int QDeclarativePropertyPrivate::valueTypeCoreIndex(class QDeclarativeProperty const &) + ?writeEnumProperty@QDeclarativePropertyPrivate@@SA_NABVQMetaProperty@@HPAVQObject@@ABVQVariant@@H@Z @ 1380 NONAME ; bool QDeclarativePropertyPrivate::writeEnumProperty(class QMetaProperty const &, int, class QObject *, class QVariant const &, int) + ?setEnabled@QDeclarativeDebugClient@@QAEX_N@Z @ 1381 NONAME ; void QDeclarativeDebugClient::setEnabled(bool) + ??1QMetaObjectBuilder@@UAE@XZ @ 1382 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(void) + ?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 1383 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *) + ?clear@QPacket@@QAEXXZ @ 1384 NONAME ; void QPacket::clear(void) + ?getStaticMetaObject@QDeclarativeDebugClient@@SAABUQMetaObject@@XZ @ 1385 NONAME ; struct QMetaObject const & QDeclarativeDebugClient::getStaticMetaObject(void) + ??0QDeclarativeDomList@@QAE@ABV0@@Z @ 1386 NONAME ; QDeclarativeDomList::QDeclarativeDomList(class QDeclarativeDomList const &) + ?gridTop@QDeclarativeGridScaledImage@@QBEHXZ @ 1387 NONAME ; int QDeclarativeGridScaledImage::gridTop(void) const + ?setUrl@QDeclarativeError@@QAEXABVQUrl@@@Z @ 1388 NONAME ; void QDeclarativeError::setUrl(class QUrl const &) + ?setMaximumPacketSize@QPacketProtocol@@QAEHH@Z @ 1389 NONAME ; int QPacketProtocol::setMaximumPacketSize(int) + ??_EQDeclarativeAction@@QAE@I@Z @ 1390 NONAME ; QDeclarativeAction::~QDeclarativeAction(unsigned int) + ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 1391 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *) + ?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@@Z @ 1392 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &) + ?widthValid@QDeclarativeItem@@IBE_NXZ @ 1393 NONAME ; bool QDeclarativeItem::widthValid(void) const + ?staticMetaObject@QDeclarativeState@@2UQMetaObject@@B @ 1394 NONAME ; struct QMetaObject const QDeclarativeState::staticMetaObject + ?setAccess@QMetaMethodBuilder@@QAEXW4Access@QMetaMethod@@@Z @ 1395 NONAME ; void QMetaMethodBuilder::setAccess(enum QMetaMethod::Access) + ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@ABVQVariant@@@Z @ 1396 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QDeclarativeContext *, class QVariant const &) + ?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 1397 NONAME ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject + ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 1398 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *) + ?d_func@QDeclarativeExpression@@ABEPBVQDeclarativeExpressionPrivate@@XZ @ 1399 NONAME ; class QDeclarativeExpressionPrivate const * QDeclarativeExpression::d_func(void) const + ??1QDeclarativeValueType@@UAE@XZ @ 1400 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(void) + ?setBaseUrl@QDeclarativeContext@@QAEXABVQUrl@@@Z @ 1401 NONAME ; void QDeclarativeContext::setBaseUrl(class QUrl const &) + ??_EQDeclarativeAbstractBinding@@UAE@I@Z @ 1402 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(unsigned int) + ?queryExpressionResult@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@PAVQObject@@@Z @ 1403 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::queryExpressionResult(int, class QString const &, class QObject *) + ?indexOfMethod@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1404 NONAME ; int QMetaObjectBuilder::indexOfMethod(class QByteArray const &) + ?setCached@QDeclarativeOpenMetaObject@@QAEX_N@Z @ 1405 NONAME ; void QDeclarativeOpenMetaObject::setCached(bool) + ?length@QDeclarativeDomList@@QBEHXZ @ 1406 NONAME ; int QDeclarativeDomList::length(void) const + ?horizontalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 1407 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::horizontalTileRule(void) const + ??0QDeclarativeCustomParserProperty@@QAE@XZ @ 1408 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(void) + ??1QDeclarativeEngineDebug@@UAE@XZ @ 1409 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(void) + ?qt_metacall@QDeclarativeEngineDebug@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1410 NONAME ; int QDeclarativeEngineDebug::qt_metacall(enum QMetaObject::Call, int, void * *) + ?q_func@QDeclarativeItemPrivate@@ABEPBVQDeclarativeItem@@XZ @ 1411 NONAME ; class QDeclarativeItem const * QDeclarativeItemPrivate::q_func(void) const + ?customParser@QDeclarativeType@@QBEPAVQDeclarativeCustomParser@@XZ @ 1412 NONAME ; class QDeclarativeCustomParser * QDeclarativeType::customParser(void) const + ?setSourceLocation@QDeclarativeExpression@@QAEXABVQString@@H@Z @ 1413 NONAME ; void QDeclarativeExpression::setSourceLocation(class QString const &, int) + ?equal@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1414 NONAME ; bool QDeclarativePropertyPrivate::equal(struct QMetaObject const *, struct QMetaObject const *) + ??_EQDeclarativeExtensionPlugin@@UAE@I@Z @ 1415 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(unsigned int) + ?write@QDeclarativePropertyPrivate@@SA_NPAVQObject@@ABUData@QDeclarativePropertyCache@@ABVQVariant@@PAVQDeclarativeContextData@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1416 NONAME ; bool QDeclarativePropertyPrivate::write(class QObject *, struct QDeclarativePropertyCache::Data const &, class QVariant const &, class QDeclarativeContextData *, class QFlags) + ?debugId@QDeclarativeDebugEngineReference@@QBEHXZ @ 1417 NONAME ; int QDeclarativeDebugEngineReference::debugId(void) const + ?metaObject@QDeclarativeDebugEnginesQuery@@UBEPBUQMetaObject@@XZ @ 1418 NONAME ; struct QMetaObject const * QDeclarativeDebugEnginesQuery::metaObject(void) const + ??_EQDeclarativeScaleGrid@@UAE@I@Z @ 1419 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(unsigned int) + ??1QDeclarativeDebugPropertyReference@@QAE@XZ @ 1420 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(void) + ?componentComplete@QDeclarativeAnchors@@QAEXXZ @ 1421 NONAME ; void QDeclarativeAnchors::componentComplete(void) + ??1QDeclarativeDomObject@@QAE@XZ @ 1422 NONAME ; QDeclarativeDomObject::~QDeclarativeDomObject(void) + ?expression@QDeclarativeDebugObjectExpressionWatch@@QBE?AVQString@@XZ @ 1423 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::expression(void) const + ?metaObject@QListModelInterface@@UBEPBUQMetaObject@@XZ @ 1424 NONAME ; struct QMetaObject const * QListModelInterface::metaObject(void) const + ?key@QMetaEnumBuilder@@QBE?AVQByteArray@@H@Z @ 1425 NONAME ; class QByteArray QMetaEnumBuilder::key(int) const + ?d_func@QMetaEnumBuilder@@ABEPAVQMetaEnumBuilderPrivate@@XZ @ 1426 NONAME ; class QMetaEnumBuilderPrivate * QMetaEnumBuilder::d_func(void) const + ??6QDeclarativeInfo@@QAEAAV0@PBD@Z @ 1427 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char const *) + ?d_func@QDeclarativeState@@AAEPAVQDeclarativeStatePrivate@@XZ @ 1428 NONAME ; class QDeclarativeStatePrivate * QDeclarativeState::d_func(void) + ??0QDeclarativeDebugEnginesQuery@@AAE@PAVQObject@@@Z @ 1429 NONAME ; QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(class QObject *) + ?bottomChanged@QDeclarativeAnchors@@IAEXXZ @ 1430 NONAME ; void QDeclarativeAnchors::bottomChanged(void) + ?qListTypeId@QDeclarativeType@@QBEHXZ @ 1431 NONAME ; int QDeclarativeType::qListTypeId(void) const + ?setSelectedState@QDeclarativeDebuggerStatus@@UAEX_N@Z @ 1432 NONAME ; void QDeclarativeDebuggerStatus::setSelectedState(bool) + ?staticMetaObject@QDeclarativeEngineDebug@@2UQMetaObject@@B @ 1433 NONAME ; struct QMetaObject const QDeclarativeEngineDebug::staticMetaObject + ?setExtends@QDeclarativeState@@QAEXABVQString@@@Z @ 1434 NONAME ; void QDeclarativeState::setExtends(class QString const &) + ??4QDeclarativeError@@QAEAAV0@ABV0@@Z @ 1435 NONAME ; class QDeclarativeError & QDeclarativeError::operator=(class QDeclarativeError const &) + ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 1436 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *, int) + ?d_func@QDeclarativeTransition@@AAEPAVQDeclarativeTransitionPrivate@@XZ @ 1437 NONAME ; class QDeclarativeTransitionPrivate * QDeclarativeTransition::d_func(void) + ?propertyWritten@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1438 NONAME ; void QDeclarativeOpenMetaObject::propertyWritten(int) + ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1439 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *) + ?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 1440 NONAME ; void QDeclarativeDebugFileReference::setColumnNumber(int) + ?drawRect@QDeclarativeRectangle@@AAEXAAVQPainter@@@Z @ 1441 NONAME ; void QDeclarativeRectangle::drawRect(class QPainter &) + ?read@QDeclarativeProperty@@QBE?AVQVariant@@XZ @ 1442 NONAME ; class QVariant QDeclarativeProperty::read(void) const + ?isEmpty@QDeclarativePropertyMap@@QBE_NXZ @ 1443 NONAME ; bool QDeclarativePropertyMap::isEmpty(void) const + ?wantsFocus@QDeclarativeItem@@QBE_NXZ @ 1444 NONAME ; bool QDeclarativeItem::wantsFocus(void) const + ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 1445 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData const &) + ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 1446 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *, int) + ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContext@@1@Z @ 1447 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContext *, class QObject *) + ?tr@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 1448 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *) + ??6QDeclarativeInfo@@QAEAAV0@G@Z @ 1449 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned short) + ??0QDeclarativeStateOperation@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 1450 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObjectPrivate &, class QObject *) + ?notifyOnValueChanged@QDeclarativeExpression@@QBE_NXZ @ 1451 NONAME ; bool QDeclarativeExpression::notifyOnValueChanged(void) const + ?keyPressPreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 1452 NONAME ; void QDeclarativeItem::keyPressPreHandler(class QKeyEvent *) + ?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 1453 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *, int) + ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugFileReference@@PAVQObject@@@Z @ 1454 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugFileReference const &, class QObject *) + ?paintedHeight@QDeclarativeText@@QBEMXZ @ 1455 NONAME ; float QDeclarativeText::paintedHeight(void) const + ?tr@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1456 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *) + ?transform@QDeclarativeItem@@QAE?AV?$QDeclarativeListProperty@VQGraphicsTransform@@@@XZ @ 1457 NONAME ; class QDeclarativeListProperty QDeclarativeItem::transform(void) + ?leftChanged@QDeclarativeAnchors@@IAEXXZ @ 1458 NONAME ; void QDeclarativeAnchors::leftChanged(void) + ?topChanged@QDeclarativeAnchors@@IAEXXZ @ 1459 NONAME ; void QDeclarativeAnchors::topChanged(void) + ??0QMetaObjectBuilder@@QAE@XZ @ 1460 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(void) + ?asBoolean@Variant@QDeclarativeParser@@QBE_NXZ @ 1461 NONAME ; bool QDeclarativeParser::Variant::asBoolean(void) const + ?removeEnumerator@QMetaObjectBuilder@@QAEXH@Z @ 1462 NONAME ; void QMetaObjectBuilder::removeEnumerator(int) + ?url@QDeclarativeDomObject@@QBE?AVQUrl@@XZ @ 1463 NONAME ; class QUrl QDeclarativeDomObject::url(void) const + ?getStaticMetaObject@QDeclarativeScaleGrid@@SAABUQMetaObject@@XZ @ 1464 NONAME ; struct QMetaObject const & QDeclarativeScaleGrid::getStaticMetaObject(void) + ?signalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@@Z @ 1465 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::signalExpression(class QDeclarativeProperty const &) + ?networkAccessManagerFactory@QDeclarativeEngine@@QBEPAVQDeclarativeNetworkAccessManagerFactory@@XZ @ 1466 NONAME ; class QDeclarativeNetworkAccessManagerFactory * QDeclarativeEngine::networkAccessManagerFactory(void) const + ?isStringList@Variant@QDeclarativeParser@@QBE_NXZ @ 1467 NONAME ; bool QDeclarativeParser::Variant::isStringList(void) const + ?packetWritten@QPacketProtocol@@IAEXXZ @ 1468 NONAME ; void QPacketProtocol::packetWritten(void) + ?getStaticMetaObject@QDeclarativeDebugObjectQuery@@SAABUQMetaObject@@XZ @ 1469 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectQuery::getStaticMetaObject(void) + ?isSignalProperty@QDeclarativeProperty@@QBE_NXZ @ 1470 NONAME ; bool QDeclarativeProperty::isSignalProperty(void) const + ?d_func@QDeclarativeDebugService@@AAEPAVQDeclarativeDebugServicePrivate@@XZ @ 1471 NONAME ; class QDeclarativeDebugServicePrivate * QDeclarativeDebugService::d_func(void) + ?qmlTypeNames@QDeclarativeMetaType@@SA?AV?$QList@VQByteArray@@@@XZ @ 1472 NONAME ; class QList QDeclarativeMetaType::qmlTypeNames(void) + ?creationContext@QDeclarativeComponent@@QBEPAVQDeclarativeContext@@XZ @ 1473 NONAME ; class QDeclarativeContext * QDeclarativeComponent::creationContext(void) const + ?componentComplete@QDeclarativeItem@@MAEXXZ @ 1474 NONAME ; void QDeclarativeItem::componentComplete(void) + ?enabledChanged@QDeclarativeBehavior@@IAEXXZ @ 1475 NONAME ; void QDeclarativeBehavior::enabledChanged(void) + ?staticMetaObject@QDeclarativeTransition@@2UQMetaObject@@B @ 1476 NONAME ; struct QMetaObject const QDeclarativeTransition::staticMetaObject + ??0QDeclarativeInfo@@AAE@PAVQDeclarativeInfoPrivate@@@Z @ 1477 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfoPrivate *) + ?name@QDeclarativeDebugContextReference@@QBE?AVQString@@XZ @ 1478 NONAME ; class QString QDeclarativeDebugContextReference::name(void) const + ?propertyIndex@QDeclarativeBinding@@UAEHXZ @ 1479 NONAME ; int QDeclarativeBinding::propertyIndex(void) + ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 1480 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *, int) + ?qt_metacast@QDeclarativePropertyMap@@UAEPAXPBD@Z @ 1481 NONAME ; void * QDeclarativePropertyMap::qt_metacast(char const *) + ?classBegin@QDeclarativeAnchors@@QAEXXZ @ 1482 NONAME ; void QDeclarativeAnchors::classBegin(void) + ?color@QDeclarativeText@@QBE?AVQColor@@XZ @ 1483 NONAME ; class QColor QDeclarativeText::color(void) const + ?metaObject@QPacketProtocol@@UBEPBUQMetaObject@@XZ @ 1484 NONAME ; struct QMetaObject const * QPacketProtocol::metaObject(void) const + ??4QDeclarativeGridScaledImage@@QAEAAV0@ABV0@@Z @ 1485 NONAME ; class QDeclarativeGridScaledImage & QDeclarativeGridScaledImage::operator=(class QDeclarativeGridScaledImage const &) + ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 1486 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *) + ??1QDeclarativeScriptString@@QAE@XZ @ 1487 NONAME ; QDeclarativeScriptString::~QDeclarativeScriptString(void) + ??1QDeclarativePropertyValueSource@@UAE@XZ @ 1488 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(void) + ?position@QDeclarativeDomList@@QBEHXZ @ 1489 NONAME ; int QDeclarativeDomList::position(void) const + ?toQObject@QDeclarativeMetaType@@SAPAVQObject@@ABVQVariant@@PA_N@Z @ 1490 NONAME ; class QObject * QDeclarativeMetaType::toQObject(class QVariant const &, bool *) + ??_EQDeclarativeItem@@UAE@I@Z @ 1491 NONAME ; QDeclarativeItem::~QDeclarativeItem(unsigned int) + ?getStaticMetaObject@QDeclarativeContext@@SAABUQMetaObject@@XZ @ 1492 NONAME ; struct QMetaObject const & QDeclarativeContext::getStaticMetaObject(void) + ?metaObject@QDeclarativeListModel@@UBEPBUQMetaObject@@XZ @ 1493 NONAME ; struct QMetaObject const * QDeclarativeListModel::metaObject(void) const + ?transformChanged@QDeclarativeItemPrivate@@UAEXXZ @ 1494 NONAME ; void QDeclarativeItemPrivate::transformChanged(void) + ?remove@QDeclarativeListModel@@QAEXH@Z @ 1495 NONAME ; void QDeclarativeListModel::remove(int) + ?setResizeMode@QDeclarativeView@@QAEXW4ResizeMode@1@@Z @ 1496 NONAME ; void QDeclarativeView::setResizeMode(enum QDeclarativeView::ResizeMode) + ?left@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1497 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::left(void) const + ?flags@QMetaObjectBuilder@@QBE?AV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@XZ @ 1498 NONAME ; class QFlags QMetaObjectBuilder::flags(void) const + ??0QDeclarativeItem@@IAE@AAVQDeclarativeItemPrivate@@PAV0@@Z @ 1499 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItemPrivate &, class QDeclarativeItem *) + ??0QDeclarativeContext@@QAE@PAV0@PAVQObject@@@Z @ 1500 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContext *, class QObject *) + ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 1501 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *) + ??1QDeclarativeDebugEnginesQuery@@UAE@XZ @ 1502 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(void) + ?getStaticMetaObject@QDeclarativeTransition@@SAABUQMetaObject@@XZ @ 1503 NONAME ; struct QMetaObject const & QDeclarativeTransition::getStaticMetaObject(void) + ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 1504 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *, int) + ?metaObject@QDeclarativePropertyMap@@UBEPBUQMetaObject@@XZ @ 1505 NONAME ; struct QMetaObject const * QDeclarativePropertyMap::metaObject(void) const + ?componentRoot@QDeclarativeDomComponent@@QBE?AVQDeclarativeDomObject@@XZ @ 1506 NONAME ; class QDeclarativeDomObject QDeclarativeDomComponent::componentRoot(void) const + ?metaObject@QDeclarativeDebugConnection@@UBEPBUQMetaObject@@XZ @ 1507 NONAME ; struct QMetaObject const * QDeclarativeDebugConnection::metaObject(void) const + ?setTag@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1508 NONAME ; void QMetaMethodBuilder::setTag(class QByteArray const &) + ?objects@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 1509 NONAME ; class QList QDeclarativeDebugContextReference::objects(void) const + ??4Variant@QDeclarativeParser@@QAEAAV01@ABV01@@Z @ 1510 NONAME ; class QDeclarativeParser::Variant & QDeclarativeParser::Variant::operator=(class QDeclarativeParser::Variant const &) + ?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1511 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *) + ?setScopeObject@QDeclarativeScriptString@@QAEXPAVQObject@@@Z @ 1512 NONAME ; void QDeclarativeScriptString::setScopeObject(class QObject *) + ??1QDeclarativeBinding@@MAE@XZ @ 1513 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(void) + ?importPlugin@QDeclarativeEngine@@QAE_NABVQString@@0PAV2@@Z @ 1514 NONAME ; bool QDeclarativeEngine::importPlugin(class QString const &, class QString const &, class QString *) + ?setBottomMargin@QDeclarativeAnchors@@QAEXM@Z @ 1515 NONAME ; void QDeclarativeAnchors::setBottomMargin(float) + ?geometryChanged@QDeclarativeItem@@MAEXABVQRectF@@0@Z @ 1516 NONAME ; void QDeclarativeItem::geometryChanged(class QRectF const &, class QRectF const &) + ?toValueSource@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueSource@@XZ @ 1517 NONAME ; class QDeclarativeDomValueValueSource QDeclarativeDomValue::toValueSource(void) const + ?hAlign@QDeclarativeText@@QBE?AW4HAlignment@1@XZ @ 1518 NONAME ; enum QDeclarativeText::HAlignment QDeclarativeText::hAlign(void) const + ?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 1519 NONAME ; class QDeclarativeBinding * QDeclarativeState::when(void) const + ?setRootObject@QDeclarativeView@@MAEXPAVQObject@@@Z @ 1520 NONAME ; void QDeclarativeView::setRootObject(class QObject *) + ?resetBottom@QDeclarativeAnchors@@QAEXXZ @ 1521 NONAME ; void QDeclarativeAnchors::resetBottom(void) + ?qt_metacall@QDeclarativePropertyMap@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1522 NONAME ; int QDeclarativePropertyMap::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QDeclarativeDebugEngineReference@@QAE@ABV0@@Z @ 1523 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(class QDeclarativeDebugEngineReference const &) + ?objectDebugId@QDeclarativeDebugPropertyReference@@QBEHXZ @ 1524 NONAME ; int QDeclarativeDebugPropertyReference::objectDebugId(void) const + ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 1525 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *) + ??AQDeclarativeValueTypeFactory@@QBEPAVQDeclarativeValueType@@H@Z @ 1526 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::operator[](int) const + ?siblingOrderChange@QDeclarativeItemPrivate@@UAEXXZ @ 1527 NONAME ; void QDeclarativeItemPrivate::siblingOrderChange(void) + ??1QDeclarativeState@@UAE@XZ @ 1528 NONAME ; QDeclarativeState::~QDeclarativeState(void) + ?paint@QDeclarativeText@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1529 NONAME ; void QDeclarativeText::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) + ??1QDeclarativeStateGroup@@UAE@XZ @ 1530 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(void) + ?setEditable@QMetaPropertyBuilder@@QAEX_N@Z @ 1531 NONAME ; void QMetaPropertyBuilder::setEditable(bool) + ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1532 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QDeclarativeProperty const &, class QDeclarativeAbstractBinding *, class QFlags) + ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1533 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *) + ?progress@QDeclarativeComponent@@QBEMXZ @ 1534 NONAME ; float QDeclarativeComponent::progress(void) const + ?d_func@QDeclarativeState@@ABEPBVQDeclarativeStatePrivate@@XZ @ 1535 NONAME ; class QDeclarativeStatePrivate const * QDeclarativeState::d_func(void) const + ??0QListModelInterface@@QAE@PAVQObject@@@Z @ 1536 NONAME ; QListModelInterface::QListModelInterface(class QObject *) + ?pointFFromString@QDeclarativeStringConverters@@YA?AVQPointF@@ABVQString@@PA_N@Z @ 1537 NONAME ; class QPointF QDeclarativeStringConverters::pointFFromString(class QString const &, bool *) + ?propertyCreated@QDeclarativeOpenMetaObject@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1538 NONAME ; void QDeclarativeOpenMetaObject::propertyCreated(int, class QMetaPropertyBuilder &) + ?d_func@QDeclarativeView@@ABEPBVQDeclarativeViewPrivate@@XZ @ 1539 NONAME ; class QDeclarativeViewPrivate const * QDeclarativeView::d_func(void) const + ?rootObject@QDeclarativeView@@QBEPAVQGraphicsObject@@XZ @ 1540 NONAME ; class QGraphicsObject * QDeclarativeView::rootObject(void) const + ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 1541 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *, int) + ?queryObjectRecursive@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1542 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObjectRecursive(class QDeclarativeDebugObjectReference const &, class QObject *) + ?prepare@QDeclarativeTransition@@QAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@PAVQDeclarativeTransitionManager@@@Z @ 1543 NONAME ; void QDeclarativeTransition::prepare(class QList &, class QList &, class QDeclarativeTransitionManager *) + ??6QDeclarativeInfo@@QAEAAV0@ABVQUrl@@@Z @ 1544 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QUrl const &) + ?scopeObject@QDeclarativeExpression@@QBEPAVQObject@@XZ @ 1545 NONAME ; class QObject * QDeclarativeExpression::scopeObject(void) const + ?isValid@QDeclarativeContext@@QBE_NXZ @ 1546 NONAME ; bool QDeclarativeContext::isValid(void) const + ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 1547 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *, int) + ?qmlAttachedPropertiesObjectById@@YAPAVQObject@@HPBV1@_N@Z @ 1548 NONAME ; class QObject * qmlAttachedPropertiesObjectById(int, class QObject const *, bool) + ?d_func@QDeclarativePixmapReply@@ABEPBVQDeclarativePixmapReplyPrivate@@XZ @ 1549 NONAME ABSENT ; class QDeclarativePixmapReplyPrivate const * QDeclarativePixmapReply::d_func(void) const + ?constructorCount@QMetaObjectBuilder@@QBEHXZ @ 1550 NONAME ; int QMetaObjectBuilder::constructorCount(void) const + ??0QDeclarativeDomValueValueInterceptor@@QAE@ABV0@@Z @ 1551 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(class QDeclarativeDomValueValueInterceptor const &) + ?object@QDeclarativeDebugObjectQuery@@QBE?AVQDeclarativeDebugObjectReference@@XZ @ 1552 NONAME ; class QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object(void) const + ??0QMetaPropertyBuilder@@QAE@XZ @ 1553 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(void) + ?toMetaObject@QMetaObjectBuilder@@QBEPAUQMetaObject@@XZ @ 1554 NONAME ; struct QMetaObject * QMetaObjectBuilder::toMetaObject(void) const + ?d_func@QDeclarativeEngine@@AAEPAVQDeclarativeEnginePrivate@@XZ @ 1555 NONAME ; class QDeclarativeEnginePrivate * QDeclarativeEngine::d_func(void) + ?forcedHeight@QDeclarativePixmapReply@@QBEHXZ @ 1556 NONAME ABSENT ; int QDeclarativePixmapReply::forcedHeight(void) const + ?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 1557 NONAME ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject + ?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1558 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &) + ?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1559 NONAME ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void) + ?childrenRectChanged@QDeclarativeItem@@IAEXABVQRectF@@@Z @ 1560 NONAME ; void QDeclarativeItem::childrenRectChanged(class QRectF const &) + ?isDesignable@QDeclarativeProperty@@QBE_NXZ @ 1561 NONAME ; bool QDeclarativeProperty::isDesignable(void) const + ?propertyTypeCategory@QDeclarativePropertyPrivate@@QBE?AW4PropertyTypeCategory@QDeclarativeProperty@@XZ @ 1562 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativePropertyPrivate::propertyTypeCategory(void) const + ?setSize@QDeclarativeItem@@QAEXABVQSizeF@@@Z @ 1563 NONAME ; void QDeclarativeItem::setSize(class QSizeF const &) + ?generateRoundedRect@QDeclarativeRectangle@@AAEXXZ @ 1564 NONAME ; void QDeclarativeRectangle::generateRoundedRect(void) + ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 1565 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *) + ?propertyTypeCategory@QDeclarativeProperty@@QBE?AW4PropertyTypeCategory@1@XZ @ 1566 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativeProperty::propertyTypeCategory(void) const + ??0QPacketAutoSend@@AAE@PAVQPacketProtocol@@@Z @ 1567 NONAME ; QPacketAutoSend::QPacketAutoSend(class QPacketProtocol *) + ?keyCount@QMetaEnumBuilder@@QBEHXZ @ 1568 NONAME ; int QMetaEnumBuilder::keyCount(void) const + ??1QDeclarativeDomProperty@@QAE@XZ @ 1569 NONAME ; QDeclarativeDomProperty::~QDeclarativeDomProperty(void) + ?sendMessage@QDeclarativeDebugService@@QAEXABVQByteArray@@@Z @ 1570 NONAME ; void QDeclarativeDebugService::sendMessage(class QByteArray const &) + ?context@QDeclarativeScriptString@@QBEPAVQDeclarativeContext@@XZ @ 1571 NONAME ; class QDeclarativeContext * QDeclarativeScriptString::context(void) const + ?queryObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1572 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObject(class QDeclarativeDebugObjectReference const &, class QObject *) + ?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 1573 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *, int) + ?setNotifyOnValueChanged@QDeclarativeExpression@@QAEX_N@Z @ 1574 NONAME ; void QDeclarativeExpression::setNotifyOnValueChanged(bool) + ??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@AAVQDeclarativeExpressionPrivate@@@Z @ 1575 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &, class QDeclarativeExpressionPrivate &) + ?fillChanged@QDeclarativeAnchors@@IAEXXZ @ 1576 NONAME ; void QDeclarativeAnchors::fillChanged(void) + ?resources_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 1577 NONAME ; void QDeclarativeItemPrivate::resources_append(class QDeclarativeListProperty *, class QObject *) + ??0QDeclarativeComponent@@IAE@AAVQDeclarativeComponentPrivate@@PAVQObject@@@Z @ 1578 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeComponentPrivate &, class QObject *) + ?height@QDeclarativeItem@@QBEMXZ @ 1579 NONAME ; float QDeclarativeItem::height(void) const + ?minorVersion@QDeclarativeType@@QBEHXZ @ 1580 NONAME ; int QDeclarativeType::minorVersion(void) const + ?qt_metacall@QDeclarativeText@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1581 NONAME ; int QDeclarativeText::qt_metacall(enum QMetaObject::Call, int, void * *) + ?event@QDeclarativePixmapReply@@MAE_NPAVQEvent@@@Z @ 1582 NONAME ABSENT ; bool QDeclarativePixmapReply::event(class QEvent *) + ?isConnected@QDeclarativeDebugConnection@@QBE_NXZ @ 1583 NONAME ; bool QDeclarativeDebugConnection::isConnected(void) const + ?trUtf8@QDeclarativePixmapCache@@SA?AVQString@@PBD0@Z @ 1584 NONAME ABSENT ; class QString QDeclarativePixmapCache::trUtf8(char const *, char const *) + ??6QDeclarativeInfo@@QAEAAV0@I@Z @ 1585 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned int) + ?setNetworkAccessManagerFactory@QDeclarativeEngine@@QAEXPAVQDeclarativeNetworkAccessManagerFactory@@@Z @ 1586 NONAME ; void QDeclarativeEngine::setNetworkAccessManagerFactory(class QDeclarativeNetworkAccessManagerFactory *) + ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 1587 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int) + ??AQDeclarativePropertyMap@@QAEAAVQVariant@@ABVQString@@@Z @ 1588 NONAME ; class QVariant & QDeclarativePropertyMap::operator[](class QString const &) + ??0Variant@QDeclarativeParser@@QAE@_N@Z @ 1589 NONAME ; QDeclarativeParser::Variant::Variant(bool) + ?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 1590 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *, int) + ??0QDeclarativeStateGroup@@QAE@PAVQObject@@@Z @ 1591 NONAME ; QDeclarativeStateGroup::QDeclarativeStateGroup(class QObject *) + ?count@QDeclarativeListReference@@QBEHXZ @ 1592 NONAME ; int QDeclarativeListReference::count(void) const + ?location@QDeclarativeCustomParserProperty@@QBE?AULocation@QDeclarativeParser@@XZ @ 1593 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserProperty::location(void) const + ?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1594 NONAME ; struct QMetaObject const * QDeclarativePen::metaObject(void) const + ?trUtf8@QDeclarativePixmapReply@@SA?AVQString@@PBD0@Z @ 1595 NONAME ABSENT ; class QString QDeclarativePixmapReply::trUtf8(char const *, char const *) + ?url@QDeclarativeError@@QBE?AVQUrl@@XZ @ 1596 NONAME ; class QUrl QDeclarativeError::url(void) const + ?isBinding@QDeclarativeDomValue@@QBE_NXZ @ 1597 NONAME ; bool QDeclarativeDomValue::isBinding(void) const + ?name@QDeclarativeProperty@@QBE?AVQString@@XZ @ 1598 NONAME ; class QString QDeclarativeProperty::name(void) const + ?asString@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 1599 NONAME ; class QString QDeclarativeParser::Variant::asString(void) const + ?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 1600 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *) + ?sendMessage@QDeclarativeDebugClient@@QAEXABVQByteArray@@@Z @ 1601 NONAME ; void QDeclarativeDebugClient::sendMessage(class QByteArray const &) + ?canAppend@QDeclarativeListReference@@QBE_NXZ @ 1602 NONAME ; bool QDeclarativeListReference::canAppend(void) const + ??_EQDeclarativeComponent@@UAE@I@Z @ 1603 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(unsigned int) + ?get@QDeclarativeItemPrivate@@SAPAV1@PAVQDeclarativeItem@@@Z @ 1604 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItemPrivate::get(class QDeclarativeItem *) + ?staticMetaObject@QDeclarativeView@@2UQMetaObject@@B @ 1605 NONAME ; struct QMetaObject const QDeclarativeView::staticMetaObject + ?objectToString@QDeclarativeDebugService@@SA?AVQString@@PAVQObject@@@Z @ 1606 NONAME ; class QString QDeclarativeDebugService::objectToString(class QObject *) + ?defaultValue@QDeclarativeDomDynamicProperty@@QBE?AVQDeclarativeDomProperty@@XZ @ 1607 NONAME ; class QDeclarativeDomProperty QDeclarativeDomDynamicProperty::defaultValue(void) const + ?relatedMetaObject@QMetaObjectBuilder@@QBEPBUQMetaObject@@H@Z @ 1608 NONAME ; struct QMetaObject const * QMetaObjectBuilder::relatedMetaObject(int) const + ?d_func@QDeclarativePixmapReply@@AAEPAVQDeclarativePixmapReplyPrivate@@XZ @ 1609 NONAME ABSENT ; class QDeclarativePixmapReplyPrivate * QDeclarativePixmapReply::d_func(void) + ?addKey@QMetaEnumBuilder@@QAEHABVQByteArray@@H@Z @ 1610 NONAME ; int QMetaEnumBuilder::addKey(class QByteArray const &, int) + ?setPosHelper@QDeclarativeItemPrivate@@UAEXABVQPointF@@@Z @ 1611 NONAME ; void QDeclarativeItemPrivate::setPosHelper(class QPointF const &) + ?attributes@QMetaMethodBuilder@@QBEHXZ @ 1612 NONAME ; int QMetaMethodBuilder::attributes(void) const + ?lineNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 1613 NONAME ; int QDeclarativeDebugFileReference::lineNumber(void) const + ?setTop@QDeclarativeScaleGrid@@QAEXH@Z @ 1614 NONAME ; void QDeclarativeScaleGrid::setTop(int) + ?metaObject@QDeclarativeItem@@UBEPBUQMetaObject@@XZ @ 1615 NONAME ; struct QMetaObject const * QDeclarativeItem::metaObject(void) const + ?clear@QDeclarativeAbstractBinding@@IAEXXZ @ 1616 NONAME ; void QDeclarativeAbstractBinding::clear(void) + ?start@QDeclarativeItemPrivate@@SAXAAVQElapsedTimer@@@Z @ 1617 NONAME ; void QDeclarativeItemPrivate::start(class QElapsedTimer &) + ?reloadWithResources@QDeclarativeText@@AAEXXZ @ 1618 NONAME ABSENT ; void QDeclarativeText::reloadWithResources(void) + ?stringToRule@QDeclarativeGridScaledImage@@CA?AW4TileMode@QDeclarativeBorderImage@@ABVQString@@@Z @ 1619 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::stringToRule(class QString const &) + ?setHorizontalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1620 NONAME ; void QDeclarativeAnchors::setHorizontalCenter(class QDeclarativeAnchorLine const &) + ?setFocus@QDeclarativeItem@@QAEX_N@Z @ 1621 NONAME ; void QDeclarativeItem::setFocus(bool) + ?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@PBD@Z @ 1622 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, char const *) const + ??4QDeclarativeProperty@@QAEAAV0@ABV0@@Z @ 1623 NONAME ; class QDeclarativeProperty & QDeclarativeProperty::operator=(class QDeclarativeProperty const &) + ?messageReceived@QDeclarativeDebugClient@@MAEXABVQByteArray@@@Z @ 1624 NONAME ; void QDeclarativeDebugClient::messageReceived(class QByteArray const &) + ?setImplicitWidth@QDeclarativeItem@@IAEXM@Z @ 1625 NONAME ; void QDeclarativeItem::setImplicitWidth(float) + ?isInterface@QDeclarativeType@@QBE_NXZ @ 1626 NONAME ; bool QDeclarativeType::isInterface(void) const + ??0QDeclarativeContext@@AAE@PAVQDeclarativeEngine@@_N@Z @ 1627 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, bool) + ?initialValue@QDeclarativeOpenMetaObject@@UAE?AVQVariant@@H@Z @ 1628 NONAME ; class QVariant QDeclarativeOpenMetaObject::initialValue(int) + ?tr@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1629 NONAME ; class QString QDeclarativeView::tr(char const *, char const *) + ?qt_metacall@QPacketProtocol@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1630 NONAME ; int QPacketProtocol::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QDeclarativeItem@@QAE@PAV0@@Z @ 1631 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItem *) + ?hasDebuggingClient@QDeclarativeDebugService@@SA_NXZ @ 1632 NONAME ; bool QDeclarativeDebugService::hasDebuggingClient(void) + ?staticMetaObject@QDeclarativeContext@@2UQMetaObject@@B @ 1633 NONAME ; struct QMetaObject const QDeclarativeContext::staticMetaObject + ?setContextForObject@QDeclarativeEngine@@SAXPAVQObject@@PAVQDeclarativeContext@@@Z @ 1634 NONAME ; void QDeclarativeEngine::setContextForObject(class QObject *, class QDeclarativeContext *) + ?baselineOffsetChanged@QDeclarativeItem@@IAEXM@Z @ 1635 NONAME ; void QDeclarativeItem::baselineOffsetChanged(float) + ??6QDeclarativeInfo@@QAEAAV0@VQChar@@@Z @ 1636 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QChar) + ?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1637 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, int) + ?status@QDeclarativePixmap@@QBE?AW4Status@1@XZ @ 1638 NONAME ; enum QDeclarativePixmap::Status QDeclarativePixmap::status(void) const + ?error@QDeclarativePixmap@@QBE?AVQString@@XZ @ 1639 NONAME ; class QString QDeclarativePixmap::error(void) const + ??BQDeclarativePixmap@@QBEABVQPixmap@@XZ @ 1640 NONAME ; QDeclarativePixmap::operator class QPixmap const &(void) const + ?tr@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 1641 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *, int) + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1642 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &) + ?height@QDeclarativePixmap@@QBEHXZ @ 1643 NONAME ; int QDeclarativePixmap::height(void) const + ?implicitSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1644 NONAME ; class QSize const & QDeclarativePixmap::implicitSize(void) const + ?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 1645 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, char const *) + ?clear@QDeclarativePixmap@@QAEXPAVQObject@@@Z @ 1646 NONAME ; void QDeclarativePixmap::clear(class QObject *) + ?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 1647 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, char const *) + ?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 1648 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *, int) + ?isLoading@QDeclarativePixmap@@QBE_NXZ @ 1649 NONAME ; bool QDeclarativePixmap::isLoading(void) const + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@@Z @ 1650 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &) + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@_N@Z @ 1651 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, bool) + ??1QDeclarativePixmap@@QAE@XZ @ 1652 NONAME ; QDeclarativePixmap::~QDeclarativePixmap(void) + ??0QDeclarativePixmap@@QAE@XZ @ 1653 NONAME ; QDeclarativePixmap::QDeclarativePixmap(void) + ?isReady@QDeclarativePixmap@@QBE_NXZ @ 1654 NONAME ; bool QDeclarativePixmap::isReady(void) const + ?clear@QDeclarativePixmap@@QAEXXZ @ 1655 NONAME ; void QDeclarativePixmap::clear(void) + ?pixmap@QDeclarativePixmap@@QBEABVQPixmap@@XZ @ 1656 NONAME ; class QPixmap const & QDeclarativePixmap::pixmap(void) const + ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@@Z @ 1657 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &) + ?width@QDeclarativePixmap@@QBEHXZ @ 1658 NONAME ; int QDeclarativePixmap::width(void) const + ?setPixmap@QDeclarativePixmap@@QAEXABVQPixmap@@@Z @ 1659 NONAME ; void QDeclarativePixmap::setPixmap(class QPixmap const &) + ?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1660 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, int) + ?isError@QDeclarativePixmap@@QBE_NXZ @ 1661 NONAME ; bool QDeclarativePixmap::isError(void) const + ?rect@QDeclarativePixmap@@QBE?AVQRect@@XZ @ 1662 NONAME ; class QRect QDeclarativePixmap::rect(void) const + ?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1663 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *) + ?tr@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1664 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *) + ?isNull@QDeclarativePixmap@@QBE_NXZ @ 1665 NONAME ; bool QDeclarativePixmap::isNull(void) const + ?requestSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1666 NONAME ; class QSize const & QDeclarativePixmap::requestSize(void) const + ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1667 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &, class QSize const &) + ?url@QDeclarativePixmap@@QBEABVQUrl@@XZ @ 1668 NONAME ; class QUrl const & QDeclarativePixmap::url(void) const + ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@_N@Z @ 1669 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &, bool) + diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index f2c7206..8c59b18 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -1,1701 +1,1701 @@ -EXPORTS - _Z10qmlContextPK7QObject @ 1 NONAME - _Z18qmlExecuteDeferredP7QObject @ 2 NONAME - _Z27qmlAttachedPropertiesObjectPiPK7QObjectPK11QMetaObjectb @ 3 NONAME - _Z31qmlAttachedPropertiesObjectByIdiPK7QObjectb @ 4 NONAME - _Z7qmlInfoPK7QObject @ 5 NONAME - _Z7qmlInfoPK7QObjectRK17QDeclarativeError @ 6 NONAME - _Z7qmlInfoPK7QObjectRK5QListI17QDeclarativeErrorE @ 7 NONAME - _Z9qmlEnginePK7QObject @ 8 NONAME - _ZN15QDeclarativePen10penChangedEv @ 9 NONAME - _ZN15QDeclarativePen11qt_metacallEN11QMetaObject4CallEiPPv @ 10 NONAME - _ZN15QDeclarativePen11qt_metacastEPKc @ 11 NONAME - _ZN15QDeclarativePen16staticMetaObjectE @ 12 NONAME DATA 16 - _ZN15QDeclarativePen19getStaticMetaObjectEv @ 13 NONAME - _ZN15QDeclarativePen8setColorERK6QColor @ 14 NONAME - _ZN15QDeclarativePen8setWidthEi @ 15 NONAME - _ZN15QPacketAutoSendC1EP15QPacketProtocol @ 16 NONAME - _ZN15QPacketAutoSendC2EP15QPacketProtocol @ 17 NONAME - _ZN15QPacketAutoSendD0Ev @ 18 NONAME - _ZN15QPacketAutoSendD1Ev @ 19 NONAME - _ZN15QPacketAutoSendD2Ev @ 20 NONAME - _ZN15QPacketProtocol11qt_metacallEN11QMetaObject4CallEiPPv @ 21 NONAME - _ZN15QPacketProtocol11qt_metacastEPKc @ 22 NONAME - _ZN15QPacketProtocol13invalidPacketEv @ 23 NONAME - _ZN15QPacketProtocol13packetWrittenEv @ 24 NONAME - _ZN15QPacketProtocol16staticMetaObjectE @ 25 NONAME DATA 16 - _ZN15QPacketProtocol19getStaticMetaObjectEv @ 26 NONAME - _ZN15QPacketProtocol20setMaximumPacketSizeEi @ 27 NONAME - _ZN15QPacketProtocol4readEv @ 28 NONAME - _ZN15QPacketProtocol4sendERK7QPacket @ 29 NONAME - _ZN15QPacketProtocol4sendEv @ 30 NONAME - _ZN15QPacketProtocol5clearEv @ 31 NONAME - _ZN15QPacketProtocol6deviceEv @ 32 NONAME - _ZN15QPacketProtocol9readyReadEv @ 33 NONAME - _ZN15QPacketProtocolC1EP9QIODeviceP7QObject @ 34 NONAME - _ZN15QPacketProtocolC2EP9QIODeviceP7QObject @ 35 NONAME - _ZN15QPacketProtocolD0Ev @ 36 NONAME - _ZN15QPacketProtocolD1Ev @ 37 NONAME - _ZN15QPacketProtocolD2Ev @ 38 NONAME - _ZN16QDeclarativeInfoC1EP23QDeclarativeInfoPrivate @ 39 NONAME - _ZN16QDeclarativeInfoC1ERKS_ @ 40 NONAME - _ZN16QDeclarativeInfoC2EP23QDeclarativeInfoPrivate @ 41 NONAME - _ZN16QDeclarativeInfoC2ERKS_ @ 42 NONAME - _ZN16QDeclarativeInfoD1Ev @ 43 NONAME - _ZN16QDeclarativeInfoD2Ev @ 44 NONAME - _ZN16QDeclarativeItem10classBeginEv @ 45 NONAME - _ZN16QDeclarativeItem10forceFocusEv @ 46 NONAME - _ZN16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 47 NONAME - _ZN16QDeclarativeItem10resetWidthEv @ 48 NONAME - _ZN16QDeclarativeItem10sceneEventEP6QEvent @ 49 NONAME - _ZN16QDeclarativeItem11clipChangedEb @ 50 NONAME - _ZN16QDeclarativeItem11qt_metacallEN11QMetaObject4CallEiPPv @ 51 NONAME - _ZN16QDeclarativeItem11qt_metacastEPKc @ 52 NONAME - _ZN16QDeclarativeItem11resetHeightEv @ 53 NONAME - _ZN16QDeclarativeItem12childrenRectEv @ 54 NONAME - _ZN16QDeclarativeItem12focusChangedEb @ 55 NONAME - _ZN16QDeclarativeItem12stateChangedERK7QString @ 56 NONAME - _ZN16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 57 NONAME - _ZN16QDeclarativeItem13parentChangedEPS_ @ 58 NONAME - _ZN16QDeclarativeItem13setParentItemEPS_ @ 59 NONAME - _ZN16QDeclarativeItem13smoothChangedEb @ 60 NONAME - _ZN16QDeclarativeItem15childrenChangedEv @ 61 NONAME - _ZN16QDeclarativeItem15geometryChangedERK6QRectFS2_ @ 62 NONAME - _ZN16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 63 NONAME - _ZN16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 64 NONAME - _ZN16QDeclarativeItem16setImplicitWidthEf @ 65 NONAME - _ZN16QDeclarativeItem16setKeepMouseGrabEb @ 66 NONAME - _ZN16QDeclarativeItem16staticMetaObjectE @ 67 NONAME DATA 16 - _ZN16QDeclarativeItem17componentCompleteEv @ 68 NONAME - _ZN16QDeclarativeItem17setBaselineOffsetEf @ 69 NONAME - _ZN16QDeclarativeItem17setImplicitHeightEf @ 70 NONAME - _ZN16QDeclarativeItem17wantsFocusChangedEb @ 71 NONAME - _ZN16QDeclarativeItem18keyPressPreHandlerEP9QKeyEvent @ 72 NONAME - _ZN16QDeclarativeItem18setTransformOriginENS_15TransformOriginE @ 73 NONAME - _ZN16QDeclarativeItem19childrenRectChangedERK6QRectF @ 74 NONAME - _ZN16QDeclarativeItem19getStaticMetaObjectEv @ 75 NONAME - _ZN16QDeclarativeItem20keyReleasePreHandlerEP9QKeyEvent @ 76 NONAME - _ZN16QDeclarativeItem21baselineOffsetChangedEf @ 77 NONAME - _ZN16QDeclarativeItem21inputMethodPreHandlerEP17QInputMethodEvent @ 78 NONAME - _ZN16QDeclarativeItem22transformOriginChangedENS_15TransformOriginE @ 79 NONAME - _ZN16QDeclarativeItem5eventEP6QEvent @ 80 NONAME - _ZN16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 81 NONAME - _ZN16QDeclarativeItem7setClipEb @ 82 NONAME - _ZN16QDeclarativeItem7setSizeERK6QSizeF @ 83 NONAME - _ZN16QDeclarativeItem8setFocusEb @ 84 NONAME - _ZN16QDeclarativeItem8setWidthEf @ 85 NONAME - _ZN16QDeclarativeItem9setHeightEf @ 86 NONAME - _ZN16QDeclarativeItem9setSmoothEb @ 87 NONAME - _ZN16QDeclarativeItem9transformEv @ 88 NONAME - _ZN16QDeclarativeItemC1EPS_ @ 89 NONAME - _ZN16QDeclarativeItemC1ER23QDeclarativeItemPrivatePS_ @ 90 NONAME - _ZN16QDeclarativeItemC2EPS_ @ 91 NONAME - _ZN16QDeclarativeItemC2ER23QDeclarativeItemPrivatePS_ @ 92 NONAME - _ZN16QDeclarativeItemD0Ev @ 93 NONAME - _ZN16QDeclarativeItemD1Ev @ 94 NONAME - _ZN16QDeclarativeItemD2Ev @ 95 NONAME - _ZN16QDeclarativeText11fontChangedERK5QFont @ 96 NONAME - _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 97 NONAME - _ZN16QDeclarativeText11qt_metacastEPKc @ 98 NONAME - _ZN16QDeclarativeText11setWrapModeENS_8WrapModeE @ 99 NONAME - _ZN16QDeclarativeText11textChangedERK7QString @ 100 NONAME - _ZN16QDeclarativeText12colorChangedERK6QColor @ 101 NONAME - _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 102 NONAME - _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 103 NONAME - _ZN16QDeclarativeText13linkActivatedERK7QString @ 104 NONAME - _ZN16QDeclarativeText13setStyleColorERK6QColor @ 105 NONAME - _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 106 NONAME - _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 107 NONAME - _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 108 NONAME - _ZN16QDeclarativeText15wrapModeChangedEv @ 109 NONAME - _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 110 NONAME - _ZN16QDeclarativeText16staticMetaObjectE @ 111 NONAME DATA 16 - _ZN16QDeclarativeText17componentCompleteEv @ 112 NONAME - _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 113 NONAME - _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 114 NONAME - _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 115 NONAME - _ZN16QDeclarativeText18paintedSizeChangedEv @ 116 NONAME - _ZN16QDeclarativeText19getStaticMetaObjectEv @ 117 NONAME - _ZN16QDeclarativeText19reloadWithResourcesEv @ 118 NONAME ABSENT - _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 119 NONAME - _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 120 NONAME - _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 121 NONAME - _ZN16QDeclarativeText7setFontERK5QFont @ 122 NONAME - _ZN16QDeclarativeText7setTextERK7QString @ 123 NONAME - _ZN16QDeclarativeText8setColorERK6QColor @ 124 NONAME - _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 125 NONAME - _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 126 NONAME - _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 127 NONAME - _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 128 NONAME - _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 129 NONAME - _ZN16QDeclarativeTextD0Ev @ 130 NONAME - _ZN16QDeclarativeTextD1Ev @ 131 NONAME - _ZN16QDeclarativeTextD2Ev @ 132 NONAME - _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 133 NONAME - _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 134 NONAME - _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 135 NONAME - _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 136 NONAME - _ZN16QDeclarativeTypeD1Ev @ 137 NONAME - _ZN16QDeclarativeTypeD2Ev @ 138 NONAME - _ZN16QDeclarativeView10paintEventEP11QPaintEvent @ 139 NONAME - _ZN16QDeclarativeView10timerEventEP11QTimerEvent @ 140 NONAME - _ZN16QDeclarativeView11eventFilterEP7QObjectP6QEvent @ 141 NONAME - _ZN16QDeclarativeView11qt_metacallEN11QMetaObject4CallEiPPv @ 142 NONAME - _ZN16QDeclarativeView11qt_metacastEPKc @ 143 NONAME - _ZN16QDeclarativeView11resizeEventEP12QResizeEvent @ 144 NONAME - _ZN16QDeclarativeView11rootContextEv @ 145 NONAME - _ZN16QDeclarativeView12sceneResizedE5QSize @ 146 NONAME - _ZN16QDeclarativeView13setResizeModeENS_10ResizeModeE @ 147 NONAME - _ZN16QDeclarativeView13setRootObjectEP7QObject @ 148 NONAME - _ZN16QDeclarativeView13statusChangedENS_6StatusE @ 149 NONAME - _ZN16QDeclarativeView15continueExecuteEv @ 150 NONAME - _ZN16QDeclarativeView16staticMetaObjectE @ 151 NONAME DATA 16 - _ZN16QDeclarativeView19getStaticMetaObjectEv @ 152 NONAME - _ZN16QDeclarativeView6engineEv @ 153 NONAME - _ZN16QDeclarativeView9setSourceERK4QUrl @ 154 NONAME - _ZN16QDeclarativeViewC1EP7QWidget @ 155 NONAME - _ZN16QDeclarativeViewC1ERK4QUrlP7QWidget @ 156 NONAME - _ZN16QDeclarativeViewC2EP7QWidget @ 157 NONAME - _ZN16QDeclarativeViewC2ERK4QUrlP7QWidget @ 158 NONAME - _ZN16QDeclarativeViewD0Ev @ 159 NONAME - _ZN16QDeclarativeViewD1Ev @ 160 NONAME - _ZN16QDeclarativeViewD2Ev @ 161 NONAME - _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 162 NONAME - _ZN16QMetaEnumBuilder9removeKeyEi @ 163 NONAME - _ZN16QMetaEnumBuilder9setIsFlagEb @ 164 NONAME - _ZN17QDeclarativeError14setDescriptionERK7QString @ 165 NONAME - _ZN17QDeclarativeError6setUrlERK4QUrl @ 166 NONAME - _ZN17QDeclarativeError7setLineEi @ 167 NONAME - _ZN17QDeclarativeError9setColumnEi @ 168 NONAME - _ZN17QDeclarativeErrorC1ERKS_ @ 169 NONAME - _ZN17QDeclarativeErrorC1Ev @ 170 NONAME - _ZN17QDeclarativeErrorC2ERKS_ @ 171 NONAME - _ZN17QDeclarativeErrorC2Ev @ 172 NONAME - _ZN17QDeclarativeErrorD1Ev @ 173 NONAME - _ZN17QDeclarativeErrorD2Ev @ 174 NONAME - _ZN17QDeclarativeErroraSERKS_ @ 175 NONAME - _ZN17QDeclarativeState10setExtendsERK7QString @ 176 NONAME - _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 177 NONAME - _ZN17QDeclarativeState11qt_metacastEPKc @ 178 NONAME - _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 179 NONAME - _ZN17QDeclarativeState16staticMetaObjectE @ 180 NONAME DATA 16 - _ZN17QDeclarativeState19getStaticMetaObjectEv @ 181 NONAME - _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 182 NONAME - _ZN17QDeclarativeState6cancelEv @ 183 NONAME - _ZN17QDeclarativeState7changesEv @ 184 NONAME - _ZN17QDeclarativeState7setNameERK7QString @ 185 NONAME - _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 186 NONAME - _ZN17QDeclarativeState9completedEv @ 187 NONAME - _ZN17QDeclarativeStateC1EP7QObject @ 188 NONAME - _ZN17QDeclarativeStateC2EP7QObject @ 189 NONAME - _ZN17QDeclarativeStateD0Ev @ 190 NONAME - _ZN17QDeclarativeStateD1Ev @ 191 NONAME - _ZN17QDeclarativeStateD2Ev @ 192 NONAME - _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 193 NONAME - _ZN18QDeclarativeAction17deleteFromBindingEv @ 194 NONAME - _ZN18QDeclarativeActionC1EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 195 NONAME - _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 196 NONAME - _ZN18QDeclarativeActionC1Ev @ 197 NONAME - _ZN18QDeclarativeActionC2EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 198 NONAME - _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 199 NONAME - _ZN18QDeclarativeActionC2Ev @ 200 NONAME - _ZN18QDeclarativeEngine10setBaseUrlERK4QUrl @ 201 NONAME - _ZN18QDeclarativeEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 202 NONAME - _ZN18QDeclarativeEngine11qt_metacastEPKc @ 203 NONAME - _ZN18QDeclarativeEngine11rootContextEv @ 204 NONAME - _ZN18QDeclarativeEngine12importPluginERK7QStringS2_PS0_ @ 205 NONAME - _ZN18QDeclarativeEngine13addImportPathERK7QString @ 206 NONAME - _ZN18QDeclarativeEngine13addPluginPathERK7QString @ 207 NONAME - _ZN18QDeclarativeEngine15objectOwnershipEP7QObject @ 208 NONAME - _ZN18QDeclarativeEngine16addImageProviderERK7QStringP25QDeclarativeImageProvider @ 209 NONAME - _ZN18QDeclarativeEngine16contextForObjectEPK7QObject @ 210 NONAME - _ZN18QDeclarativeEngine16staticMetaObjectE @ 211 NONAME DATA 16 - _ZN18QDeclarativeEngine17setImportPathListERK11QStringList @ 212 NONAME - _ZN18QDeclarativeEngine17setPluginPathListERK11QStringList @ 213 NONAME - _ZN18QDeclarativeEngine18setObjectOwnershipEP7QObjectNS_15ObjectOwnershipE @ 214 NONAME - _ZN18QDeclarativeEngine19clearComponentCacheEv @ 215 NONAME - _ZN18QDeclarativeEngine19getStaticMetaObjectEv @ 216 NONAME - _ZN18QDeclarativeEngine19removeImageProviderERK7QString @ 217 NONAME - _ZN18QDeclarativeEngine19setContextForObjectEP7QObjectP19QDeclarativeContext @ 218 NONAME - _ZN18QDeclarativeEngine21setOfflineStoragePathERK7QString @ 219 NONAME - _ZN18QDeclarativeEngine30setNetworkAccessManagerFactoryEP39QDeclarativeNetworkAccessManagerFactory @ 220 NONAME - _ZN18QDeclarativeEngine32setOutputWarningsToStandardErrorEb @ 221 NONAME - _ZN18QDeclarativeEngine4quitEv @ 222 NONAME - _ZN18QDeclarativeEngine8warningsERK5QListI17QDeclarativeErrorE @ 223 NONAME - _ZN18QDeclarativeEngineC1EP7QObject @ 224 NONAME - _ZN18QDeclarativeEngineC2EP7QObject @ 225 NONAME - _ZN18QDeclarativeEngineD0Ev @ 226 NONAME - _ZN18QDeclarativeEngineD1Ev @ 227 NONAME - _ZN18QDeclarativeEngineD2Ev @ 228 NONAME - _ZN18QDeclarativeParser7VariantC1ERK7QString @ 229 NONAME - _ZN18QDeclarativeParser7VariantC1ERK7QStringPN14QDeclarativeJS3AST4NodeE @ 230 NONAME - _ZN18QDeclarativeParser7VariantC1ERKS0_ @ 231 NONAME - _ZN18QDeclarativeParser7VariantC1Eb @ 232 NONAME - _ZN18QDeclarativeParser7VariantC1EdRK7QString @ 233 NONAME - _ZN18QDeclarativeParser7VariantC1Ev @ 234 NONAME - _ZN18QDeclarativeParser7VariantC2ERK7QString @ 235 NONAME - _ZN18QDeclarativeParser7VariantC2ERK7QStringPN14QDeclarativeJS3AST4NodeE @ 236 NONAME - _ZN18QDeclarativeParser7VariantC2ERKS0_ @ 237 NONAME - _ZN18QDeclarativeParser7VariantC2Eb @ 238 NONAME - _ZN18QDeclarativeParser7VariantC2EdRK7QString @ 239 NONAME - _ZN18QDeclarativeParser7VariantC2Ev @ 240 NONAME - _ZN18QDeclarativeParser7VariantaSERKS0_ @ 241 NONAME - _ZN18QMetaMethodBuilder13setAttributesEi @ 242 NONAME - _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 243 NONAME - _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 244 NONAME - _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 245 NONAME - _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 246 NONAME - _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 247 NONAME - _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 248 NONAME - _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 249 NONAME - _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 250 NONAME - _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 251 NONAME - _ZN18QMetaObjectBuilder12removeMethodEi @ 252 NONAME - _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 253 NONAME - _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 254 NONAME - _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 255 NONAME - _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 256 NONAME - _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 257 NONAME - _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 258 NONAME - _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 259 NONAME - _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 260 NONAME - _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 261 NONAME - _ZN18QMetaObjectBuilder14removePropertyEi @ 262 NONAME - _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 263 NONAME - _ZN18QMetaObjectBuilder15removeClassInfoEi @ 264 NONAME - _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 265 NONAME - _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 266 NONAME - _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 267 NONAME - _ZN18QMetaObjectBuilder17removeConstructorEi @ 268 NONAME - _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 269 NONAME - _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 270 NONAME - _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 271 NONAME - _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 272 NONAME - _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 273 NONAME - _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 274 NONAME - _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 275 NONAME - _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 276 NONAME - _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 277 NONAME - _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 278 NONAME - _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 279 NONAME - _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 280 NONAME - _ZN18QMetaObjectBuilderC1Ev @ 281 NONAME - _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 282 NONAME - _ZN18QMetaObjectBuilderC2Ev @ 283 NONAME - _ZN18QMetaObjectBuilderD0Ev @ 284 NONAME - _ZN18QMetaObjectBuilderD1Ev @ 285 NONAME - _ZN18QMetaObjectBuilderD2Ev @ 286 NONAME - _ZN19QDeclarativeAnchors10classBeginEv @ 287 NONAME - _ZN19QDeclarativeAnchors10resetRightEv @ 288 NONAME - _ZN19QDeclarativeAnchors10setMarginsEf @ 289 NONAME - _ZN19QDeclarativeAnchors10topChangedEv @ 290 NONAME - _ZN19QDeclarativeAnchors11fillChangedEv @ 291 NONAME - _ZN19QDeclarativeAnchors11leftChangedEv @ 292 NONAME - _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 293 NONAME - _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 294 NONAME - _ZN19QDeclarativeAnchors11resetBottomEv @ 295 NONAME - _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 296 NONAME - _ZN19QDeclarativeAnchors11setCenterInEP15QGraphicsObject @ 297 NONAME - _ZN19QDeclarativeAnchors12rightChangedEv @ 298 NONAME - _ZN19QDeclarativeAnchors12setTopMarginEf @ 299 NONAME - _ZN19QDeclarativeAnchors13bottomChangedEv @ 300 NONAME - _ZN19QDeclarativeAnchors13resetBaselineEv @ 301 NONAME - _ZN19QDeclarativeAnchors13resetCenterInEv @ 302 NONAME - _ZN19QDeclarativeAnchors13setLeftMarginEf @ 303 NONAME - _ZN19QDeclarativeAnchors14marginsChangedEv @ 304 NONAME - _ZN19QDeclarativeAnchors14setRightMarginEf @ 305 NONAME - _ZN19QDeclarativeAnchors15baselineChangedEv @ 306 NONAME - _ZN19QDeclarativeAnchors15centerInChangedEv @ 307 NONAME - _ZN19QDeclarativeAnchors15setBottomMarginEf @ 308 NONAME - _ZN19QDeclarativeAnchors16staticMetaObjectE @ 309 NONAME DATA 16 - _ZN19QDeclarativeAnchors16topMarginChangedEv @ 310 NONAME - _ZN19QDeclarativeAnchors17componentCompleteEv @ 311 NONAME - _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 312 NONAME - _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 313 NONAME - _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 314 NONAME - _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 315 NONAME - _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 316 NONAME - _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 317 NONAME - _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 318 NONAME - _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 319 NONAME - _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 320 NONAME - _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 321 NONAME - _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 322 NONAME - _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 323 NONAME - _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 324 NONAME - _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 325 NONAME - _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 326 NONAME - _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 327 NONAME - _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 328 NONAME - _ZN19QDeclarativeAnchors7setFillEP15QGraphicsObject @ 329 NONAME - _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 330 NONAME - _ZN19QDeclarativeAnchors8resetTopEv @ 331 NONAME - _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 332 NONAME - _ZN19QDeclarativeAnchors9resetFillEv @ 333 NONAME - _ZN19QDeclarativeAnchors9resetLeftEv @ 334 NONAME - _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 335 NONAME - _ZN19QDeclarativeAnchorsC1EP15QGraphicsObjectP7QObject @ 336 NONAME - _ZN19QDeclarativeAnchorsC1EP7QObject @ 337 NONAME - _ZN19QDeclarativeAnchorsC2EP15QGraphicsObjectP7QObject @ 338 NONAME - _ZN19QDeclarativeAnchorsC2EP7QObject @ 339 NONAME - _ZN19QDeclarativeAnchorsD0Ev @ 340 NONAME - _ZN19QDeclarativeAnchorsD1Ev @ 341 NONAME - _ZN19QDeclarativeAnchorsD2Ev @ 342 NONAME - _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 343 NONAME - _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 344 NONAME - _ZN19QDeclarativeBinding11qt_metacastEPKc @ 345 NONAME - _ZN19QDeclarativeBinding13propertyIndexEv @ 346 NONAME - _ZN19QDeclarativeBinding16staticMetaObjectE @ 347 NONAME DATA 16 - _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 348 NONAME - _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 349 NONAME - _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 350 NONAME - _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 351 NONAME - _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 352 NONAME - _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 353 NONAME - _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 354 NONAME - _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 355 NONAME - _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 356 NONAME - _ZN19QDeclarativeBindingD0Ev @ 357 NONAME - _ZN19QDeclarativeBindingD1Ev @ 358 NONAME - _ZN19QDeclarativeBindingD2Ev @ 359 NONAME - _ZN19QDeclarativeContext10setBaseUrlERK4QUrl @ 360 NONAME - _ZN19QDeclarativeContext11qt_metacallEN11QMetaObject4CallEiPPv @ 361 NONAME - _ZN19QDeclarativeContext11qt_metacastEPKc @ 362 NONAME - _ZN19QDeclarativeContext11resolvedUrlERK4QUrl @ 363 NONAME - _ZN19QDeclarativeContext16setContextObjectEP7QObject @ 364 NONAME - _ZN19QDeclarativeContext16staticMetaObjectE @ 365 NONAME DATA 16 - _ZN19QDeclarativeContext18setContextPropertyERK7QStringP7QObject @ 366 NONAME - _ZN19QDeclarativeContext18setContextPropertyERK7QStringRK8QVariant @ 367 NONAME - _ZN19QDeclarativeContext19getStaticMetaObjectEv @ 368 NONAME - _ZN19QDeclarativeContextC1EP18QDeclarativeEngineP7QObject @ 369 NONAME - _ZN19QDeclarativeContextC1EP18QDeclarativeEngineb @ 370 NONAME - _ZN19QDeclarativeContextC1EP23QDeclarativeContextData @ 371 NONAME - _ZN19QDeclarativeContextC1EPS_P7QObject @ 372 NONAME - _ZN19QDeclarativeContextC2EP18QDeclarativeEngineP7QObject @ 373 NONAME - _ZN19QDeclarativeContextC2EP18QDeclarativeEngineb @ 374 NONAME - _ZN19QDeclarativeContextC2EP23QDeclarativeContextData @ 375 NONAME - _ZN19QDeclarativeContextC2EPS_P7QObject @ 376 NONAME - _ZN19QDeclarativeContextD0Ev @ 377 NONAME - _ZN19QDeclarativeContextD1Ev @ 378 NONAME - _ZN19QDeclarativeContextD2Ev @ 379 NONAME - _ZN19QDeclarativeDomListC1ERKS_ @ 380 NONAME - _ZN19QDeclarativeDomListC1Ev @ 381 NONAME - _ZN19QDeclarativeDomListC2ERKS_ @ 382 NONAME - _ZN19QDeclarativeDomListC2Ev @ 383 NONAME - _ZN19QDeclarativeDomListD1Ev @ 384 NONAME - _ZN19QDeclarativeDomListD2Ev @ 385 NONAME - _ZN19QDeclarativeDomListaSERKS_ @ 386 NONAME - _ZN19QDeclarativePrivate12registerTypeERKNS_12RegisterTypeE @ 387 NONAME - _ZN19QDeclarativePrivate12registerTypeERKNS_17RegisterInterfaceE @ 388 NONAME - _ZN19QDeclarativePrivate26registerAutoParentFunctionEPFNS_16AutoParentResultEP7QObjectS2_E @ 389 NONAME - _ZN19QDeclarativePrivate30qdeclarativeelement_destructorEP7QObject @ 390 NONAME - _ZN19QListModelInterface10itemsMovedEiii @ 391 NONAME - _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 392 NONAME - _ZN19QListModelInterface11qt_metacastEPKc @ 393 NONAME - _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 394 NONAME - _ZN19QListModelInterface12itemsRemovedEii @ 395 NONAME - _ZN19QListModelInterface13itemsInsertedEii @ 396 NONAME - _ZN19QListModelInterface16staticMetaObjectE @ 397 NONAME DATA 16 - _ZN19QListModelInterface19getStaticMetaObjectEv @ 398 NONAME - _ZN20QDeclarativeBehavior10setEnabledEb @ 399 NONAME - _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 400 NONAME - _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 401 NONAME - _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 402 NONAME - _ZN20QDeclarativeBehavior14enabledChangedEv @ 403 NONAME - _ZN20QDeclarativeBehavior16staticMetaObjectE @ 404 NONAME DATA 16 - _ZN20QDeclarativeBehavior18componentFinalizedEv @ 405 NONAME - _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 406 NONAME - _ZN20QDeclarativeBehavior5writeERK8QVariant @ 407 NONAME - _ZN20QDeclarativeBehavior9animationEv @ 408 NONAME - _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 409 NONAME - _ZN20QDeclarativeBehaviorC1EP7QObject @ 410 NONAME - _ZN20QDeclarativeBehaviorC2EP7QObject @ 411 NONAME - _ZN20QDeclarativeBehaviorD0Ev @ 412 NONAME - _ZN20QDeclarativeBehaviorD1Ev @ 413 NONAME - _ZN20QDeclarativeBehaviorD2Ev @ 414 NONAME - _ZN20QDeclarativeDomValueC1ERKS_ @ 415 NONAME - _ZN20QDeclarativeDomValueC1Ev @ 416 NONAME - _ZN20QDeclarativeDomValueC2ERKS_ @ 417 NONAME - _ZN20QDeclarativeDomValueC2Ev @ 418 NONAME - _ZN20QDeclarativeDomValueD1Ev @ 419 NONAME - _ZN20QDeclarativeDomValueD2Ev @ 420 NONAME - _ZN20QDeclarativeDomValueaSERKS_ @ 421 NONAME - _ZN20QDeclarativeMetaType11isInterfaceEi @ 422 NONAME - _ZN20QDeclarativeMetaType12interfaceIIdEi @ 423 NONAME - _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 424 NONAME - _ZN20QDeclarativeMetaType12typeCategoryEi @ 425 NONAME - _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 426 NONAME - _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 427 NONAME - _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 428 NONAME - _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 429 NONAME - _ZN20QDeclarativeMetaType15parentFunctionsEv @ 430 NONAME - _ZN20QDeclarativeMetaType21customStringConverterEi @ 431 NONAME - _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 432 NONAME - _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 433 NONAME - _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 434 NONAME - _ZN20QDeclarativeMetaType4copyEiPvPKv @ 435 NONAME - _ZN20QDeclarativeMetaType6isListEi @ 436 NONAME - _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 437 NONAME - _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 438 NONAME - _ZN20QDeclarativeMetaType7qmlTypeEi @ 439 NONAME - _ZN20QDeclarativeMetaType8isModuleERK10QByteArrayii @ 440 NONAME - _ZN20QDeclarativeMetaType8listTypeEi @ 441 NONAME - _ZN20QDeclarativeMetaType8qmlTypesEv @ 442 NONAME - _ZN20QDeclarativeMetaType9isQObjectEi @ 443 NONAME - _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 444 NONAME - _ZN20QDeclarativeProperty4readEP7QObjectRK7QString @ 445 NONAME - _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP18QDeclarativeEngine @ 446 NONAME - _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP19QDeclarativeContext @ 447 NONAME - _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariant @ 448 NONAME - _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP18QDeclarativeEngine @ 449 NONAME - _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP19QDeclarativeContext @ 450 NONAME - _ZN20QDeclarativePropertyC1EP7QObject @ 451 NONAME - _ZN20QDeclarativePropertyC1EP7QObjectP18QDeclarativeEngine @ 452 NONAME - _ZN20QDeclarativePropertyC1EP7QObjectP19QDeclarativeContext @ 453 NONAME - _ZN20QDeclarativePropertyC1EP7QObjectRK7QString @ 454 NONAME - _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP18QDeclarativeEngine @ 455 NONAME - _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP19QDeclarativeContext @ 456 NONAME - _ZN20QDeclarativePropertyC1ERKS_ @ 457 NONAME - _ZN20QDeclarativePropertyC1Ev @ 458 NONAME - _ZN20QDeclarativePropertyC2EP7QObject @ 459 NONAME - _ZN20QDeclarativePropertyC2EP7QObjectP18QDeclarativeEngine @ 460 NONAME - _ZN20QDeclarativePropertyC2EP7QObjectP19QDeclarativeContext @ 461 NONAME - _ZN20QDeclarativePropertyC2EP7QObjectRK7QString @ 462 NONAME - _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP18QDeclarativeEngine @ 463 NONAME - _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP19QDeclarativeContext @ 464 NONAME - _ZN20QDeclarativePropertyC2ERKS_ @ 465 NONAME - _ZN20QDeclarativePropertyC2Ev @ 466 NONAME - _ZN20QDeclarativePropertyD1Ev @ 467 NONAME - _ZN20QDeclarativePropertyD2Ev @ 468 NONAME - _ZN20QDeclarativePropertyaSERKS_ @ 469 NONAME - _ZN20QMetaPropertyBuilder10setDynamicEb @ 470 NONAME - _ZN20QMetaPropertyBuilder11setEditableEb @ 471 NONAME - _ZN20QMetaPropertyBuilder11setReadableEb @ 472 NONAME - _ZN20QMetaPropertyBuilder11setWritableEb @ 473 NONAME - _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 474 NONAME - _ZN20QMetaPropertyBuilder13setDesignableEb @ 475 NONAME - _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 476 NONAME - _ZN20QMetaPropertyBuilder13setResettableEb @ 477 NONAME - _ZN20QMetaPropertyBuilder13setScriptableEb @ 478 NONAME - _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 479 NONAME - _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 480 NONAME - _ZN20QMetaPropertyBuilder7setUserEb @ 481 NONAME - _ZN20QMetaPropertyBuilder9setStoredEb @ 482 NONAME - _ZN21QDeclarativeComponent11beginCreateEP19QDeclarativeContext @ 483 NONAME - _ZN21QDeclarativeComponent11qt_metacallEN11QMetaObject4CallEiPPv @ 484 NONAME - _ZN21QDeclarativeComponent11qt_metacastEPKc @ 485 NONAME - _ZN21QDeclarativeComponent12createObjectEP7QObject @ 486 NONAME - _ZN21QDeclarativeComponent13statusChangedENS_6StatusE @ 487 NONAME - _ZN21QDeclarativeComponent14completeCreateEv @ 488 NONAME - _ZN21QDeclarativeComponent15progressChangedEf @ 489 NONAME - _ZN21QDeclarativeComponent16staticMetaObjectE @ 490 NONAME DATA 16 - _ZN21QDeclarativeComponent19getStaticMetaObjectEv @ 491 NONAME - _ZN21QDeclarativeComponent21qmlAttachedPropertiesEP7QObject @ 492 NONAME - _ZN21QDeclarativeComponent6createEP19QDeclarativeContext @ 493 NONAME - _ZN21QDeclarativeComponent7loadUrlERK4QUrl @ 494 NONAME - _ZN21QDeclarativeComponent7setDataERK10QByteArrayRK4QUrl @ 495 NONAME - _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 496 NONAME - _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP7QObject @ 497 NONAME - _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK4QUrlP7QObject @ 498 NONAME - _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK7QStringP7QObject @ 499 NONAME - _ZN21QDeclarativeComponentC1EP7QObject @ 500 NONAME - _ZN21QDeclarativeComponentC1ER28QDeclarativeComponentPrivateP7QObject @ 501 NONAME - _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 502 NONAME - _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP7QObject @ 503 NONAME - _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK4QUrlP7QObject @ 504 NONAME - _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK7QStringP7QObject @ 505 NONAME - _ZN21QDeclarativeComponentC2EP7QObject @ 506 NONAME - _ZN21QDeclarativeComponentC2ER28QDeclarativeComponentPrivateP7QObject @ 507 NONAME - _ZN21QDeclarativeComponentD0Ev @ 508 NONAME - _ZN21QDeclarativeComponentD1Ev @ 509 NONAME - _ZN21QDeclarativeComponentD2Ev @ 510 NONAME - _ZN21QDeclarativeDomImportC1ERKS_ @ 511 NONAME - _ZN21QDeclarativeDomImportC1Ev @ 512 NONAME - _ZN21QDeclarativeDomImportC2ERKS_ @ 513 NONAME - _ZN21QDeclarativeDomImportC2Ev @ 514 NONAME - _ZN21QDeclarativeDomImportD1Ev @ 515 NONAME - _ZN21QDeclarativeDomImportD2Ev @ 516 NONAME - _ZN21QDeclarativeDomImportaSERKS_ @ 517 NONAME - _ZN21QDeclarativeDomObjectC1ERKS_ @ 518 NONAME - _ZN21QDeclarativeDomObjectC1Ev @ 519 NONAME - _ZN21QDeclarativeDomObjectC2ERKS_ @ 520 NONAME - _ZN21QDeclarativeDomObjectC2Ev @ 521 NONAME - _ZN21QDeclarativeDomObjectD1Ev @ 522 NONAME - _ZN21QDeclarativeDomObjectD2Ev @ 523 NONAME - _ZN21QDeclarativeDomObjectaSERKS_ @ 524 NONAME - _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 525 NONAME - _ZN21QDeclarativeListModel11qt_metacastEPKc @ 526 NONAME - _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 527 NONAME - _ZN21QDeclarativeListModel12countChangedEv @ 528 NONAME - _ZN21QDeclarativeListModel16staticMetaObjectE @ 529 NONAME DATA 16 - _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 530 NONAME - _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 531 NONAME - _ZN21QDeclarativeListModel4moveEiii @ 532 NONAME - _ZN21QDeclarativeListModel4syncEv @ 533 NONAME - _ZN21QDeclarativeListModel5agentEv @ 534 NONAME - _ZN21QDeclarativeListModel5clearEv @ 535 NONAME - _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 536 NONAME - _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 537 NONAME - _ZN21QDeclarativeListModel6removeEi @ 538 NONAME - _ZN21QDeclarativeListModel7flattenEv @ 539 NONAME - _ZN21QDeclarativeListModelC1EP7QObject @ 540 NONAME - _ZN21QDeclarativeListModelC1EbP7QObject @ 541 NONAME - _ZN21QDeclarativeListModelC2EP7QObject @ 542 NONAME - _ZN21QDeclarativeListModelC2EbP7QObject @ 543 NONAME - _ZN21QDeclarativeListModelD0Ev @ 544 NONAME - _ZN21QDeclarativeListModelD1Ev @ 545 NONAME - _ZN21QDeclarativeListModelD2Ev @ 546 NONAME - _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 547 NONAME - _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 548 NONAME - _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 549 NONAME - _ZN21QDeclarativeRectangle12colorChangedEv @ 550 NONAME - _ZN21QDeclarativeRectangle13radiusChangedEv @ 551 NONAME - _ZN21QDeclarativeRectangle16staticMetaObjectE @ 552 NONAME DATA 16 - _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 553 NONAME - _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 554 NONAME - _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 555 NONAME - _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 556 NONAME - _ZN21QDeclarativeRectangle6borderEv @ 557 NONAME - _ZN21QDeclarativeRectangle8doUpdateEv @ 558 NONAME - _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 559 NONAME - _ZN21QDeclarativeRectangle8setColorERK6QColor @ 560 NONAME - _ZN21QDeclarativeRectangle9setRadiusEf @ 561 NONAME - _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 562 NONAME - _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 563 NONAME - _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 564 NONAME - _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 565 NONAME - _ZN21QDeclarativeScaleGrid13borderChangedEv @ 566 NONAME - _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 567 NONAME DATA 16 - _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 568 NONAME - _ZN21QDeclarativeScaleGrid6setTopEi @ 569 NONAME - _ZN21QDeclarativeScaleGrid7setLeftEi @ 570 NONAME - _ZN21QDeclarativeScaleGrid8setRightEi @ 571 NONAME - _ZN21QDeclarativeScaleGrid9setBottomEi @ 572 NONAME - _ZN21QDeclarativeScaleGridC1EP7QObject @ 573 NONAME - _ZN21QDeclarativeScaleGridC2EP7QObject @ 574 NONAME - _ZN21QDeclarativeScaleGridD0Ev @ 575 NONAME - _ZN21QDeclarativeScaleGridD1Ev @ 576 NONAME - _ZN21QDeclarativeScaleGridD2Ev @ 577 NONAME - _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 578 NONAME - _ZN21QDeclarativeValueType11qt_metacastEPKc @ 579 NONAME - _ZN21QDeclarativeValueType16staticMetaObjectE @ 580 NONAME DATA 16 - _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 581 NONAME - _ZN21QDeclarativeValueTypeC2EP7QObject @ 582 NONAME - _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 583 NONAME - _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 584 NONAME - _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 585 NONAME - _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 586 NONAME DATA 16 - _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 587 NONAME - _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 588 NONAME - _ZN22QDeclarativeDebugQueryC1EP7QObject @ 589 NONAME - _ZN22QDeclarativeDebugQueryC2EP7QObject @ 590 NONAME - _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 591 NONAME - _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 592 NONAME - _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 593 NONAME - _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 594 NONAME - _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 595 NONAME DATA 16 - _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 596 NONAME - _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 597 NONAME - _ZN22QDeclarativeDebugWatchC1EP7QObject @ 598 NONAME - _ZN22QDeclarativeDebugWatchC2EP7QObject @ 599 NONAME - _ZN22QDeclarativeDebugWatchD0Ev @ 600 NONAME - _ZN22QDeclarativeDebugWatchD1Ev @ 601 NONAME - _ZN22QDeclarativeDebugWatchD2Ev @ 602 NONAME - _ZN22QDeclarativeExpression10clearErrorEv @ 603 NONAME - _ZN22QDeclarativeExpression11qt_metacallEN11QMetaObject4CallEiPPv @ 604 NONAME - _ZN22QDeclarativeExpression11qt_metacastEPKc @ 605 NONAME - _ZN22QDeclarativeExpression12valueChangedEv @ 606 NONAME - _ZN22QDeclarativeExpression13setExpressionERK7QString @ 607 NONAME - _ZN22QDeclarativeExpression16staticMetaObjectE @ 608 NONAME DATA 16 - _ZN22QDeclarativeExpression17setSourceLocationERK7QStringi @ 609 NONAME - _ZN22QDeclarativeExpression19getStaticMetaObjectEv @ 610 NONAME - _ZN22QDeclarativeExpression23setNotifyOnValueChangedEb @ 611 NONAME - _ZN22QDeclarativeExpression8evaluateEPb @ 612 NONAME - _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 613 NONAME - _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QString @ 614 NONAME - _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 615 NONAME - _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 616 NONAME - _ZN22QDeclarativeExpressionC1Ev @ 617 NONAME - _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 618 NONAME - _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataP7QObjectRK7QString @ 619 NONAME - _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 620 NONAME - _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 621 NONAME - _ZN22QDeclarativeExpressionC2Ev @ 622 NONAME - _ZN22QDeclarativeExpressionD0Ev @ 623 NONAME - _ZN22QDeclarativeExpressionD1Ev @ 624 NONAME - _ZN22QDeclarativeExpressionD2Ev @ 625 NONAME - _ZN22QDeclarativeStateGroup10classBeginEv @ 626 NONAME - _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 627 NONAME - _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 628 NONAME - _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 629 NONAME - _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 630 NONAME - _ZN22QDeclarativeStateGroup14statesPropertyEv @ 631 NONAME - _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 632 NONAME - _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 633 NONAME DATA 16 - _ZN22QDeclarativeStateGroup17componentCompleteEv @ 634 NONAME - _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 635 NONAME - _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 636 NONAME - _ZN22QDeclarativeStateGroup8setStateERK7QString @ 637 NONAME - _ZN22QDeclarativeStateGroupC1EP7QObject @ 638 NONAME - _ZN22QDeclarativeStateGroupC2EP7QObject @ 639 NONAME - _ZN22QDeclarativeStateGroupD0Ev @ 640 NONAME - _ZN22QDeclarativeStateGroupD1Ev @ 641 NONAME - _ZN22QDeclarativeStateGroupD2Ev @ 642 NONAME - _ZN22QDeclarativeTransition10animationsEv @ 643 NONAME - _ZN22QDeclarativeTransition10setToStateERK7QString @ 644 NONAME - _ZN22QDeclarativeTransition11fromChangedEv @ 645 NONAME - _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 646 NONAME - _ZN22QDeclarativeTransition11qt_metacastEPKc @ 647 NONAME - _ZN22QDeclarativeTransition11setReversedEb @ 648 NONAME - _ZN22QDeclarativeTransition12setFromStateERK7QString @ 649 NONAME - _ZN22QDeclarativeTransition13setReversibleEb @ 650 NONAME - _ZN22QDeclarativeTransition16staticMetaObjectE @ 651 NONAME DATA 16 - _ZN22QDeclarativeTransition17reversibleChangedEv @ 652 NONAME - _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 653 NONAME - _ZN22QDeclarativeTransition4stopEv @ 654 NONAME - _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 655 NONAME - _ZN22QDeclarativeTransition9toChangedEv @ 656 NONAME - _ZN22QDeclarativeTransitionC1EP7QObject @ 657 NONAME - _ZN22QDeclarativeTransitionC2EP7QObject @ 658 NONAME - _ZN22QDeclarativeTransitionD0Ev @ 659 NONAME - _ZN22QDeclarativeTransitionD1Ev @ 660 NONAME - _ZN22QDeclarativeTransitionD2Ev @ 661 NONAME - _ZN23QDeclarativeDebugClient10setEnabledEb @ 662 NONAME - _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 663 NONAME - _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 664 NONAME - _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 665 NONAME - _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 666 NONAME - _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 667 NONAME DATA 16 - _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 668 NONAME - _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 669 NONAME - _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 670 NONAME - _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 671 NONAME - _ZN23QDeclarativeDomDocumentC1ERKS_ @ 672 NONAME - _ZN23QDeclarativeDomDocumentC1Ev @ 673 NONAME - _ZN23QDeclarativeDomDocumentC2ERKS_ @ 674 NONAME - _ZN23QDeclarativeDomDocumentC2Ev @ 675 NONAME - _ZN23QDeclarativeDomDocumentD1Ev @ 676 NONAME - _ZN23QDeclarativeDomDocumentD2Ev @ 677 NONAME - _ZN23QDeclarativeDomDocumentaSERKS_ @ 678 NONAME - _ZN23QDeclarativeDomPropertyC1ERKS_ @ 679 NONAME - _ZN23QDeclarativeDomPropertyC1Ev @ 680 NONAME - _ZN23QDeclarativeDomPropertyC2ERKS_ @ 681 NONAME - _ZN23QDeclarativeDomPropertyC2Ev @ 682 NONAME - _ZN23QDeclarativeDomPropertyD1Ev @ 683 NONAME - _ZN23QDeclarativeDomPropertyD2Ev @ 684 NONAME - _ZN23QDeclarativeDomPropertyaSERKS_ @ 685 NONAME - _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 686 NONAME - _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 687 NONAME - _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 688 NONAME - _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 689 NONAME - _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 690 NONAME DATA 16 - _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 691 NONAME - _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 692 NONAME - _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantbP7QObject @ 693 NONAME - _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 694 NONAME - _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 695 NONAME - _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 696 NONAME - _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 697 NONAME - _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 698 NONAME - _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 699 NONAME - _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 700 NONAME - _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 701 NONAME - _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 702 NONAME - _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 703 NONAME - _ZN23QDeclarativeItemPrivate10resetWidthEv @ 704 NONAME - _ZN23QDeclarativeItemPrivate11data_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 705 NONAME - _ZN23QDeclarativeItemPrivate11resetHeightEv @ 706 NONAME - _ZN23QDeclarativeItemPrivate11transitionsEv @ 707 NONAME - _ZN23QDeclarativeItemPrivate12focusChangedEb @ 708 NONAME - _ZN23QDeclarativeItemPrivate12resources_atEP24QDeclarativeListPropertyI7QObjectEi @ 709 NONAME - _ZN23QDeclarativeItemPrivate12transform_atEP24QDeclarativeListPropertyI18QGraphicsTransformEi @ 710 NONAME - _ZN23QDeclarativeItemPrivate14consistentTimeE @ 711 NONAME DATA 8 - _ZN23QDeclarativeItemPrivate14parentPropertyEP7QObjectPvP28QDeclarativeNotifierEndpoint @ 712 NONAME - _ZN23QDeclarativeItemPrivate15resources_countEP24QDeclarativeListPropertyI7QObjectE @ 713 NONAME - _ZN23QDeclarativeItemPrivate15transform_clearEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 714 NONAME - _ZN23QDeclarativeItemPrivate15transform_countEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 715 NONAME - _ZN23QDeclarativeItemPrivate16resources_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 716 NONAME - _ZN23QDeclarativeItemPrivate16transformChangedEv @ 717 NONAME - _ZN23QDeclarativeItemPrivate16transform_appendEP24QDeclarativeListPropertyI18QGraphicsTransformEPS1_ @ 718 NONAME - _ZN23QDeclarativeItemPrivate17setConsistentTimeEx @ 719 NONAME - _ZN23QDeclarativeItemPrivate24removeItemChangeListenerEP30QDeclarativeItemChangeListener6QFlagsINS_10ChangeTypeEE @ 720 NONAME - _ZN23QDeclarativeItemPrivate4dataEv @ 721 NONAME - _ZN23QDeclarativeItemPrivate5startER13QElapsedTimer @ 722 NONAME - _ZN23QDeclarativeItemPrivate6statesEv @ 723 NONAME - _ZN23QDeclarativeItemPrivate7_statesEv @ 724 NONAME - _ZN23QDeclarativeItemPrivate7elapsedER13QElapsedTimer @ 725 NONAME - _ZN23QDeclarativeItemPrivate7restartER13QElapsedTimer @ 726 NONAME - _ZN23QDeclarativeItemPrivate8setStateERK7QString @ 727 NONAME - _ZN23QDeclarativeItemPrivate8setWidthEf @ 728 NONAME - _ZN23QDeclarativeItemPrivate9resourcesEv @ 729 NONAME - _ZN23QDeclarativeItemPrivate9setHeightEf @ 730 NONAME - _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 731 NONAME ABSENT - _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapP7QStringP5QSizebii @ 732 NONAME ABSENT - _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 733 NONAME ABSENT - _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrlii @ 734 NONAME ABSENT - _ZN23QDeclarativePixmapReply10setLoadingEv @ 735 NONAME ABSENT - _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 736 NONAME ABSENT - _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 737 NONAME ABSENT - _ZN23QDeclarativePixmapReply16downloadProgressExx @ 738 NONAME ABSENT - _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 739 NONAME DATA 16 ABSENT - _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 740 NONAME ABSENT - _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 741 NONAME ABSENT - _ZN23QDeclarativePixmapReply6addRefEv @ 742 NONAME ABSENT - _ZN23QDeclarativePixmapReply7releaseEb @ 743 NONAME ABSENT - _ZN23QDeclarativePixmapReply8finishedEv @ 744 NONAME ABSENT - _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrlii @ 745 NONAME ABSENT - _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrlii @ 746 NONAME ABSENT - _ZN23QDeclarativePixmapReplyD0Ev @ 747 NONAME ABSENT - _ZN23QDeclarativePixmapReplyD1Ev @ 748 NONAME ABSENT - _ZN23QDeclarativePixmapReplyD2Ev @ 749 NONAME ABSENT - _ZN23QDeclarativePropertyMap11qt_metacallEN11QMetaObject4CallEiPPv @ 750 NONAME - _ZN23QDeclarativePropertyMap11qt_metacastEPKc @ 751 NONAME - _ZN23QDeclarativePropertyMap12valueChangedERK7QStringRK8QVariant @ 752 NONAME - _ZN23QDeclarativePropertyMap16staticMetaObjectE @ 753 NONAME DATA 16 - _ZN23QDeclarativePropertyMap19getStaticMetaObjectEv @ 754 NONAME - _ZN23QDeclarativePropertyMap5clearERK7QString @ 755 NONAME - _ZN23QDeclarativePropertyMap6insertERK7QStringRK8QVariant @ 756 NONAME - _ZN23QDeclarativePropertyMapC1EP7QObject @ 757 NONAME - _ZN23QDeclarativePropertyMapC2EP7QObject @ 758 NONAME - _ZN23QDeclarativePropertyMapD0Ev @ 759 NONAME - _ZN23QDeclarativePropertyMapD1Ev @ 760 NONAME - _ZN23QDeclarativePropertyMapD2Ev @ 761 NONAME - _ZN23QDeclarativePropertyMapixERK7QString @ 762 NONAME - _ZN24QDeclarativeCustomParser11clearErrorsEv @ 763 NONAME - _ZN24QDeclarativeCustomParser5errorERK28QDeclarativeCustomParserNodeRK7QString @ 764 NONAME - _ZN24QDeclarativeCustomParser5errorERK32QDeclarativeCustomParserPropertyRK7QString @ 765 NONAME - _ZN24QDeclarativeCustomParser5errorERK7QString @ 766 NONAME - _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 767 NONAME - _ZN24QDeclarativeDebugService11objectForIdEi @ 768 NONAME - _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 769 NONAME - _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 770 NONAME - _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 771 NONAME - _ZN24QDeclarativeDebugService14enabledChangedEb @ 772 NONAME - _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 773 NONAME - _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 774 NONAME - _ZN24QDeclarativeDebugService16staticMetaObjectE @ 775 NONAME DATA 16 - _ZN24QDeclarativeDebugService18hasDebuggingClientEv @ 776 NONAME - _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 777 NONAME - _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 778 NONAME - _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 779 NONAME - _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 780 NONAME - _ZN24QDeclarativeDomComponentC1ERKS_ @ 781 NONAME - _ZN24QDeclarativeDomComponentC1Ev @ 782 NONAME - _ZN24QDeclarativeDomComponentC2ERKS_ @ 783 NONAME - _ZN24QDeclarativeDomComponentC2Ev @ 784 NONAME - _ZN24QDeclarativeDomComponentD1Ev @ 785 NONAME - _ZN24QDeclarativeDomComponentD2Ev @ 786 NONAME - _ZN24QDeclarativeDomComponentaSERKS_ @ 787 NONAME - _ZN24QDeclarativeParserStatusC2Ev @ 788 NONAME - _ZN24QDeclarativeParserStatusD0Ev @ 789 NONAME - _ZN24QDeclarativeParserStatusD1Ev @ 790 NONAME - _ZN24QDeclarativeParserStatusD2Ev @ 791 NONAME - _ZN24QDeclarativeScriptString10setContextEP19QDeclarativeContext @ 792 NONAME - _ZN24QDeclarativeScriptString14setScopeObjectEP7QObject @ 793 NONAME - _ZN24QDeclarativeScriptString9setScriptERK7QString @ 794 NONAME - _ZN24QDeclarativeScriptStringC1ERKS_ @ 795 NONAME - _ZN24QDeclarativeScriptStringC1Ev @ 796 NONAME - _ZN24QDeclarativeScriptStringC2ERKS_ @ 797 NONAME - _ZN24QDeclarativeScriptStringC2Ev @ 798 NONAME - _ZN24QDeclarativeScriptStringD1Ev @ 799 NONAME - _ZN24QDeclarativeScriptStringD2Ev @ 800 NONAME - _ZN24QDeclarativeScriptStringaSERKS_ @ 801 NONAME - _ZN25QDeclarativeImageProviderD0Ev @ 802 NONAME - _ZN25QDeclarativeImageProviderD1Ev @ 803 NONAME - _ZN25QDeclarativeImageProviderD2Ev @ 804 NONAME - _ZN25QDeclarativeListReferenceC1EP7QObjectPKcP18QDeclarativeEngine @ 805 NONAME - _ZN25QDeclarativeListReferenceC1ERKS_ @ 806 NONAME - _ZN25QDeclarativeListReferenceC1Ev @ 807 NONAME - _ZN25QDeclarativeListReferenceC2EP7QObjectPKcP18QDeclarativeEngine @ 808 NONAME - _ZN25QDeclarativeListReferenceC2ERKS_ @ 809 NONAME - _ZN25QDeclarativeListReferenceC2Ev @ 810 NONAME - _ZN25QDeclarativeListReferenceD1Ev @ 811 NONAME - _ZN25QDeclarativeListReferenceD2Ev @ 812 NONAME - _ZN25QDeclarativeListReferenceaSERKS_ @ 813 NONAME - _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 814 NONAME - _ZN26QDeclarativeDebuggerStatusD0Ev @ 815 NONAME - _ZN26QDeclarativeDebuggerStatusD1Ev @ 816 NONAME - _ZN26QDeclarativeDebuggerStatusD2Ev @ 817 NONAME - _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 818 NONAME - _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 819 NONAME - _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 820 NONAME - _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 821 NONAME - _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 822 NONAME - _ZN26QDeclarativeOpenMetaObject15propertyWrittenEi @ 823 NONAME - _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 824 NONAME - _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 825 NONAME - _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 826 NONAME - _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 827 NONAME - _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 828 NONAME - _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 829 NONAME - _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 830 NONAME - _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 831 NONAME - _ZN26QDeclarativeOpenMetaObjectD0Ev @ 832 NONAME - _ZN26QDeclarativeOpenMetaObjectD1Ev @ 833 NONAME - _ZN26QDeclarativeOpenMetaObjectD2Ev @ 834 NONAME - _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 835 NONAME - _ZN26QDeclarativeOpenMetaObjectixEi @ 836 NONAME - _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 837 NONAME - _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 838 NONAME - _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 839 NONAME DATA 16 - _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 840 NONAME - _ZN26QDeclarativeStateOperation7actionsEv @ 841 NONAME - _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 842 NONAME - _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 843 NONAME - _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 844 NONAME - _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 845 NONAME - _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 846 NONAME - _ZN27QDeclarativeAbstractBinding5clearEv @ 847 NONAME - _ZN27QDeclarativeAbstractBinding7destroyEv @ 848 NONAME - _ZN27QDeclarativeAbstractBindingC2Ev @ 849 NONAME - _ZN27QDeclarativeAbstractBindingD0Ev @ 850 NONAME - _ZN27QDeclarativeAbstractBindingD1Ev @ 851 NONAME - _ZN27QDeclarativeAbstractBindingD2Ev @ 852 NONAME - _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 853 NONAME - _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 854 NONAME - _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 855 NONAME DATA 16 - _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 856 NONAME - _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 857 NONAME - _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 858 NONAME - _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 859 NONAME - _ZN27QDeclarativeDomValueBindingC1Ev @ 860 NONAME - _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 861 NONAME - _ZN27QDeclarativeDomValueBindingC2Ev @ 862 NONAME - _ZN27QDeclarativeDomValueBindingD1Ev @ 863 NONAME - _ZN27QDeclarativeDomValueBindingD2Ev @ 864 NONAME - _ZN27QDeclarativeDomValueBindingaSERKS_ @ 865 NONAME - _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 866 NONAME - _ZN27QDeclarativeDomValueLiteralC1Ev @ 867 NONAME - _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 868 NONAME - _ZN27QDeclarativeDomValueLiteralC2Ev @ 869 NONAME - _ZN27QDeclarativeDomValueLiteralD1Ev @ 870 NONAME - _ZN27QDeclarativeDomValueLiteralD2Ev @ 871 NONAME - _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 872 NONAME - _ZN27QDeclarativeExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 873 NONAME - _ZN27QDeclarativeExtensionPlugin11qt_metacastEPKc @ 874 NONAME - _ZN27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 875 NONAME - _ZN27QDeclarativeExtensionPlugin16staticMetaObjectE @ 876 NONAME DATA 16 - _ZN27QDeclarativeExtensionPlugin19getStaticMetaObjectEv @ 877 NONAME - _ZN27QDeclarativeExtensionPluginC2EP7QObject @ 878 NONAME - _ZN27QDeclarativeExtensionPluginD0Ev @ 879 NONAME - _ZN27QDeclarativeExtensionPluginD1Ev @ 880 NONAME - _ZN27QDeclarativeExtensionPluginD2Ev @ 881 NONAME - _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 882 NONAME - _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 883 NONAME - _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 884 NONAME - _ZN27QDeclarativeGridScaledImageC1Ev @ 885 NONAME - _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 886 NONAME - _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 887 NONAME - _ZN27QDeclarativeGridScaledImageC2Ev @ 888 NONAME - _ZN27QDeclarativeGridScaledImageaSERKS_ @ 889 NONAME - _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 890 NONAME - _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectiiP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 891 NONAME - _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 892 NONAME - _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 893 NONAME - _ZN27QDeclarativePropertyPrivate12bindingIndexERK20QDeclarativeProperty @ 894 NONAME - _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 895 NONAME - _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 896 NONAME - _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 897 NONAME - _ZN27QDeclarativePropertyPrivate16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 898 NONAME - _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 899 NONAME - _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 900 NONAME - _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 901 NONAME - _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 902 NONAME - _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 903 NONAME - _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 904 NONAME - _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 905 NONAME - _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 906 NONAME - _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP23QDeclarativeContextData6QFlagsINS_9WriteFlagEE @ 907 NONAME - _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 908 NONAME - _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 909 NONAME - _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP23QDeclarativeContextData @ 910 NONAME - _ZN28QDeclarativeCustomParserNodeC1ERKS_ @ 911 NONAME - _ZN28QDeclarativeCustomParserNodeC1Ev @ 912 NONAME - _ZN28QDeclarativeCustomParserNodeC2ERKS_ @ 913 NONAME - _ZN28QDeclarativeCustomParserNodeC2Ev @ 914 NONAME - _ZN28QDeclarativeCustomParserNodeD1Ev @ 915 NONAME - _ZN28QDeclarativeCustomParserNodeD2Ev @ 916 NONAME - _ZN28QDeclarativeCustomParserNodeaSERKS_ @ 917 NONAME - _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 918 NONAME - _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 919 NONAME - _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 920 NONAME DATA 16 - _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 921 NONAME - _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 922 NONAME - _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 923 NONAME - _ZN28QDeclarativeDebugObjectQueryD0Ev @ 924 NONAME - _ZN28QDeclarativeDebugObjectQueryD1Ev @ 925 NONAME - _ZN28QDeclarativeDebugObjectQueryD2Ev @ 926 NONAME - _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 927 NONAME - _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 928 NONAME - _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 929 NONAME - _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 930 NONAME - _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 931 NONAME - _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 932 NONAME - _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 933 NONAME - _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 934 NONAME - _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 935 NONAME - _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 936 NONAME - _ZN28QDeclarativeValueTypeFactory11isValueTypeEi @ 937 NONAME - _ZN28QDeclarativeValueTypeFactory18registerValueTypesEv @ 938 NONAME - _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 939 NONAME - _ZN28QDeclarativeValueTypeFactoryC1Ev @ 940 NONAME - _ZN28QDeclarativeValueTypeFactoryC2Ev @ 941 NONAME - _ZN28QDeclarativeValueTypeFactoryD1Ev @ 942 NONAME - _ZN28QDeclarativeValueTypeFactoryD2Ev @ 943 NONAME - _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 944 NONAME - _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 945 NONAME - _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 946 NONAME DATA 16 - _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 947 NONAME - _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 948 NONAME - _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 949 NONAME - _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 950 NONAME - _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 951 NONAME - _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 952 NONAME - _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 953 NONAME - _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 954 NONAME - _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 955 NONAME - _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 956 NONAME - _ZN30QDeclarativeDebugFileReferenceC1Ev @ 957 NONAME - _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 958 NONAME - _ZN30QDeclarativeDebugFileReferenceC2Ev @ 959 NONAME - _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 960 NONAME - _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 961 NONAME - _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 962 NONAME - _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 963 NONAME DATA 16 - _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 964 NONAME - _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 965 NONAME - _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 966 NONAME - _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 967 NONAME - _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 968 NONAME - _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 969 NONAME - _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 970 NONAME - _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 971 NONAME - _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 972 NONAME - _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 973 NONAME - _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 974 NONAME - _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 975 NONAME - _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 976 NONAME - _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 977 NONAME - _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 978 NONAME - _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 979 NONAME - _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 980 NONAME - _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 981 NONAME - _ZN31QDeclarativeDomValueValueSourceC1Ev @ 982 NONAME - _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 983 NONAME - _ZN31QDeclarativeDomValueValueSourceC2Ev @ 984 NONAME - _ZN31QDeclarativeDomValueValueSourceD1Ev @ 985 NONAME - _ZN31QDeclarativeDomValueValueSourceD2Ev @ 986 NONAME - _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 987 NONAME - _ZN31QDeclarativePropertyValueSourceC2Ev @ 988 NONAME - _ZN31QDeclarativePropertyValueSourceD0Ev @ 989 NONAME - _ZN31QDeclarativePropertyValueSourceD1Ev @ 990 NONAME - _ZN31QDeclarativePropertyValueSourceD2Ev @ 991 NONAME - _ZN32QDeclarativeCustomParserPropertyC1ERKS_ @ 992 NONAME - _ZN32QDeclarativeCustomParserPropertyC1Ev @ 993 NONAME - _ZN32QDeclarativeCustomParserPropertyC2ERKS_ @ 994 NONAME - _ZN32QDeclarativeCustomParserPropertyC2Ev @ 995 NONAME - _ZN32QDeclarativeCustomParserPropertyD1Ev @ 996 NONAME - _ZN32QDeclarativeCustomParserPropertyD2Ev @ 997 NONAME - _ZN32QDeclarativeCustomParserPropertyaSERKS_ @ 998 NONAME - _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 999 NONAME - _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 1000 NONAME - _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 1001 NONAME - _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 1002 NONAME - _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 1003 NONAME - _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 1004 NONAME - _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 1005 NONAME - _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1006 NONAME - _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 1007 NONAME - _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 1008 NONAME DATA 16 - _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 1009 NONAME - _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 1010 NONAME - _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 1011 NONAME - _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 1012 NONAME - _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 1013 NONAME - _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 1014 NONAME - _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 1015 NONAME - _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 1016 NONAME - _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 1017 NONAME - _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 1018 NONAME - _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 1019 NONAME - _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 1020 NONAME - _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 1021 NONAME - _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 1022 NONAME - _ZN33QDeclarativeDebugContextReferenceC1Ev @ 1023 NONAME - _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 1024 NONAME - _ZN33QDeclarativeDebugContextReferenceC2Ev @ 1025 NONAME - _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 1026 NONAME - _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1027 NONAME - _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 1028 NONAME - _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 1029 NONAME DATA 16 - _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 1030 NONAME - _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 1031 NONAME - _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 1032 NONAME - _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 1033 NONAME - _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 1034 NONAME - _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 1035 NONAME - _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 1036 NONAME - _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 1037 NONAME - _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 1038 NONAME - _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 1039 NONAME - _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 1040 NONAME - _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 1041 NONAME - _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 1042 NONAME - _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 1043 NONAME - _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 1044 NONAME - _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 1045 NONAME - _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 1046 NONAME - _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 1047 NONAME - _ZN36QDeclarativePropertyValueInterceptorC2Ev @ 1048 NONAME - _ZN36QDeclarativePropertyValueInterceptorD0Ev @ 1049 NONAME - _ZN36QDeclarativePropertyValueInterceptorD1Ev @ 1050 NONAME - _ZN36QDeclarativePropertyValueInterceptorD2Ev @ 1051 NONAME - _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1052 NONAME - _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 1053 NONAME - _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 1054 NONAME DATA 16 - _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 1055 NONAME - _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 1056 NONAME - _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 1057 NONAME - _ZN39QDeclarativeNetworkAccessManagerFactoryD0Ev @ 1058 NONAME - _ZN39QDeclarativeNetworkAccessManagerFactoryD1Ev @ 1059 NONAME - _ZN39QDeclarativeNetworkAccessManagerFactoryD2Ev @ 1060 NONAME - _ZN7QPacket5clearEv @ 1061 NONAME - _ZN7QPacketC1ERK10QByteArray @ 1062 NONAME - _ZN7QPacketC1ERKS_ @ 1063 NONAME - _ZN7QPacketC1Ev @ 1064 NONAME - _ZN7QPacketC2ERK10QByteArray @ 1065 NONAME - _ZN7QPacketC2ERKS_ @ 1066 NONAME - _ZN7QPacketC2Ev @ 1067 NONAME - _ZN7QPacketD0Ev @ 1068 NONAME - _ZN7QPacketD1Ev @ 1069 NONAME - _ZN7QPacketD2Ev @ 1070 NONAME - _ZNK15QDeclarativePen10metaObjectEv @ 1071 NONAME - _ZNK15QPacketProtocol10metaObjectEv @ 1072 NONAME - _ZNK15QPacketProtocol16packetsAvailableEv @ 1073 NONAME - _ZNK15QPacketProtocol17maximumPacketSizeEv @ 1074 NONAME - _ZNK16QDeclarativeItem10metaObjectEv @ 1075 NONAME - _ZNK16QDeclarativeItem10parentItemEv @ 1076 NONAME - _ZNK16QDeclarativeItem10wantsFocusEv @ 1077 NONAME - _ZNK16QDeclarativeItem10widthValidEv @ 1078 NONAME - _ZNK16QDeclarativeItem11heightValidEv @ 1079 NONAME - _ZNK16QDeclarativeItem11mapFromItemERK12QScriptValueff @ 1080 NONAME - _ZNK16QDeclarativeItem12boundingRectEv @ 1081 NONAME - _ZNK16QDeclarativeItem13implicitWidthEv @ 1082 NONAME - _ZNK16QDeclarativeItem13keepMouseGrabEv @ 1083 NONAME - _ZNK16QDeclarativeItem14baselineOffsetEv @ 1084 NONAME - _ZNK16QDeclarativeItem14implicitHeightEv @ 1085 NONAME - _ZNK16QDeclarativeItem15transformOriginEv @ 1086 NONAME - _ZNK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 1087 NONAME - _ZNK16QDeclarativeItem19isComponentCompleteEv @ 1088 NONAME - _ZNK16QDeclarativeItem4clipEv @ 1089 NONAME - _ZNK16QDeclarativeItem5widthEv @ 1090 NONAME - _ZNK16QDeclarativeItem6heightEv @ 1091 NONAME - _ZNK16QDeclarativeItem6smoothEv @ 1092 NONAME - _ZNK16QDeclarativeItem7childAtEff @ 1093 NONAME - _ZNK16QDeclarativeItem8hasFocusEv @ 1094 NONAME - _ZNK16QDeclarativeItem9mapToItemERK12QScriptValueff @ 1095 NONAME - _ZNK16QDeclarativeText10metaObjectEv @ 1096 NONAME - _ZNK16QDeclarativeText10styleColorEv @ 1097 NONAME - _ZNK16QDeclarativeText10textFormatEv @ 1098 NONAME - _ZNK16QDeclarativeText12boundingRectEv @ 1099 NONAME - _ZNK16QDeclarativeText12paintedWidthEv @ 1100 NONAME - _ZNK16QDeclarativeText13paintedHeightEv @ 1101 NONAME - _ZNK16QDeclarativeText16resourcesLoadingEv @ 1102 NONAME - _ZNK16QDeclarativeText4fontEv @ 1103 NONAME - _ZNK16QDeclarativeText4textEv @ 1104 NONAME - _ZNK16QDeclarativeText5colorEv @ 1105 NONAME - _ZNK16QDeclarativeText5styleEv @ 1106 NONAME - _ZNK16QDeclarativeText6hAlignEv @ 1107 NONAME - _ZNK16QDeclarativeText6vAlignEv @ 1108 NONAME - _ZNK16QDeclarativeText8wrapModeEv @ 1109 NONAME - _ZNK16QDeclarativeText9elideModeEv @ 1110 NONAME - _ZNK16QDeclarativeType10createSizeEv @ 1111 NONAME - _ZNK16QDeclarativeType10metaObjectEv @ 1112 NONAME - _ZNK16QDeclarativeType11isCreatableEv @ 1113 NONAME - _ZNK16QDeclarativeType11isInterfaceEv @ 1114 NONAME - _ZNK16QDeclarativeType11qListTypeIdEv @ 1115 NONAME - _ZNK16QDeclarativeType11qmlTypeNameEv @ 1116 NONAME - _ZNK16QDeclarativeType12customParserEv @ 1117 NONAME - _ZNK16QDeclarativeType12interfaceIIdEv @ 1118 NONAME - _ZNK16QDeclarativeType12majorVersionEv @ 1119 NONAME - _ZNK16QDeclarativeType12minorVersionEv @ 1120 NONAME - _ZNK16QDeclarativeType14baseMetaObjectEv @ 1121 NONAME - _ZNK16QDeclarativeType14createFunctionEv @ 1122 NONAME - _ZNK16QDeclarativeType14isExtendedTypeEv @ 1123 NONAME - _ZNK16QDeclarativeType16noCreationReasonEv @ 1124 NONAME - _ZNK16QDeclarativeType16parserStatusCastEv @ 1125 NONAME - _ZNK16QDeclarativeType18availableInVersionEii @ 1126 NONAME - _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 1127 NONAME - _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 1128 NONAME - _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 1129 NONAME - _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 1130 NONAME - _ZNK16QDeclarativeType5indexEv @ 1131 NONAME - _ZNK16QDeclarativeType6createEPP7QObjectPPvj @ 1132 NONAME - _ZNK16QDeclarativeType6createEv @ 1133 NONAME - _ZNK16QDeclarativeType6typeIdEv @ 1134 NONAME - _ZNK16QDeclarativeType8typeNameEv @ 1135 NONAME - _ZNK16QDeclarativeView10metaObjectEv @ 1136 NONAME - _ZNK16QDeclarativeView10resizeModeEv @ 1137 NONAME - _ZNK16QDeclarativeView10rootObjectEv @ 1138 NONAME - _ZNK16QDeclarativeView11initialSizeEv @ 1139 NONAME - _ZNK16QDeclarativeView6errorsEv @ 1140 NONAME - _ZNK16QDeclarativeView6sourceEv @ 1141 NONAME - _ZNK16QDeclarativeView6statusEv @ 1142 NONAME - _ZNK16QDeclarativeView8sizeHintEv @ 1143 NONAME - _ZNK16QMetaEnumBuilder3keyEi @ 1144 NONAME - _ZNK16QMetaEnumBuilder4nameEv @ 1145 NONAME - _ZNK16QMetaEnumBuilder5valueEi @ 1146 NONAME - _ZNK16QMetaEnumBuilder6d_funcEv @ 1147 NONAME - _ZNK16QMetaEnumBuilder6isFlagEv @ 1148 NONAME - _ZNK16QMetaEnumBuilder8keyCountEv @ 1149 NONAME - _ZNK17QDeclarativeError11descriptionEv @ 1150 NONAME - _ZNK17QDeclarativeError3urlEv @ 1151 NONAME - _ZNK17QDeclarativeError4lineEv @ 1152 NONAME - _ZNK17QDeclarativeError6columnEv @ 1153 NONAME - _ZNK17QDeclarativeError7isValidEv @ 1154 NONAME - _ZNK17QDeclarativeError8toStringEv @ 1155 NONAME - _ZNK17QDeclarativeState10metaObjectEv @ 1156 NONAME - _ZNK17QDeclarativeState10stateGroupEv @ 1157 NONAME - _ZNK17QDeclarativeState11isWhenKnownEv @ 1158 NONAME - _ZNK17QDeclarativeState11operationAtEi @ 1159 NONAME - _ZNK17QDeclarativeState14operationCountEv @ 1160 NONAME - _ZNK17QDeclarativeState4nameEv @ 1161 NONAME - _ZNK17QDeclarativeState4whenEv @ 1162 NONAME - _ZNK17QDeclarativeState7extendsEv @ 1163 NONAME - _ZNK17QDeclarativeState7isNamedEv @ 1164 NONAME - _ZNK18QDeclarativeEngine10metaObjectEv @ 1165 NONAME - _ZNK18QDeclarativeEngine13imageProviderERK7QString @ 1166 NONAME - _ZNK18QDeclarativeEngine14importPathListEv @ 1167 NONAME - _ZNK18QDeclarativeEngine14pluginPathListEv @ 1168 NONAME - _ZNK18QDeclarativeEngine18offlineStoragePathEv @ 1169 NONAME - _ZNK18QDeclarativeEngine20networkAccessManagerEv @ 1170 NONAME - _ZNK18QDeclarativeEngine27networkAccessManagerFactoryEv @ 1171 NONAME - _ZNK18QDeclarativeEngine29outputWarningsToStandardErrorEv @ 1172 NONAME - _ZNK18QDeclarativeEngine7baseUrlEv @ 1173 NONAME - _ZNK18QDeclarativeParser7Variant12asStringListEv @ 1174 NONAME - _ZNK18QDeclarativeParser7Variant12isStringListEv @ 1175 NONAME - _ZNK18QDeclarativeParser7Variant4typeEv @ 1176 NONAME - _ZNK18QDeclarativeParser7Variant5asASTEv @ 1177 NONAME - _ZNK18QDeclarativeParser7Variant8asNumberEv @ 1178 NONAME - _ZNK18QDeclarativeParser7Variant8asScriptEv @ 1179 NONAME - _ZNK18QDeclarativeParser7Variant8asStringEv @ 1180 NONAME - _ZNK18QDeclarativeParser7Variant9asBooleanEv @ 1181 NONAME - _ZNK18QMetaMethodBuilder10attributesEv @ 1182 NONAME - _ZNK18QMetaMethodBuilder10methodTypeEv @ 1183 NONAME - _ZNK18QMetaMethodBuilder10returnTypeEv @ 1184 NONAME - _ZNK18QMetaMethodBuilder14parameterNamesEv @ 1185 NONAME - _ZNK18QMetaMethodBuilder3tagEv @ 1186 NONAME - _ZNK18QMetaMethodBuilder5indexEv @ 1187 NONAME - _ZNK18QMetaMethodBuilder6accessEv @ 1188 NONAME - _ZNK18QMetaMethodBuilder6d_funcEv @ 1189 NONAME - _ZNK18QMetaMethodBuilder9signatureEv @ 1190 NONAME - _ZNK18QMetaObjectBuilder10enumeratorEi @ 1191 NONAME - _ZNK18QMetaObjectBuilder10superClassEv @ 1192 NONAME - _ZNK18QMetaObjectBuilder11constructorEi @ 1193 NONAME - _ZNK18QMetaObjectBuilder11methodCountEv @ 1194 NONAME - _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 1195 NONAME - _ZNK18QMetaObjectBuilder13classInfoNameEi @ 1196 NONAME - _ZNK18QMetaObjectBuilder13propertyCountEv @ 1197 NONAME - _ZNK18QMetaObjectBuilder14classInfoCountEv @ 1198 NONAME - _ZNK18QMetaObjectBuilder14classInfoValueEi @ 1199 NONAME - _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 1200 NONAME - _ZNK18QMetaObjectBuilder16constructorCountEv @ 1201 NONAME - _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 1202 NONAME - _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 1203 NONAME - _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 1204 NONAME - _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 1205 NONAME - _ZNK18QMetaObjectBuilder5flagsEv @ 1206 NONAME - _ZNK18QMetaObjectBuilder6methodEi @ 1207 NONAME - _ZNK18QMetaObjectBuilder8propertyEi @ 1208 NONAME - _ZNK18QMetaObjectBuilder9classNameEv @ 1209 NONAME - _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 1210 NONAME - _ZNK19QDeclarativeAnchors10leftMarginEv @ 1211 NONAME - _ZNK19QDeclarativeAnchors10metaObjectEv @ 1212 NONAME - _ZNK19QDeclarativeAnchors11rightMarginEv @ 1213 NONAME - _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 1214 NONAME - _ZNK19QDeclarativeAnchors12bottomMarginEv @ 1215 NONAME - _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 1216 NONAME - _ZNK19QDeclarativeAnchors14verticalCenterEv @ 1217 NONAME - _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 1218 NONAME - _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 1219 NONAME - _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 1220 NONAME - _ZNK19QDeclarativeAnchors3topEv @ 1221 NONAME - _ZNK19QDeclarativeAnchors4fillEv @ 1222 NONAME - _ZNK19QDeclarativeAnchors4leftEv @ 1223 NONAME - _ZNK19QDeclarativeAnchors5rightEv @ 1224 NONAME - _ZNK19QDeclarativeAnchors6bottomEv @ 1225 NONAME - _ZNK19QDeclarativeAnchors7marginsEv @ 1226 NONAME - _ZNK19QDeclarativeAnchors8baselineEv @ 1227 NONAME - _ZNK19QDeclarativeAnchors8centerInEv @ 1228 NONAME - _ZNK19QDeclarativeAnchors9topMarginEv @ 1229 NONAME - _ZNK19QDeclarativeBinding10expressionEv @ 1230 NONAME - _ZNK19QDeclarativeBinding10metaObjectEv @ 1231 NONAME - _ZNK19QDeclarativeBinding7enabledEv @ 1232 NONAME - _ZNK19QDeclarativeBinding8propertyEv @ 1233 NONAME - _ZNK19QDeclarativeContext10metaObjectEv @ 1234 NONAME - _ZNK19QDeclarativeContext13contextObjectEv @ 1235 NONAME - _ZNK19QDeclarativeContext13parentContextEv @ 1236 NONAME - _ZNK19QDeclarativeContext15contextPropertyERK7QString @ 1237 NONAME - _ZNK19QDeclarativeContext6engineEv @ 1238 NONAME - _ZNK19QDeclarativeContext7baseUrlEv @ 1239 NONAME - _ZNK19QDeclarativeContext7isValidEv @ 1240 NONAME - _ZNK19QDeclarativeDomList14commaPositionsEv @ 1241 NONAME - _ZNK19QDeclarativeDomList6lengthEv @ 1242 NONAME - _ZNK19QDeclarativeDomList6valuesEv @ 1243 NONAME - _ZNK19QDeclarativeDomList8positionEv @ 1244 NONAME - _ZNK19QListModelInterface10metaObjectEv @ 1245 NONAME - _ZNK20QDeclarativeBehavior10metaObjectEv @ 1246 NONAME - _ZNK20QDeclarativeBehavior7enabledEv @ 1247 NONAME - _ZNK20QDeclarativeDomValue13isValueSourceEv @ 1248 NONAME - _ZNK20QDeclarativeDomValue13toValueSourceEv @ 1249 NONAME - _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 1250 NONAME - _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 1251 NONAME - _ZNK20QDeclarativeDomValue4typeEv @ 1252 NONAME - _ZNK20QDeclarativeDomValue6isListEv @ 1253 NONAME - _ZNK20QDeclarativeDomValue6lengthEv @ 1254 NONAME - _ZNK20QDeclarativeDomValue6toListEv @ 1255 NONAME - _ZNK20QDeclarativeDomValue8isObjectEv @ 1256 NONAME - _ZNK20QDeclarativeDomValue8positionEv @ 1257 NONAME - _ZNK20QDeclarativeDomValue8toObjectEv @ 1258 NONAME - _ZNK20QDeclarativeDomValue9isBindingEv @ 1259 NONAME - _ZNK20QDeclarativeDomValue9isInvalidEv @ 1260 NONAME - _ZNK20QDeclarativeDomValue9isLiteralEv @ 1261 NONAME - _ZNK20QDeclarativeDomValue9toBindingEv @ 1262 NONAME - _ZNK20QDeclarativeDomValue9toLiteralEv @ 1263 NONAME - _ZNK20QDeclarativeProperty10isPropertyEv @ 1264 NONAME - _ZNK20QDeclarativeProperty10isWritableEv @ 1265 NONAME - _ZNK20QDeclarativeProperty12isDesignableEv @ 1266 NONAME - _ZNK20QDeclarativeProperty12isResettableEv @ 1267 NONAME - _ZNK20QDeclarativeProperty12propertyTypeEv @ 1268 NONAME - _ZNK20QDeclarativeProperty15hasNotifySignalEv @ 1269 NONAME - _ZNK20QDeclarativeProperty16isSignalPropertyEv @ 1270 NONAME - _ZNK20QDeclarativeProperty16propertyTypeNameEv @ 1271 NONAME - _ZNK20QDeclarativeProperty17needsNotifySignalEv @ 1272 NONAME - _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjectPKc @ 1273 NONAME - _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjecti @ 1274 NONAME - _ZNK20QDeclarativeProperty20propertyTypeCategoryEv @ 1275 NONAME - _ZNK20QDeclarativeProperty4nameEv @ 1276 NONAME - _ZNK20QDeclarativeProperty4readEv @ 1277 NONAME - _ZNK20QDeclarativeProperty4typeEv @ 1278 NONAME - _ZNK20QDeclarativeProperty5indexEv @ 1279 NONAME - _ZNK20QDeclarativeProperty5resetEv @ 1280 NONAME - _ZNK20QDeclarativeProperty5writeERK8QVariant @ 1281 NONAME - _ZNK20QDeclarativeProperty6methodEv @ 1282 NONAME - _ZNK20QDeclarativeProperty6objectEv @ 1283 NONAME - _ZNK20QDeclarativeProperty7isValidEv @ 1284 NONAME - _ZNK20QDeclarativeProperty8propertyEv @ 1285 NONAME - _ZNK20QDeclarativePropertyeqERKS_ @ 1286 NONAME - _ZNK20QMetaPropertyBuilder10isEditableEv @ 1287 NONAME - _ZNK20QMetaPropertyBuilder10isReadableEv @ 1288 NONAME - _ZNK20QMetaPropertyBuilder10isWritableEv @ 1289 NONAME - _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 1290 NONAME - _ZNK20QMetaPropertyBuilder12isDesignableEv @ 1291 NONAME - _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 1292 NONAME - _ZNK20QMetaPropertyBuilder12isResettableEv @ 1293 NONAME - _ZNK20QMetaPropertyBuilder12isScriptableEv @ 1294 NONAME - _ZNK20QMetaPropertyBuilder12notifySignalEv @ 1295 NONAME - _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 1296 NONAME - _ZNK20QMetaPropertyBuilder4nameEv @ 1297 NONAME - _ZNK20QMetaPropertyBuilder4typeEv @ 1298 NONAME - _ZNK20QMetaPropertyBuilder6d_funcEv @ 1299 NONAME - _ZNK20QMetaPropertyBuilder6isUserEv @ 1300 NONAME - _ZNK20QMetaPropertyBuilder8isStoredEv @ 1301 NONAME - _ZNK20QMetaPropertyBuilder9isDynamicEv @ 1302 NONAME - _ZNK21QDeclarativeComponent10metaObjectEv @ 1303 NONAME - _ZNK21QDeclarativeComponent11errorStringEv @ 1304 NONAME - _ZNK21QDeclarativeComponent15creationContextEv @ 1305 NONAME - _ZNK21QDeclarativeComponent3urlEv @ 1306 NONAME - _ZNK21QDeclarativeComponent6errorsEv @ 1307 NONAME - _ZNK21QDeclarativeComponent6isNullEv @ 1308 NONAME - _ZNK21QDeclarativeComponent6statusEv @ 1309 NONAME - _ZNK21QDeclarativeComponent7isErrorEv @ 1310 NONAME - _ZNK21QDeclarativeComponent7isReadyEv @ 1311 NONAME - _ZNK21QDeclarativeComponent8progressEv @ 1312 NONAME - _ZNK21QDeclarativeComponent9isLoadingEv @ 1313 NONAME - _ZNK21QDeclarativeDomImport3uriEv @ 1314 NONAME - _ZNK21QDeclarativeDomImport4typeEv @ 1315 NONAME - _ZNK21QDeclarativeDomImport7versionEv @ 1316 NONAME - _ZNK21QDeclarativeDomImport9qualifierEv @ 1317 NONAME - _ZNK21QDeclarativeDomObject10objectTypeEv @ 1318 NONAME - _ZNK21QDeclarativeDomObject10propertiesEv @ 1319 NONAME - _ZNK21QDeclarativeDomObject11isComponentEv @ 1320 NONAME - _ZNK21QDeclarativeDomObject11toComponentEv @ 1321 NONAME - _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 1322 NONAME - _ZNK21QDeclarativeDomObject14customTypeDataEv @ 1323 NONAME - _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 1324 NONAME - _ZNK21QDeclarativeDomObject15objectClassNameEv @ 1325 NONAME - _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 1326 NONAME - _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 1327 NONAME - _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 1328 NONAME - _ZNK21QDeclarativeDomObject3urlEv @ 1329 NONAME - _ZNK21QDeclarativeDomObject6lengthEv @ 1330 NONAME - _ZNK21QDeclarativeDomObject7isValidEv @ 1331 NONAME - _ZNK21QDeclarativeDomObject8objectIdEv @ 1332 NONAME - _ZNK21QDeclarativeDomObject8positionEv @ 1333 NONAME - _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 1334 NONAME - _ZNK21QDeclarativeListModel10metaObjectEv @ 1335 NONAME - _ZNK21QDeclarativeListModel3getEi @ 1336 NONAME - _ZNK21QDeclarativeListModel4dataEiRK5QListIiE @ 1337 NONAME - _ZNK21QDeclarativeListModel4dataEii @ 1338 NONAME - _ZNK21QDeclarativeListModel5countEv @ 1339 NONAME - _ZNK21QDeclarativeListModel5rolesEv @ 1340 NONAME - _ZNK21QDeclarativeListModel8toStringEi @ 1341 NONAME - _ZNK21QDeclarativeRectangle10metaObjectEv @ 1342 NONAME - _ZNK21QDeclarativeRectangle12boundingRectEv @ 1343 NONAME - _ZNK21QDeclarativeRectangle5colorEv @ 1344 NONAME - _ZNK21QDeclarativeRectangle6radiusEv @ 1345 NONAME - _ZNK21QDeclarativeRectangle8gradientEv @ 1346 NONAME - _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 1347 NONAME - _ZNK21QDeclarativeScaleGrid6isNullEv @ 1348 NONAME - _ZNK21QDeclarativeValueType10metaObjectEv @ 1349 NONAME - _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 1350 NONAME - _ZNK22QDeclarativeDebugQuery5stateEv @ 1351 NONAME - _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 1352 NONAME - _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 1353 NONAME - _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 1354 NONAME - _ZNK22QDeclarativeDebugWatch5stateEv @ 1355 NONAME - _ZNK22QDeclarativeDebugWatch7queryIdEv @ 1356 NONAME - _ZNK22QDeclarativeExpression10expressionEv @ 1357 NONAME - _ZNK22QDeclarativeExpression10lineNumberEv @ 1358 NONAME - _ZNK22QDeclarativeExpression10metaObjectEv @ 1359 NONAME - _ZNK22QDeclarativeExpression10sourceFileEv @ 1360 NONAME - _ZNK22QDeclarativeExpression11scopeObjectEv @ 1361 NONAME - _ZNK22QDeclarativeExpression20notifyOnValueChangedEv @ 1362 NONAME - _ZNK22QDeclarativeExpression5errorEv @ 1363 NONAME - _ZNK22QDeclarativeExpression6engineEv @ 1364 NONAME - _ZNK22QDeclarativeExpression7contextEv @ 1365 NONAME - _ZNK22QDeclarativeExpression8hasErrorEv @ 1366 NONAME - _ZNK22QDeclarativeStateGroup10metaObjectEv @ 1367 NONAME - _ZNK22QDeclarativeStateGroup5stateEv @ 1368 NONAME - _ZNK22QDeclarativeStateGroup6statesEv @ 1369 NONAME - _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 1370 NONAME - _ZNK22QDeclarativeTransition10metaObjectEv @ 1371 NONAME - _ZNK22QDeclarativeTransition10reversibleEv @ 1372 NONAME - _ZNK22QDeclarativeTransition7toStateEv @ 1373 NONAME - _ZNK22QDeclarativeTransition9fromStateEv @ 1374 NONAME - _ZNK23QDeclarativeDebugClient10metaObjectEv @ 1375 NONAME - _ZNK23QDeclarativeDebugClient11isConnectedEv @ 1376 NONAME - _ZNK23QDeclarativeDebugClient4nameEv @ 1377 NONAME - _ZNK23QDeclarativeDebugClient9isEnabledEv @ 1378 NONAME - _ZNK23QDeclarativeDomDocument10rootObjectEv @ 1379 NONAME - _ZNK23QDeclarativeDomDocument6errorsEv @ 1380 NONAME - _ZNK23QDeclarativeDomDocument7importsEv @ 1381 NONAME - _ZNK23QDeclarativeDomProperty12propertyNameEv @ 1382 NONAME - _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 1383 NONAME - _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 1384 NONAME - _ZNK23QDeclarativeDomProperty5valueEv @ 1385 NONAME - _ZNK23QDeclarativeDomProperty6lengthEv @ 1386 NONAME - _ZNK23QDeclarativeDomProperty7isValidEv @ 1387 NONAME - _ZNK23QDeclarativeDomProperty8positionEv @ 1388 NONAME - _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 1389 NONAME - _ZNK23QDeclarativeItemPrivate14verticalCenterEv @ 1390 NONAME - _ZNK23QDeclarativeItemPrivate16horizontalCenterEv @ 1391 NONAME - _ZNK23QDeclarativeItemPrivate22computeTransformOriginEv @ 1392 NONAME - _ZNK23QDeclarativeItemPrivate3topEv @ 1393 NONAME - _ZNK23QDeclarativeItemPrivate4leftEv @ 1394 NONAME - _ZNK23QDeclarativeItemPrivate5rightEv @ 1395 NONAME - _ZNK23QDeclarativeItemPrivate5stateEv @ 1396 NONAME - _ZNK23QDeclarativeItemPrivate5widthEv @ 1397 NONAME - _ZNK23QDeclarativeItemPrivate6bottomEv @ 1398 NONAME - _ZNK23QDeclarativeItemPrivate6heightEv @ 1399 NONAME - _ZNK23QDeclarativeItemPrivate8baselineEv @ 1400 NONAME - _ZNK23QDeclarativePixmapReply10metaObjectEv @ 1401 NONAME ABSENT - _ZNK23QDeclarativePixmapReply11errorStringEv @ 1402 NONAME ABSENT - _ZNK23QDeclarativePixmapReply11forcedWidthEv @ 1403 NONAME ABSENT - _ZNK23QDeclarativePixmapReply12forcedHeightEv @ 1404 NONAME ABSENT - _ZNK23QDeclarativePixmapReply12implicitSizeEv @ 1405 NONAME ABSENT - _ZNK23QDeclarativePixmapReply3urlEv @ 1406 NONAME ABSENT - _ZNK23QDeclarativePixmapReply6statusEv @ 1407 NONAME ABSENT - _ZNK23QDeclarativePixmapReply9isLoadingEv @ 1408 NONAME ABSENT - _ZNK23QDeclarativePropertyMap10metaObjectEv @ 1409 NONAME - _ZNK23QDeclarativePropertyMap4keysEv @ 1410 NONAME - _ZNK23QDeclarativePropertyMap4sizeEv @ 1411 NONAME - _ZNK23QDeclarativePropertyMap5countEv @ 1412 NONAME - _ZNK23QDeclarativePropertyMap5valueERK7QString @ 1413 NONAME - _ZNK23QDeclarativePropertyMap7isEmptyEv @ 1414 NONAME - _ZNK23QDeclarativePropertyMap8containsERK7QString @ 1415 NONAME - _ZNK23QDeclarativePropertyMapixERK7QString @ 1416 NONAME - _ZNK24QDeclarativeCustomParser11resolveTypeERK10QByteArray @ 1417 NONAME - _ZNK24QDeclarativeCustomParser12evaluateEnumERK10QByteArray @ 1418 NONAME - _ZNK24QDeclarativeDebugService10metaObjectEv @ 1419 NONAME - _ZNK24QDeclarativeDebugService4nameEv @ 1420 NONAME - _ZNK24QDeclarativeDebugService9isEnabledEv @ 1421 NONAME - _ZNK24QDeclarativeDomComponent13componentRootEv @ 1422 NONAME - _ZNK24QDeclarativeScriptString11scopeObjectEv @ 1423 NONAME - _ZNK24QDeclarativeScriptString6scriptEv @ 1424 NONAME - _ZNK24QDeclarativeScriptString7contextEv @ 1425 NONAME - _ZNK25QDeclarativeListReference15listElementTypeEv @ 1426 NONAME - _ZNK25QDeclarativeListReference2atEi @ 1427 NONAME - _ZNK25QDeclarativeListReference5canAtEv @ 1428 NONAME - _ZNK25QDeclarativeListReference5clearEv @ 1429 NONAME - _ZNK25QDeclarativeListReference5countEv @ 1430 NONAME - _ZNK25QDeclarativeListReference6appendEP7QObject @ 1431 NONAME - _ZNK25QDeclarativeListReference6objectEv @ 1432 NONAME - _ZNK25QDeclarativeListReference7isValidEv @ 1433 NONAME - _ZNK25QDeclarativeListReference8canClearEv @ 1434 NONAME - _ZNK25QDeclarativeListReference8canCountEv @ 1435 NONAME - _ZNK25QDeclarativeListReference9canAppendEv @ 1436 NONAME - _ZNK26QDeclarativeOpenMetaObject4nameEi @ 1437 NONAME - _ZNK26QDeclarativeOpenMetaObject4typeEv @ 1438 NONAME - _ZNK26QDeclarativeOpenMetaObject5countEv @ 1439 NONAME - _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 1440 NONAME - _ZNK26QDeclarativeOpenMetaObject5valueEi @ 1441 NONAME - _ZNK26QDeclarativeOpenMetaObject6objectEv @ 1442 NONAME - _ZNK26QDeclarativeOpenMetaObject6parentEv @ 1443 NONAME - _ZNK26QDeclarativeStateOperation10metaObjectEv @ 1444 NONAME - _ZNK27QDeclarativeAbstractBinding10expressionEv @ 1445 NONAME - _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 1446 NONAME - _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 1447 NONAME - _ZNK27QDeclarativeDomValueBinding7bindingEv @ 1448 NONAME - _ZNK27QDeclarativeDomValueLiteral7literalEv @ 1449 NONAME - _ZNK27QDeclarativeExtensionPlugin10metaObjectEv @ 1450 NONAME - _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 1451 NONAME - _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 1452 NONAME - _ZNK27QDeclarativeGridScaledImage7isValidEv @ 1453 NONAME - _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 1454 NONAME - _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 1455 NONAME - _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 1456 NONAME - _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 1457 NONAME - _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 1458 NONAME - _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 1459 NONAME - _ZNK28QDeclarativeCustomParserNode10propertiesEv @ 1460 NONAME - _ZNK28QDeclarativeCustomParserNode4nameEv @ 1461 NONAME - _ZNK28QDeclarativeCustomParserNode8locationEv @ 1462 NONAME - _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 1463 NONAME - _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 1464 NONAME - _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 1465 NONAME - _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 1466 NONAME - _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 1467 NONAME - _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 1468 NONAME - _ZNK30QDeclarativeDebugFileReference3urlEv @ 1469 NONAME - _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 1470 NONAME - _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 1471 NONAME - _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 1472 NONAME - _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 1473 NONAME - _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 1474 NONAME - _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 1475 NONAME - _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 1476 NONAME - _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 1477 NONAME - _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 1478 NONAME - _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 1479 NONAME - _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 1480 NONAME - _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 1481 NONAME - _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 1482 NONAME - _ZNK31QDeclarativeDomValueValueSource6objectEv @ 1483 NONAME - _ZNK32QDeclarativeCustomParserProperty14assignedValuesEv @ 1484 NONAME - _ZNK32QDeclarativeCustomParserProperty4nameEv @ 1485 NONAME - _ZNK32QDeclarativeCustomParserProperty6isListEv @ 1486 NONAME - _ZNK32QDeclarativeCustomParserProperty8locationEv @ 1487 NONAME - _ZNK32QDeclarativeDebugEngineReference4nameEv @ 1488 NONAME - _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 1489 NONAME - _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 1490 NONAME - _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 1491 NONAME - _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 1492 NONAME - _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 1493 NONAME - _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 1494 NONAME - _ZNK32QDeclarativeDebugObjectReference4nameEv @ 1495 NONAME - _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 1496 NONAME - _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 1497 NONAME - _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 1498 NONAME - _ZNK32QDeclarativeDebugObjectReference8idStringEv @ 1499 NONAME - _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 1500 NONAME - _ZNK33QDeclarativeDebugContextReference4nameEv @ 1501 NONAME - _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 1502 NONAME - _ZNK33QDeclarativeDebugContextReference7objectsEv @ 1503 NONAME - _ZNK33QDeclarativeDebugContextReference8contextsEv @ 1504 NONAME - _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 1505 NONAME - _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 1506 NONAME - _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 1507 NONAME - _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 1508 NONAME - _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 1509 NONAME - _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 1510 NONAME - _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 1511 NONAME - _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 1512 NONAME - _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 1513 NONAME - _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 1514 NONAME - _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 1515 NONAME - _ZNK7QPacket7isEmptyEv @ 1516 NONAME - _ZTI15QDeclarativePen @ 1517 NONAME - _ZTI15QPacketAutoSend @ 1518 NONAME - _ZTI15QPacketProtocol @ 1519 NONAME - _ZTI16QDeclarativeItem @ 1520 NONAME - _ZTI16QDeclarativeText @ 1521 NONAME - _ZTI16QDeclarativeView @ 1522 NONAME - _ZTI17QDeclarativeState @ 1523 NONAME - _ZTI18QDeclarativeEngine @ 1524 NONAME - _ZTI18QMetaObjectBuilder @ 1525 NONAME - _ZTI19QDeclarativeAnchors @ 1526 NONAME - _ZTI19QDeclarativeBinding @ 1527 NONAME - _ZTI19QDeclarativeContext @ 1528 NONAME - _ZTI19QListModelInterface @ 1529 NONAME - _ZTI20QDeclarativeBehavior @ 1530 NONAME - _ZTI21QDeclarativeComponent @ 1531 NONAME - _ZTI21QDeclarativeListModel @ 1532 NONAME - _ZTI21QDeclarativeRectangle @ 1533 NONAME - _ZTI21QDeclarativeScaleGrid @ 1534 NONAME - _ZTI21QDeclarativeValueType @ 1535 NONAME - _ZTI22QDeclarativeDebugQuery @ 1536 NONAME - _ZTI22QDeclarativeDebugWatch @ 1537 NONAME - _ZTI22QDeclarativeExpression @ 1538 NONAME - _ZTI22QDeclarativeStateGroup @ 1539 NONAME - _ZTI22QDeclarativeTransition @ 1540 NONAME - _ZTI23QDeclarativeDebugClient @ 1541 NONAME - _ZTI23QDeclarativeEngineDebug @ 1542 NONAME - _ZTI23QDeclarativeItemPrivate @ 1543 NONAME - _ZTI23QDeclarativePixmapReply @ 1544 NONAME ABSENT - _ZTI23QDeclarativePropertyMap @ 1545 NONAME - _ZTI24QDeclarativeCustomParser @ 1546 NONAME - _ZTI24QDeclarativeDebugService @ 1547 NONAME - _ZTI24QDeclarativeParserStatus @ 1548 NONAME - _ZTI25QDeclarativeImageProvider @ 1549 NONAME - _ZTI26QDeclarativeDebuggerStatus @ 1550 NONAME - _ZTI26QDeclarativeOpenMetaObject @ 1551 NONAME - _ZTI26QDeclarativeStateOperation @ 1552 NONAME - _ZTI27QDeclarativeAbstractBinding @ 1553 NONAME - _ZTI27QDeclarativeDebugConnection @ 1554 NONAME - _ZTI27QDeclarativeExtensionPlugin @ 1555 NONAME - _ZTI28QDeclarativeDebugObjectQuery @ 1556 NONAME - _ZTI29QDeclarativeDebugEnginesQuery @ 1557 NONAME - _ZTI30QDeclarativeDebugPropertyWatch @ 1558 NONAME - _ZTI30QDeclarativeExtensionInterface @ 1559 NONAME - _ZTI30QDeclarativeOpenMetaObjectType @ 1560 NONAME - _ZTI31QDeclarativePropertyValueSource @ 1561 NONAME - _ZTI32QDeclarativeDebugExpressionQuery @ 1562 NONAME - _ZTI33QDeclarativeDebugRootContextQuery @ 1563 NONAME - _ZTI36QDeclarativePropertyValueInterceptor @ 1564 NONAME - _ZTI38QDeclarativeDebugObjectExpressionWatch @ 1565 NONAME - _ZTI39QDeclarativeNetworkAccessManagerFactory @ 1566 NONAME - _ZTI7QPacket @ 1567 NONAME - _ZTV15QDeclarativePen @ 1568 NONAME - _ZTV15QPacketAutoSend @ 1569 NONAME - _ZTV15QPacketProtocol @ 1570 NONAME - _ZTV16QDeclarativeItem @ 1571 NONAME - _ZTV16QDeclarativeText @ 1572 NONAME - _ZTV16QDeclarativeView @ 1573 NONAME - _ZTV17QDeclarativeState @ 1574 NONAME - _ZTV18QDeclarativeEngine @ 1575 NONAME - _ZTV18QMetaObjectBuilder @ 1576 NONAME - _ZTV19QDeclarativeAnchors @ 1577 NONAME - _ZTV19QDeclarativeBinding @ 1578 NONAME - _ZTV19QDeclarativeContext @ 1579 NONAME - _ZTV19QListModelInterface @ 1580 NONAME - _ZTV20QDeclarativeBehavior @ 1581 NONAME - _ZTV21QDeclarativeComponent @ 1582 NONAME - _ZTV21QDeclarativeListModel @ 1583 NONAME - _ZTV21QDeclarativeRectangle @ 1584 NONAME - _ZTV21QDeclarativeScaleGrid @ 1585 NONAME - _ZTV21QDeclarativeValueType @ 1586 NONAME - _ZTV22QDeclarativeDebugQuery @ 1587 NONAME - _ZTV22QDeclarativeDebugWatch @ 1588 NONAME - _ZTV22QDeclarativeExpression @ 1589 NONAME - _ZTV22QDeclarativeStateGroup @ 1590 NONAME - _ZTV22QDeclarativeTransition @ 1591 NONAME - _ZTV23QDeclarativeDebugClient @ 1592 NONAME - _ZTV23QDeclarativeEngineDebug @ 1593 NONAME - _ZTV23QDeclarativeItemPrivate @ 1594 NONAME - _ZTV23QDeclarativePixmapReply @ 1595 NONAME ABSENT - _ZTV23QDeclarativePropertyMap @ 1596 NONAME - _ZTV24QDeclarativeCustomParser @ 1597 NONAME - _ZTV24QDeclarativeDebugService @ 1598 NONAME - _ZTV24QDeclarativeParserStatus @ 1599 NONAME - _ZTV25QDeclarativeImageProvider @ 1600 NONAME - _ZTV26QDeclarativeDebuggerStatus @ 1601 NONAME - _ZTV26QDeclarativeOpenMetaObject @ 1602 NONAME - _ZTV26QDeclarativeStateOperation @ 1603 NONAME - _ZTV27QDeclarativeAbstractBinding @ 1604 NONAME - _ZTV27QDeclarativeDebugConnection @ 1605 NONAME - _ZTV27QDeclarativeExtensionPlugin @ 1606 NONAME - _ZTV28QDeclarativeDebugObjectQuery @ 1607 NONAME - _ZTV29QDeclarativeDebugEnginesQuery @ 1608 NONAME - _ZTV30QDeclarativeDebugPropertyWatch @ 1609 NONAME - _ZTV30QDeclarativeOpenMetaObjectType @ 1610 NONAME - _ZTV31QDeclarativePropertyValueSource @ 1611 NONAME - _ZTV32QDeclarativeDebugExpressionQuery @ 1612 NONAME - _ZTV33QDeclarativeDebugRootContextQuery @ 1613 NONAME - _ZTV36QDeclarativePropertyValueInterceptor @ 1614 NONAME - _ZTV38QDeclarativeDebugObjectExpressionWatch @ 1615 NONAME - _ZTV39QDeclarativeNetworkAccessManagerFactory @ 1616 NONAME - _ZTV7QPacket @ 1617 NONAME - _ZThn16_N16QDeclarativeItem10classBeginEv @ 1618 NONAME - _ZThn16_N16QDeclarativeItem17componentCompleteEv @ 1619 NONAME - _ZThn16_N16QDeclarativeItemD0Ev @ 1620 NONAME - _ZThn16_N16QDeclarativeItemD1Ev @ 1621 NONAME - _ZThn16_N16QDeclarativeText17componentCompleteEv @ 1622 NONAME - _ZThn16_N16QDeclarativeTextD0Ev @ 1623 NONAME - _ZThn16_N16QDeclarativeTextD1Ev @ 1624 NONAME - _ZThn8_N16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1625 NONAME - _ZThn8_N16QDeclarativeItem10sceneEventEP6QEvent @ 1626 NONAME - _ZThn8_N16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 1627 NONAME - _ZThn8_N16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 1628 NONAME - _ZThn8_N16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 1629 NONAME - _ZThn8_N16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1630 NONAME - _ZThn8_N16QDeclarativeItemD0Ev @ 1631 NONAME - _ZThn8_N16QDeclarativeItemD1Ev @ 1632 NONAME - _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 1633 NONAME - _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1634 NONAME - _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1635 NONAME - _ZThn8_N16QDeclarativeTextD0Ev @ 1636 NONAME - _ZThn8_N16QDeclarativeTextD1Ev @ 1637 NONAME - _ZThn8_N16QDeclarativeViewD0Ev @ 1638 NONAME - _ZThn8_N16QDeclarativeViewD1Ev @ 1639 NONAME - _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1640 NONAME - _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 1641 NONAME - _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1642 NONAME - _ZThn8_N19QDeclarativeBindingD0Ev @ 1643 NONAME - _ZThn8_N19QDeclarativeBindingD1Ev @ 1644 NONAME - _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 1645 NONAME - _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 1646 NONAME - _ZThn8_N20QDeclarativeBehaviorD0Ev @ 1647 NONAME - _ZThn8_N20QDeclarativeBehaviorD1Ev @ 1648 NONAME - _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1649 NONAME - _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 1650 NONAME - _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 1651 NONAME - _ZThn8_N22QDeclarativeStateGroupD0Ev @ 1652 NONAME - _ZThn8_N22QDeclarativeStateGroupD1Ev @ 1653 NONAME - _ZThn8_N27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 1654 NONAME - _ZThn8_N27QDeclarativeExtensionPluginD0Ev @ 1655 NONAME - _ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 1656 NONAME - _ZThn8_NK16QDeclarativeItem12boundingRectEv @ 1657 NONAME - _ZThn8_NK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 1658 NONAME - _ZThn8_NK16QDeclarativeText12boundingRectEv @ 1659 NONAME - _ZThn8_NK19QDeclarativeBinding10expressionEv @ 1660 NONAME - _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 1661 NONAME - _Zls6QDebugP16QDeclarativeItem @ 1662 NONAME - _Zls6QDebugRK17QDeclarativeError @ 1663 NONAME - _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1664 NONAME - _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1665 NONAME - _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1666 NONAME - _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1667 NONAME - _ZN18QDeclarativePixmap15connectFinishedEP7QObjectPKc @ 1668 NONAME - _ZN18QDeclarativePixmap15connectFinishedEP7QObjecti @ 1669 NONAME - _ZN18QDeclarativePixmap23connectDownloadProgressEP7QObjectPKc @ 1670 NONAME - _ZN18QDeclarativePixmap23connectDownloadProgressEP7QObjecti @ 1671 NONAME - _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrl @ 1672 NONAME - _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlRK5QSize @ 1673 NONAME - _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlRK5QSizeb @ 1674 NONAME - _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlb @ 1675 NONAME - _ZN18QDeclarativePixmap5clearEP7QObject @ 1676 NONAME - _ZN18QDeclarativePixmap5clearEv @ 1677 NONAME - _ZN18QDeclarativePixmap9setPixmapERK7QPixmap @ 1678 NONAME - _ZN18QDeclarativePixmapC1EP18QDeclarativeEngineRK4QUrl @ 1679 NONAME - _ZN18QDeclarativePixmapC1EP18QDeclarativeEngineRK4QUrlRK5QSize @ 1680 NONAME - _ZN18QDeclarativePixmapC1Ev @ 1681 NONAME - _ZN18QDeclarativePixmapC2EP18QDeclarativeEngineRK4QUrl @ 1682 NONAME - _ZN18QDeclarativePixmapC2EP18QDeclarativeEngineRK4QUrlRK5QSize @ 1683 NONAME - _ZN18QDeclarativePixmapC2Ev @ 1684 NONAME - _ZN18QDeclarativePixmapD1Ev @ 1685 NONAME - _ZN18QDeclarativePixmapD2Ev @ 1686 NONAME - _ZNK18QDeclarativePixmap11requestSizeEv @ 1687 NONAME - _ZNK18QDeclarativePixmap12implicitSizeEv @ 1688 NONAME - _ZNK18QDeclarativePixmap3urlEv @ 1689 NONAME - _ZNK18QDeclarativePixmap4rectEv @ 1690 NONAME - _ZNK18QDeclarativePixmap5errorEv @ 1691 NONAME - _ZNK18QDeclarativePixmap5widthEv @ 1692 NONAME - _ZNK18QDeclarativePixmap6heightEv @ 1693 NONAME - _ZNK18QDeclarativePixmap6isNullEv @ 1694 NONAME - _ZNK18QDeclarativePixmap6pixmapEv @ 1695 NONAME - _ZNK18QDeclarativePixmap6statusEv @ 1696 NONAME - _ZNK18QDeclarativePixmap7isErrorEv @ 1697 NONAME - _ZNK18QDeclarativePixmap7isReadyEv @ 1698 NONAME - _ZNK18QDeclarativePixmap9isLoadingEv @ 1699 NONAME - +EXPORTS + _Z10qmlContextPK7QObject @ 1 NONAME + _Z18qmlExecuteDeferredP7QObject @ 2 NONAME + _Z27qmlAttachedPropertiesObjectPiPK7QObjectPK11QMetaObjectb @ 3 NONAME + _Z31qmlAttachedPropertiesObjectByIdiPK7QObjectb @ 4 NONAME + _Z7qmlInfoPK7QObject @ 5 NONAME + _Z7qmlInfoPK7QObjectRK17QDeclarativeError @ 6 NONAME + _Z7qmlInfoPK7QObjectRK5QListI17QDeclarativeErrorE @ 7 NONAME + _Z9qmlEnginePK7QObject @ 8 NONAME + _ZN15QDeclarativePen10penChangedEv @ 9 NONAME + _ZN15QDeclarativePen11qt_metacallEN11QMetaObject4CallEiPPv @ 10 NONAME + _ZN15QDeclarativePen11qt_metacastEPKc @ 11 NONAME + _ZN15QDeclarativePen16staticMetaObjectE @ 12 NONAME DATA 16 + _ZN15QDeclarativePen19getStaticMetaObjectEv @ 13 NONAME + _ZN15QDeclarativePen8setColorERK6QColor @ 14 NONAME + _ZN15QDeclarativePen8setWidthEi @ 15 NONAME + _ZN15QPacketAutoSendC1EP15QPacketProtocol @ 16 NONAME + _ZN15QPacketAutoSendC2EP15QPacketProtocol @ 17 NONAME + _ZN15QPacketAutoSendD0Ev @ 18 NONAME + _ZN15QPacketAutoSendD1Ev @ 19 NONAME + _ZN15QPacketAutoSendD2Ev @ 20 NONAME + _ZN15QPacketProtocol11qt_metacallEN11QMetaObject4CallEiPPv @ 21 NONAME + _ZN15QPacketProtocol11qt_metacastEPKc @ 22 NONAME + _ZN15QPacketProtocol13invalidPacketEv @ 23 NONAME + _ZN15QPacketProtocol13packetWrittenEv @ 24 NONAME + _ZN15QPacketProtocol16staticMetaObjectE @ 25 NONAME DATA 16 + _ZN15QPacketProtocol19getStaticMetaObjectEv @ 26 NONAME + _ZN15QPacketProtocol20setMaximumPacketSizeEi @ 27 NONAME + _ZN15QPacketProtocol4readEv @ 28 NONAME + _ZN15QPacketProtocol4sendERK7QPacket @ 29 NONAME + _ZN15QPacketProtocol4sendEv @ 30 NONAME + _ZN15QPacketProtocol5clearEv @ 31 NONAME + _ZN15QPacketProtocol6deviceEv @ 32 NONAME + _ZN15QPacketProtocol9readyReadEv @ 33 NONAME + _ZN15QPacketProtocolC1EP9QIODeviceP7QObject @ 34 NONAME + _ZN15QPacketProtocolC2EP9QIODeviceP7QObject @ 35 NONAME + _ZN15QPacketProtocolD0Ev @ 36 NONAME + _ZN15QPacketProtocolD1Ev @ 37 NONAME + _ZN15QPacketProtocolD2Ev @ 38 NONAME + _ZN16QDeclarativeInfoC1EP23QDeclarativeInfoPrivate @ 39 NONAME + _ZN16QDeclarativeInfoC1ERKS_ @ 40 NONAME + _ZN16QDeclarativeInfoC2EP23QDeclarativeInfoPrivate @ 41 NONAME + _ZN16QDeclarativeInfoC2ERKS_ @ 42 NONAME + _ZN16QDeclarativeInfoD1Ev @ 43 NONAME + _ZN16QDeclarativeInfoD2Ev @ 44 NONAME + _ZN16QDeclarativeItem10classBeginEv @ 45 NONAME + _ZN16QDeclarativeItem10forceFocusEv @ 46 NONAME + _ZN16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 47 NONAME + _ZN16QDeclarativeItem10resetWidthEv @ 48 NONAME + _ZN16QDeclarativeItem10sceneEventEP6QEvent @ 49 NONAME + _ZN16QDeclarativeItem11clipChangedEb @ 50 NONAME + _ZN16QDeclarativeItem11qt_metacallEN11QMetaObject4CallEiPPv @ 51 NONAME + _ZN16QDeclarativeItem11qt_metacastEPKc @ 52 NONAME + _ZN16QDeclarativeItem11resetHeightEv @ 53 NONAME + _ZN16QDeclarativeItem12childrenRectEv @ 54 NONAME + _ZN16QDeclarativeItem12focusChangedEb @ 55 NONAME + _ZN16QDeclarativeItem12stateChangedERK7QString @ 56 NONAME + _ZN16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 57 NONAME + _ZN16QDeclarativeItem13parentChangedEPS_ @ 58 NONAME + _ZN16QDeclarativeItem13setParentItemEPS_ @ 59 NONAME + _ZN16QDeclarativeItem13smoothChangedEb @ 60 NONAME + _ZN16QDeclarativeItem15childrenChangedEv @ 61 NONAME + _ZN16QDeclarativeItem15geometryChangedERK6QRectFS2_ @ 62 NONAME + _ZN16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 63 NONAME + _ZN16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 64 NONAME + _ZN16QDeclarativeItem16setImplicitWidthEf @ 65 NONAME + _ZN16QDeclarativeItem16setKeepMouseGrabEb @ 66 NONAME + _ZN16QDeclarativeItem16staticMetaObjectE @ 67 NONAME DATA 16 + _ZN16QDeclarativeItem17componentCompleteEv @ 68 NONAME + _ZN16QDeclarativeItem17setBaselineOffsetEf @ 69 NONAME + _ZN16QDeclarativeItem17setImplicitHeightEf @ 70 NONAME + _ZN16QDeclarativeItem17wantsFocusChangedEb @ 71 NONAME + _ZN16QDeclarativeItem18keyPressPreHandlerEP9QKeyEvent @ 72 NONAME + _ZN16QDeclarativeItem18setTransformOriginENS_15TransformOriginE @ 73 NONAME + _ZN16QDeclarativeItem19childrenRectChangedERK6QRectF @ 74 NONAME + _ZN16QDeclarativeItem19getStaticMetaObjectEv @ 75 NONAME + _ZN16QDeclarativeItem20keyReleasePreHandlerEP9QKeyEvent @ 76 NONAME + _ZN16QDeclarativeItem21baselineOffsetChangedEf @ 77 NONAME + _ZN16QDeclarativeItem21inputMethodPreHandlerEP17QInputMethodEvent @ 78 NONAME + _ZN16QDeclarativeItem22transformOriginChangedENS_15TransformOriginE @ 79 NONAME + _ZN16QDeclarativeItem5eventEP6QEvent @ 80 NONAME + _ZN16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 81 NONAME + _ZN16QDeclarativeItem7setClipEb @ 82 NONAME + _ZN16QDeclarativeItem7setSizeERK6QSizeF @ 83 NONAME + _ZN16QDeclarativeItem8setFocusEb @ 84 NONAME + _ZN16QDeclarativeItem8setWidthEf @ 85 NONAME + _ZN16QDeclarativeItem9setHeightEf @ 86 NONAME + _ZN16QDeclarativeItem9setSmoothEb @ 87 NONAME + _ZN16QDeclarativeItem9transformEv @ 88 NONAME + _ZN16QDeclarativeItemC1EPS_ @ 89 NONAME + _ZN16QDeclarativeItemC1ER23QDeclarativeItemPrivatePS_ @ 90 NONAME + _ZN16QDeclarativeItemC2EPS_ @ 91 NONAME + _ZN16QDeclarativeItemC2ER23QDeclarativeItemPrivatePS_ @ 92 NONAME + _ZN16QDeclarativeItemD0Ev @ 93 NONAME + _ZN16QDeclarativeItemD1Ev @ 94 NONAME + _ZN16QDeclarativeItemD2Ev @ 95 NONAME + _ZN16QDeclarativeText11fontChangedERK5QFont @ 96 NONAME + _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 97 NONAME + _ZN16QDeclarativeText11qt_metacastEPKc @ 98 NONAME + _ZN16QDeclarativeText11setWrapModeENS_8WrapModeE @ 99 NONAME + _ZN16QDeclarativeText11textChangedERK7QString @ 100 NONAME + _ZN16QDeclarativeText12colorChangedERK6QColor @ 101 NONAME + _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 102 NONAME + _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 103 NONAME + _ZN16QDeclarativeText13linkActivatedERK7QString @ 104 NONAME + _ZN16QDeclarativeText13setStyleColorERK6QColor @ 105 NONAME + _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 106 NONAME + _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 107 NONAME + _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 108 NONAME + _ZN16QDeclarativeText15wrapModeChangedEv @ 109 NONAME + _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 110 NONAME + _ZN16QDeclarativeText16staticMetaObjectE @ 111 NONAME DATA 16 + _ZN16QDeclarativeText17componentCompleteEv @ 112 NONAME + _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 113 NONAME + _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 114 NONAME + _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 115 NONAME + _ZN16QDeclarativeText18paintedSizeChangedEv @ 116 NONAME + _ZN16QDeclarativeText19getStaticMetaObjectEv @ 117 NONAME + _ZN16QDeclarativeText19reloadWithResourcesEv @ 118 NONAME ABSENT + _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 119 NONAME + _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 120 NONAME + _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 121 NONAME + _ZN16QDeclarativeText7setFontERK5QFont @ 122 NONAME + _ZN16QDeclarativeText7setTextERK7QString @ 123 NONAME + _ZN16QDeclarativeText8setColorERK6QColor @ 124 NONAME + _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 125 NONAME + _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 126 NONAME + _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 127 NONAME + _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 128 NONAME + _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 129 NONAME + _ZN16QDeclarativeTextD0Ev @ 130 NONAME + _ZN16QDeclarativeTextD1Ev @ 131 NONAME + _ZN16QDeclarativeTextD2Ev @ 132 NONAME + _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 133 NONAME + _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 134 NONAME + _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 135 NONAME + _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 136 NONAME + _ZN16QDeclarativeTypeD1Ev @ 137 NONAME + _ZN16QDeclarativeTypeD2Ev @ 138 NONAME + _ZN16QDeclarativeView10paintEventEP11QPaintEvent @ 139 NONAME + _ZN16QDeclarativeView10timerEventEP11QTimerEvent @ 140 NONAME + _ZN16QDeclarativeView11eventFilterEP7QObjectP6QEvent @ 141 NONAME + _ZN16QDeclarativeView11qt_metacallEN11QMetaObject4CallEiPPv @ 142 NONAME + _ZN16QDeclarativeView11qt_metacastEPKc @ 143 NONAME + _ZN16QDeclarativeView11resizeEventEP12QResizeEvent @ 144 NONAME + _ZN16QDeclarativeView11rootContextEv @ 145 NONAME + _ZN16QDeclarativeView12sceneResizedE5QSize @ 146 NONAME + _ZN16QDeclarativeView13setResizeModeENS_10ResizeModeE @ 147 NONAME + _ZN16QDeclarativeView13setRootObjectEP7QObject @ 148 NONAME + _ZN16QDeclarativeView13statusChangedENS_6StatusE @ 149 NONAME + _ZN16QDeclarativeView15continueExecuteEv @ 150 NONAME + _ZN16QDeclarativeView16staticMetaObjectE @ 151 NONAME DATA 16 + _ZN16QDeclarativeView19getStaticMetaObjectEv @ 152 NONAME + _ZN16QDeclarativeView6engineEv @ 153 NONAME + _ZN16QDeclarativeView9setSourceERK4QUrl @ 154 NONAME + _ZN16QDeclarativeViewC1EP7QWidget @ 155 NONAME + _ZN16QDeclarativeViewC1ERK4QUrlP7QWidget @ 156 NONAME + _ZN16QDeclarativeViewC2EP7QWidget @ 157 NONAME + _ZN16QDeclarativeViewC2ERK4QUrlP7QWidget @ 158 NONAME + _ZN16QDeclarativeViewD0Ev @ 159 NONAME + _ZN16QDeclarativeViewD1Ev @ 160 NONAME + _ZN16QDeclarativeViewD2Ev @ 161 NONAME + _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 162 NONAME + _ZN16QMetaEnumBuilder9removeKeyEi @ 163 NONAME + _ZN16QMetaEnumBuilder9setIsFlagEb @ 164 NONAME + _ZN17QDeclarativeError14setDescriptionERK7QString @ 165 NONAME + _ZN17QDeclarativeError6setUrlERK4QUrl @ 166 NONAME + _ZN17QDeclarativeError7setLineEi @ 167 NONAME + _ZN17QDeclarativeError9setColumnEi @ 168 NONAME + _ZN17QDeclarativeErrorC1ERKS_ @ 169 NONAME + _ZN17QDeclarativeErrorC1Ev @ 170 NONAME + _ZN17QDeclarativeErrorC2ERKS_ @ 171 NONAME + _ZN17QDeclarativeErrorC2Ev @ 172 NONAME + _ZN17QDeclarativeErrorD1Ev @ 173 NONAME + _ZN17QDeclarativeErrorD2Ev @ 174 NONAME + _ZN17QDeclarativeErroraSERKS_ @ 175 NONAME + _ZN17QDeclarativeState10setExtendsERK7QString @ 176 NONAME + _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 177 NONAME + _ZN17QDeclarativeState11qt_metacastEPKc @ 178 NONAME + _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 179 NONAME + _ZN17QDeclarativeState16staticMetaObjectE @ 180 NONAME DATA 16 + _ZN17QDeclarativeState19getStaticMetaObjectEv @ 181 NONAME + _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 182 NONAME + _ZN17QDeclarativeState6cancelEv @ 183 NONAME + _ZN17QDeclarativeState7changesEv @ 184 NONAME + _ZN17QDeclarativeState7setNameERK7QString @ 185 NONAME + _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 186 NONAME + _ZN17QDeclarativeState9completedEv @ 187 NONAME + _ZN17QDeclarativeStateC1EP7QObject @ 188 NONAME + _ZN17QDeclarativeStateC2EP7QObject @ 189 NONAME + _ZN17QDeclarativeStateD0Ev @ 190 NONAME + _ZN17QDeclarativeStateD1Ev @ 191 NONAME + _ZN17QDeclarativeStateD2Ev @ 192 NONAME + _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 193 NONAME + _ZN18QDeclarativeAction17deleteFromBindingEv @ 194 NONAME + _ZN18QDeclarativeActionC1EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 195 NONAME + _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 196 NONAME + _ZN18QDeclarativeActionC1Ev @ 197 NONAME + _ZN18QDeclarativeActionC2EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 198 NONAME + _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 199 NONAME + _ZN18QDeclarativeActionC2Ev @ 200 NONAME + _ZN18QDeclarativeEngine10setBaseUrlERK4QUrl @ 201 NONAME + _ZN18QDeclarativeEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 202 NONAME + _ZN18QDeclarativeEngine11qt_metacastEPKc @ 203 NONAME + _ZN18QDeclarativeEngine11rootContextEv @ 204 NONAME + _ZN18QDeclarativeEngine12importPluginERK7QStringS2_PS0_ @ 205 NONAME + _ZN18QDeclarativeEngine13addImportPathERK7QString @ 206 NONAME + _ZN18QDeclarativeEngine13addPluginPathERK7QString @ 207 NONAME + _ZN18QDeclarativeEngine15objectOwnershipEP7QObject @ 208 NONAME + _ZN18QDeclarativeEngine16addImageProviderERK7QStringP25QDeclarativeImageProvider @ 209 NONAME + _ZN18QDeclarativeEngine16contextForObjectEPK7QObject @ 210 NONAME + _ZN18QDeclarativeEngine16staticMetaObjectE @ 211 NONAME DATA 16 + _ZN18QDeclarativeEngine17setImportPathListERK11QStringList @ 212 NONAME + _ZN18QDeclarativeEngine17setPluginPathListERK11QStringList @ 213 NONAME + _ZN18QDeclarativeEngine18setObjectOwnershipEP7QObjectNS_15ObjectOwnershipE @ 214 NONAME + _ZN18QDeclarativeEngine19clearComponentCacheEv @ 215 NONAME + _ZN18QDeclarativeEngine19getStaticMetaObjectEv @ 216 NONAME + _ZN18QDeclarativeEngine19removeImageProviderERK7QString @ 217 NONAME + _ZN18QDeclarativeEngine19setContextForObjectEP7QObjectP19QDeclarativeContext @ 218 NONAME + _ZN18QDeclarativeEngine21setOfflineStoragePathERK7QString @ 219 NONAME + _ZN18QDeclarativeEngine30setNetworkAccessManagerFactoryEP39QDeclarativeNetworkAccessManagerFactory @ 220 NONAME + _ZN18QDeclarativeEngine32setOutputWarningsToStandardErrorEb @ 221 NONAME + _ZN18QDeclarativeEngine4quitEv @ 222 NONAME + _ZN18QDeclarativeEngine8warningsERK5QListI17QDeclarativeErrorE @ 223 NONAME + _ZN18QDeclarativeEngineC1EP7QObject @ 224 NONAME + _ZN18QDeclarativeEngineC2EP7QObject @ 225 NONAME + _ZN18QDeclarativeEngineD0Ev @ 226 NONAME + _ZN18QDeclarativeEngineD1Ev @ 227 NONAME + _ZN18QDeclarativeEngineD2Ev @ 228 NONAME + _ZN18QDeclarativeParser7VariantC1ERK7QString @ 229 NONAME + _ZN18QDeclarativeParser7VariantC1ERK7QStringPN14QDeclarativeJS3AST4NodeE @ 230 NONAME + _ZN18QDeclarativeParser7VariantC1ERKS0_ @ 231 NONAME + _ZN18QDeclarativeParser7VariantC1Eb @ 232 NONAME + _ZN18QDeclarativeParser7VariantC1EdRK7QString @ 233 NONAME + _ZN18QDeclarativeParser7VariantC1Ev @ 234 NONAME + _ZN18QDeclarativeParser7VariantC2ERK7QString @ 235 NONAME + _ZN18QDeclarativeParser7VariantC2ERK7QStringPN14QDeclarativeJS3AST4NodeE @ 236 NONAME + _ZN18QDeclarativeParser7VariantC2ERKS0_ @ 237 NONAME + _ZN18QDeclarativeParser7VariantC2Eb @ 238 NONAME + _ZN18QDeclarativeParser7VariantC2EdRK7QString @ 239 NONAME + _ZN18QDeclarativeParser7VariantC2Ev @ 240 NONAME + _ZN18QDeclarativeParser7VariantaSERKS0_ @ 241 NONAME + _ZN18QMetaMethodBuilder13setAttributesEi @ 242 NONAME + _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 243 NONAME + _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 244 NONAME + _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 245 NONAME + _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 246 NONAME + _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 247 NONAME + _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 248 NONAME + _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 249 NONAME + _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 250 NONAME + _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 251 NONAME + _ZN18QMetaObjectBuilder12removeMethodEi @ 252 NONAME + _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 253 NONAME + _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 254 NONAME + _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 255 NONAME + _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 256 NONAME + _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 257 NONAME + _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 258 NONAME + _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 259 NONAME + _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 260 NONAME + _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 261 NONAME + _ZN18QMetaObjectBuilder14removePropertyEi @ 262 NONAME + _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 263 NONAME + _ZN18QMetaObjectBuilder15removeClassInfoEi @ 264 NONAME + _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 265 NONAME + _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 266 NONAME + _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 267 NONAME + _ZN18QMetaObjectBuilder17removeConstructorEi @ 268 NONAME + _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 269 NONAME + _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 270 NONAME + _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 271 NONAME + _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 272 NONAME + _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 273 NONAME + _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 274 NONAME + _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 275 NONAME + _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 276 NONAME + _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 277 NONAME + _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 278 NONAME + _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 279 NONAME + _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 280 NONAME + _ZN18QMetaObjectBuilderC1Ev @ 281 NONAME + _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 282 NONAME + _ZN18QMetaObjectBuilderC2Ev @ 283 NONAME + _ZN18QMetaObjectBuilderD0Ev @ 284 NONAME + _ZN18QMetaObjectBuilderD1Ev @ 285 NONAME + _ZN18QMetaObjectBuilderD2Ev @ 286 NONAME + _ZN19QDeclarativeAnchors10classBeginEv @ 287 NONAME + _ZN19QDeclarativeAnchors10resetRightEv @ 288 NONAME + _ZN19QDeclarativeAnchors10setMarginsEf @ 289 NONAME + _ZN19QDeclarativeAnchors10topChangedEv @ 290 NONAME + _ZN19QDeclarativeAnchors11fillChangedEv @ 291 NONAME + _ZN19QDeclarativeAnchors11leftChangedEv @ 292 NONAME + _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 293 NONAME + _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 294 NONAME + _ZN19QDeclarativeAnchors11resetBottomEv @ 295 NONAME + _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 296 NONAME + _ZN19QDeclarativeAnchors11setCenterInEP15QGraphicsObject @ 297 NONAME + _ZN19QDeclarativeAnchors12rightChangedEv @ 298 NONAME + _ZN19QDeclarativeAnchors12setTopMarginEf @ 299 NONAME + _ZN19QDeclarativeAnchors13bottomChangedEv @ 300 NONAME + _ZN19QDeclarativeAnchors13resetBaselineEv @ 301 NONAME + _ZN19QDeclarativeAnchors13resetCenterInEv @ 302 NONAME + _ZN19QDeclarativeAnchors13setLeftMarginEf @ 303 NONAME + _ZN19QDeclarativeAnchors14marginsChangedEv @ 304 NONAME + _ZN19QDeclarativeAnchors14setRightMarginEf @ 305 NONAME + _ZN19QDeclarativeAnchors15baselineChangedEv @ 306 NONAME + _ZN19QDeclarativeAnchors15centerInChangedEv @ 307 NONAME + _ZN19QDeclarativeAnchors15setBottomMarginEf @ 308 NONAME + _ZN19QDeclarativeAnchors16staticMetaObjectE @ 309 NONAME DATA 16 + _ZN19QDeclarativeAnchors16topMarginChangedEv @ 310 NONAME + _ZN19QDeclarativeAnchors17componentCompleteEv @ 311 NONAME + _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 312 NONAME + _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 313 NONAME + _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 314 NONAME + _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 315 NONAME + _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 316 NONAME + _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 317 NONAME + _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 318 NONAME + _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 319 NONAME + _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 320 NONAME + _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 321 NONAME + _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 322 NONAME + _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 323 NONAME + _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 324 NONAME + _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 325 NONAME + _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 326 NONAME + _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 327 NONAME + _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 328 NONAME + _ZN19QDeclarativeAnchors7setFillEP15QGraphicsObject @ 329 NONAME + _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 330 NONAME + _ZN19QDeclarativeAnchors8resetTopEv @ 331 NONAME + _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 332 NONAME + _ZN19QDeclarativeAnchors9resetFillEv @ 333 NONAME + _ZN19QDeclarativeAnchors9resetLeftEv @ 334 NONAME + _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 335 NONAME + _ZN19QDeclarativeAnchorsC1EP15QGraphicsObjectP7QObject @ 336 NONAME + _ZN19QDeclarativeAnchorsC1EP7QObject @ 337 NONAME + _ZN19QDeclarativeAnchorsC2EP15QGraphicsObjectP7QObject @ 338 NONAME + _ZN19QDeclarativeAnchorsC2EP7QObject @ 339 NONAME + _ZN19QDeclarativeAnchorsD0Ev @ 340 NONAME + _ZN19QDeclarativeAnchorsD1Ev @ 341 NONAME + _ZN19QDeclarativeAnchorsD2Ev @ 342 NONAME + _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 343 NONAME + _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 344 NONAME + _ZN19QDeclarativeBinding11qt_metacastEPKc @ 345 NONAME + _ZN19QDeclarativeBinding13propertyIndexEv @ 346 NONAME + _ZN19QDeclarativeBinding16staticMetaObjectE @ 347 NONAME DATA 16 + _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 348 NONAME + _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 349 NONAME + _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 350 NONAME + _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 351 NONAME + _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 352 NONAME + _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 353 NONAME + _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 354 NONAME + _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 355 NONAME + _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 356 NONAME + _ZN19QDeclarativeBindingD0Ev @ 357 NONAME + _ZN19QDeclarativeBindingD1Ev @ 358 NONAME + _ZN19QDeclarativeBindingD2Ev @ 359 NONAME + _ZN19QDeclarativeContext10setBaseUrlERK4QUrl @ 360 NONAME + _ZN19QDeclarativeContext11qt_metacallEN11QMetaObject4CallEiPPv @ 361 NONAME + _ZN19QDeclarativeContext11qt_metacastEPKc @ 362 NONAME + _ZN19QDeclarativeContext11resolvedUrlERK4QUrl @ 363 NONAME + _ZN19QDeclarativeContext16setContextObjectEP7QObject @ 364 NONAME + _ZN19QDeclarativeContext16staticMetaObjectE @ 365 NONAME DATA 16 + _ZN19QDeclarativeContext18setContextPropertyERK7QStringP7QObject @ 366 NONAME + _ZN19QDeclarativeContext18setContextPropertyERK7QStringRK8QVariant @ 367 NONAME + _ZN19QDeclarativeContext19getStaticMetaObjectEv @ 368 NONAME + _ZN19QDeclarativeContextC1EP18QDeclarativeEngineP7QObject @ 369 NONAME + _ZN19QDeclarativeContextC1EP18QDeclarativeEngineb @ 370 NONAME + _ZN19QDeclarativeContextC1EP23QDeclarativeContextData @ 371 NONAME + _ZN19QDeclarativeContextC1EPS_P7QObject @ 372 NONAME + _ZN19QDeclarativeContextC2EP18QDeclarativeEngineP7QObject @ 373 NONAME + _ZN19QDeclarativeContextC2EP18QDeclarativeEngineb @ 374 NONAME + _ZN19QDeclarativeContextC2EP23QDeclarativeContextData @ 375 NONAME + _ZN19QDeclarativeContextC2EPS_P7QObject @ 376 NONAME + _ZN19QDeclarativeContextD0Ev @ 377 NONAME + _ZN19QDeclarativeContextD1Ev @ 378 NONAME + _ZN19QDeclarativeContextD2Ev @ 379 NONAME + _ZN19QDeclarativeDomListC1ERKS_ @ 380 NONAME + _ZN19QDeclarativeDomListC1Ev @ 381 NONAME + _ZN19QDeclarativeDomListC2ERKS_ @ 382 NONAME + _ZN19QDeclarativeDomListC2Ev @ 383 NONAME + _ZN19QDeclarativeDomListD1Ev @ 384 NONAME + _ZN19QDeclarativeDomListD2Ev @ 385 NONAME + _ZN19QDeclarativeDomListaSERKS_ @ 386 NONAME + _ZN19QDeclarativePrivate12registerTypeERKNS_12RegisterTypeE @ 387 NONAME + _ZN19QDeclarativePrivate12registerTypeERKNS_17RegisterInterfaceE @ 388 NONAME + _ZN19QDeclarativePrivate26registerAutoParentFunctionEPFNS_16AutoParentResultEP7QObjectS2_E @ 389 NONAME + _ZN19QDeclarativePrivate30qdeclarativeelement_destructorEP7QObject @ 390 NONAME + _ZN19QListModelInterface10itemsMovedEiii @ 391 NONAME + _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 392 NONAME + _ZN19QListModelInterface11qt_metacastEPKc @ 393 NONAME + _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 394 NONAME + _ZN19QListModelInterface12itemsRemovedEii @ 395 NONAME + _ZN19QListModelInterface13itemsInsertedEii @ 396 NONAME + _ZN19QListModelInterface16staticMetaObjectE @ 397 NONAME DATA 16 + _ZN19QListModelInterface19getStaticMetaObjectEv @ 398 NONAME + _ZN20QDeclarativeBehavior10setEnabledEb @ 399 NONAME + _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 400 NONAME + _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 401 NONAME + _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 402 NONAME + _ZN20QDeclarativeBehavior14enabledChangedEv @ 403 NONAME + _ZN20QDeclarativeBehavior16staticMetaObjectE @ 404 NONAME DATA 16 + _ZN20QDeclarativeBehavior18componentFinalizedEv @ 405 NONAME + _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 406 NONAME + _ZN20QDeclarativeBehavior5writeERK8QVariant @ 407 NONAME + _ZN20QDeclarativeBehavior9animationEv @ 408 NONAME + _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 409 NONAME + _ZN20QDeclarativeBehaviorC1EP7QObject @ 410 NONAME + _ZN20QDeclarativeBehaviorC2EP7QObject @ 411 NONAME + _ZN20QDeclarativeBehaviorD0Ev @ 412 NONAME + _ZN20QDeclarativeBehaviorD1Ev @ 413 NONAME + _ZN20QDeclarativeBehaviorD2Ev @ 414 NONAME + _ZN20QDeclarativeDomValueC1ERKS_ @ 415 NONAME + _ZN20QDeclarativeDomValueC1Ev @ 416 NONAME + _ZN20QDeclarativeDomValueC2ERKS_ @ 417 NONAME + _ZN20QDeclarativeDomValueC2Ev @ 418 NONAME + _ZN20QDeclarativeDomValueD1Ev @ 419 NONAME + _ZN20QDeclarativeDomValueD2Ev @ 420 NONAME + _ZN20QDeclarativeDomValueaSERKS_ @ 421 NONAME + _ZN20QDeclarativeMetaType11isInterfaceEi @ 422 NONAME + _ZN20QDeclarativeMetaType12interfaceIIdEi @ 423 NONAME + _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 424 NONAME + _ZN20QDeclarativeMetaType12typeCategoryEi @ 425 NONAME + _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 426 NONAME + _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 427 NONAME + _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 428 NONAME + _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 429 NONAME + _ZN20QDeclarativeMetaType15parentFunctionsEv @ 430 NONAME + _ZN20QDeclarativeMetaType21customStringConverterEi @ 431 NONAME + _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 432 NONAME + _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 433 NONAME + _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 434 NONAME + _ZN20QDeclarativeMetaType4copyEiPvPKv @ 435 NONAME + _ZN20QDeclarativeMetaType6isListEi @ 436 NONAME + _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 437 NONAME + _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 438 NONAME + _ZN20QDeclarativeMetaType7qmlTypeEi @ 439 NONAME + _ZN20QDeclarativeMetaType8isModuleERK10QByteArrayii @ 440 NONAME + _ZN20QDeclarativeMetaType8listTypeEi @ 441 NONAME + _ZN20QDeclarativeMetaType8qmlTypesEv @ 442 NONAME + _ZN20QDeclarativeMetaType9isQObjectEi @ 443 NONAME + _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 444 NONAME + _ZN20QDeclarativeProperty4readEP7QObjectRK7QString @ 445 NONAME + _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP18QDeclarativeEngine @ 446 NONAME + _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP19QDeclarativeContext @ 447 NONAME + _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariant @ 448 NONAME + _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP18QDeclarativeEngine @ 449 NONAME + _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP19QDeclarativeContext @ 450 NONAME + _ZN20QDeclarativePropertyC1EP7QObject @ 451 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectP18QDeclarativeEngine @ 452 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectP19QDeclarativeContext @ 453 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectRK7QString @ 454 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP18QDeclarativeEngine @ 455 NONAME + _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP19QDeclarativeContext @ 456 NONAME + _ZN20QDeclarativePropertyC1ERKS_ @ 457 NONAME + _ZN20QDeclarativePropertyC1Ev @ 458 NONAME + _ZN20QDeclarativePropertyC2EP7QObject @ 459 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectP18QDeclarativeEngine @ 460 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectP19QDeclarativeContext @ 461 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectRK7QString @ 462 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP18QDeclarativeEngine @ 463 NONAME + _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP19QDeclarativeContext @ 464 NONAME + _ZN20QDeclarativePropertyC2ERKS_ @ 465 NONAME + _ZN20QDeclarativePropertyC2Ev @ 466 NONAME + _ZN20QDeclarativePropertyD1Ev @ 467 NONAME + _ZN20QDeclarativePropertyD2Ev @ 468 NONAME + _ZN20QDeclarativePropertyaSERKS_ @ 469 NONAME + _ZN20QMetaPropertyBuilder10setDynamicEb @ 470 NONAME + _ZN20QMetaPropertyBuilder11setEditableEb @ 471 NONAME + _ZN20QMetaPropertyBuilder11setReadableEb @ 472 NONAME + _ZN20QMetaPropertyBuilder11setWritableEb @ 473 NONAME + _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 474 NONAME + _ZN20QMetaPropertyBuilder13setDesignableEb @ 475 NONAME + _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 476 NONAME + _ZN20QMetaPropertyBuilder13setResettableEb @ 477 NONAME + _ZN20QMetaPropertyBuilder13setScriptableEb @ 478 NONAME + _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 479 NONAME + _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 480 NONAME + _ZN20QMetaPropertyBuilder7setUserEb @ 481 NONAME + _ZN20QMetaPropertyBuilder9setStoredEb @ 482 NONAME + _ZN21QDeclarativeComponent11beginCreateEP19QDeclarativeContext @ 483 NONAME + _ZN21QDeclarativeComponent11qt_metacallEN11QMetaObject4CallEiPPv @ 484 NONAME + _ZN21QDeclarativeComponent11qt_metacastEPKc @ 485 NONAME + _ZN21QDeclarativeComponent12createObjectEP7QObject @ 486 NONAME + _ZN21QDeclarativeComponent13statusChangedENS_6StatusE @ 487 NONAME + _ZN21QDeclarativeComponent14completeCreateEv @ 488 NONAME + _ZN21QDeclarativeComponent15progressChangedEf @ 489 NONAME + _ZN21QDeclarativeComponent16staticMetaObjectE @ 490 NONAME DATA 16 + _ZN21QDeclarativeComponent19getStaticMetaObjectEv @ 491 NONAME + _ZN21QDeclarativeComponent21qmlAttachedPropertiesEP7QObject @ 492 NONAME + _ZN21QDeclarativeComponent6createEP19QDeclarativeContext @ 493 NONAME + _ZN21QDeclarativeComponent7loadUrlERK4QUrl @ 494 NONAME + _ZN21QDeclarativeComponent7setDataERK10QByteArrayRK4QUrl @ 495 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 496 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP7QObject @ 497 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK4QUrlP7QObject @ 498 NONAME + _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK7QStringP7QObject @ 499 NONAME + _ZN21QDeclarativeComponentC1EP7QObject @ 500 NONAME + _ZN21QDeclarativeComponentC1ER28QDeclarativeComponentPrivateP7QObject @ 501 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 502 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP7QObject @ 503 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK4QUrlP7QObject @ 504 NONAME + _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK7QStringP7QObject @ 505 NONAME + _ZN21QDeclarativeComponentC2EP7QObject @ 506 NONAME + _ZN21QDeclarativeComponentC2ER28QDeclarativeComponentPrivateP7QObject @ 507 NONAME + _ZN21QDeclarativeComponentD0Ev @ 508 NONAME + _ZN21QDeclarativeComponentD1Ev @ 509 NONAME + _ZN21QDeclarativeComponentD2Ev @ 510 NONAME + _ZN21QDeclarativeDomImportC1ERKS_ @ 511 NONAME + _ZN21QDeclarativeDomImportC1Ev @ 512 NONAME + _ZN21QDeclarativeDomImportC2ERKS_ @ 513 NONAME + _ZN21QDeclarativeDomImportC2Ev @ 514 NONAME + _ZN21QDeclarativeDomImportD1Ev @ 515 NONAME + _ZN21QDeclarativeDomImportD2Ev @ 516 NONAME + _ZN21QDeclarativeDomImportaSERKS_ @ 517 NONAME + _ZN21QDeclarativeDomObjectC1ERKS_ @ 518 NONAME + _ZN21QDeclarativeDomObjectC1Ev @ 519 NONAME + _ZN21QDeclarativeDomObjectC2ERKS_ @ 520 NONAME + _ZN21QDeclarativeDomObjectC2Ev @ 521 NONAME + _ZN21QDeclarativeDomObjectD1Ev @ 522 NONAME + _ZN21QDeclarativeDomObjectD2Ev @ 523 NONAME + _ZN21QDeclarativeDomObjectaSERKS_ @ 524 NONAME + _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 525 NONAME + _ZN21QDeclarativeListModel11qt_metacastEPKc @ 526 NONAME + _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 527 NONAME + _ZN21QDeclarativeListModel12countChangedEv @ 528 NONAME + _ZN21QDeclarativeListModel16staticMetaObjectE @ 529 NONAME DATA 16 + _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 530 NONAME + _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 531 NONAME + _ZN21QDeclarativeListModel4moveEiii @ 532 NONAME + _ZN21QDeclarativeListModel4syncEv @ 533 NONAME + _ZN21QDeclarativeListModel5agentEv @ 534 NONAME + _ZN21QDeclarativeListModel5clearEv @ 535 NONAME + _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 536 NONAME + _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 537 NONAME + _ZN21QDeclarativeListModel6removeEi @ 538 NONAME + _ZN21QDeclarativeListModel7flattenEv @ 539 NONAME + _ZN21QDeclarativeListModelC1EP7QObject @ 540 NONAME + _ZN21QDeclarativeListModelC1EbP7QObject @ 541 NONAME + _ZN21QDeclarativeListModelC2EP7QObject @ 542 NONAME + _ZN21QDeclarativeListModelC2EbP7QObject @ 543 NONAME + _ZN21QDeclarativeListModelD0Ev @ 544 NONAME + _ZN21QDeclarativeListModelD1Ev @ 545 NONAME + _ZN21QDeclarativeListModelD2Ev @ 546 NONAME + _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 547 NONAME + _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 548 NONAME + _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 549 NONAME + _ZN21QDeclarativeRectangle12colorChangedEv @ 550 NONAME + _ZN21QDeclarativeRectangle13radiusChangedEv @ 551 NONAME + _ZN21QDeclarativeRectangle16staticMetaObjectE @ 552 NONAME DATA 16 + _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 553 NONAME + _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 554 NONAME + _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 555 NONAME + _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 556 NONAME + _ZN21QDeclarativeRectangle6borderEv @ 557 NONAME + _ZN21QDeclarativeRectangle8doUpdateEv @ 558 NONAME + _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 559 NONAME + _ZN21QDeclarativeRectangle8setColorERK6QColor @ 560 NONAME + _ZN21QDeclarativeRectangle9setRadiusEf @ 561 NONAME + _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 562 NONAME + _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 563 NONAME + _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 564 NONAME + _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 565 NONAME + _ZN21QDeclarativeScaleGrid13borderChangedEv @ 566 NONAME + _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 567 NONAME DATA 16 + _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 568 NONAME + _ZN21QDeclarativeScaleGrid6setTopEi @ 569 NONAME + _ZN21QDeclarativeScaleGrid7setLeftEi @ 570 NONAME + _ZN21QDeclarativeScaleGrid8setRightEi @ 571 NONAME + _ZN21QDeclarativeScaleGrid9setBottomEi @ 572 NONAME + _ZN21QDeclarativeScaleGridC1EP7QObject @ 573 NONAME + _ZN21QDeclarativeScaleGridC2EP7QObject @ 574 NONAME + _ZN21QDeclarativeScaleGridD0Ev @ 575 NONAME + _ZN21QDeclarativeScaleGridD1Ev @ 576 NONAME + _ZN21QDeclarativeScaleGridD2Ev @ 577 NONAME + _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 578 NONAME + _ZN21QDeclarativeValueType11qt_metacastEPKc @ 579 NONAME + _ZN21QDeclarativeValueType16staticMetaObjectE @ 580 NONAME DATA 16 + _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 581 NONAME + _ZN21QDeclarativeValueTypeC2EP7QObject @ 582 NONAME + _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 583 NONAME + _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 584 NONAME + _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 585 NONAME + _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 586 NONAME DATA 16 + _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 587 NONAME + _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 588 NONAME + _ZN22QDeclarativeDebugQueryC1EP7QObject @ 589 NONAME + _ZN22QDeclarativeDebugQueryC2EP7QObject @ 590 NONAME + _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 591 NONAME + _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 592 NONAME + _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 593 NONAME + _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 594 NONAME + _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 595 NONAME DATA 16 + _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 596 NONAME + _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 597 NONAME + _ZN22QDeclarativeDebugWatchC1EP7QObject @ 598 NONAME + _ZN22QDeclarativeDebugWatchC2EP7QObject @ 599 NONAME + _ZN22QDeclarativeDebugWatchD0Ev @ 600 NONAME + _ZN22QDeclarativeDebugWatchD1Ev @ 601 NONAME + _ZN22QDeclarativeDebugWatchD2Ev @ 602 NONAME + _ZN22QDeclarativeExpression10clearErrorEv @ 603 NONAME + _ZN22QDeclarativeExpression11qt_metacallEN11QMetaObject4CallEiPPv @ 604 NONAME + _ZN22QDeclarativeExpression11qt_metacastEPKc @ 605 NONAME + _ZN22QDeclarativeExpression12valueChangedEv @ 606 NONAME + _ZN22QDeclarativeExpression13setExpressionERK7QString @ 607 NONAME + _ZN22QDeclarativeExpression16staticMetaObjectE @ 608 NONAME DATA 16 + _ZN22QDeclarativeExpression17setSourceLocationERK7QStringi @ 609 NONAME + _ZN22QDeclarativeExpression19getStaticMetaObjectEv @ 610 NONAME + _ZN22QDeclarativeExpression23setNotifyOnValueChangedEb @ 611 NONAME + _ZN22QDeclarativeExpression8evaluateEPb @ 612 NONAME + _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 613 NONAME + _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QString @ 614 NONAME + _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 615 NONAME + _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 616 NONAME + _ZN22QDeclarativeExpressionC1Ev @ 617 NONAME + _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextP7QObjectRK7QStringS3_ @ 618 NONAME + _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataP7QObjectRK7QString @ 619 NONAME + _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataP7QObjectRK7QStringR29QDeclarativeExpressionPrivate @ 620 NONAME + _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 621 NONAME + _ZN22QDeclarativeExpressionC2Ev @ 622 NONAME + _ZN22QDeclarativeExpressionD0Ev @ 623 NONAME + _ZN22QDeclarativeExpressionD1Ev @ 624 NONAME + _ZN22QDeclarativeExpressionD2Ev @ 625 NONAME + _ZN22QDeclarativeStateGroup10classBeginEv @ 626 NONAME + _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 627 NONAME + _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 628 NONAME + _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 629 NONAME + _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 630 NONAME + _ZN22QDeclarativeStateGroup14statesPropertyEv @ 631 NONAME + _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 632 NONAME + _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 633 NONAME DATA 16 + _ZN22QDeclarativeStateGroup17componentCompleteEv @ 634 NONAME + _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 635 NONAME + _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 636 NONAME + _ZN22QDeclarativeStateGroup8setStateERK7QString @ 637 NONAME + _ZN22QDeclarativeStateGroupC1EP7QObject @ 638 NONAME + _ZN22QDeclarativeStateGroupC2EP7QObject @ 639 NONAME + _ZN22QDeclarativeStateGroupD0Ev @ 640 NONAME + _ZN22QDeclarativeStateGroupD1Ev @ 641 NONAME + _ZN22QDeclarativeStateGroupD2Ev @ 642 NONAME + _ZN22QDeclarativeTransition10animationsEv @ 643 NONAME + _ZN22QDeclarativeTransition10setToStateERK7QString @ 644 NONAME + _ZN22QDeclarativeTransition11fromChangedEv @ 645 NONAME + _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 646 NONAME + _ZN22QDeclarativeTransition11qt_metacastEPKc @ 647 NONAME + _ZN22QDeclarativeTransition11setReversedEb @ 648 NONAME + _ZN22QDeclarativeTransition12setFromStateERK7QString @ 649 NONAME + _ZN22QDeclarativeTransition13setReversibleEb @ 650 NONAME + _ZN22QDeclarativeTransition16staticMetaObjectE @ 651 NONAME DATA 16 + _ZN22QDeclarativeTransition17reversibleChangedEv @ 652 NONAME + _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 653 NONAME + _ZN22QDeclarativeTransition4stopEv @ 654 NONAME + _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 655 NONAME + _ZN22QDeclarativeTransition9toChangedEv @ 656 NONAME + _ZN22QDeclarativeTransitionC1EP7QObject @ 657 NONAME + _ZN22QDeclarativeTransitionC2EP7QObject @ 658 NONAME + _ZN22QDeclarativeTransitionD0Ev @ 659 NONAME + _ZN22QDeclarativeTransitionD1Ev @ 660 NONAME + _ZN22QDeclarativeTransitionD2Ev @ 661 NONAME + _ZN23QDeclarativeDebugClient10setEnabledEb @ 662 NONAME + _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 663 NONAME + _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 664 NONAME + _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 665 NONAME + _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 666 NONAME + _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 667 NONAME DATA 16 + _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 668 NONAME + _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 669 NONAME + _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 670 NONAME + _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 671 NONAME + _ZN23QDeclarativeDomDocumentC1ERKS_ @ 672 NONAME + _ZN23QDeclarativeDomDocumentC1Ev @ 673 NONAME + _ZN23QDeclarativeDomDocumentC2ERKS_ @ 674 NONAME + _ZN23QDeclarativeDomDocumentC2Ev @ 675 NONAME + _ZN23QDeclarativeDomDocumentD1Ev @ 676 NONAME + _ZN23QDeclarativeDomDocumentD2Ev @ 677 NONAME + _ZN23QDeclarativeDomDocumentaSERKS_ @ 678 NONAME + _ZN23QDeclarativeDomPropertyC1ERKS_ @ 679 NONAME + _ZN23QDeclarativeDomPropertyC1Ev @ 680 NONAME + _ZN23QDeclarativeDomPropertyC2ERKS_ @ 681 NONAME + _ZN23QDeclarativeDomPropertyC2Ev @ 682 NONAME + _ZN23QDeclarativeDomPropertyD1Ev @ 683 NONAME + _ZN23QDeclarativeDomPropertyD2Ev @ 684 NONAME + _ZN23QDeclarativeDomPropertyaSERKS_ @ 685 NONAME + _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 686 NONAME + _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 687 NONAME + _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 688 NONAME + _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 689 NONAME + _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 690 NONAME DATA 16 + _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 691 NONAME + _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 692 NONAME + _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantbP7QObject @ 693 NONAME + _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 694 NONAME + _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 695 NONAME + _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 696 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 697 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 698 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 699 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 700 NONAME + _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 701 NONAME + _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 702 NONAME + _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 703 NONAME + _ZN23QDeclarativeItemPrivate10resetWidthEv @ 704 NONAME + _ZN23QDeclarativeItemPrivate11data_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 705 NONAME + _ZN23QDeclarativeItemPrivate11resetHeightEv @ 706 NONAME + _ZN23QDeclarativeItemPrivate11transitionsEv @ 707 NONAME + _ZN23QDeclarativeItemPrivate12focusChangedEb @ 708 NONAME + _ZN23QDeclarativeItemPrivate12resources_atEP24QDeclarativeListPropertyI7QObjectEi @ 709 NONAME + _ZN23QDeclarativeItemPrivate12transform_atEP24QDeclarativeListPropertyI18QGraphicsTransformEi @ 710 NONAME + _ZN23QDeclarativeItemPrivate14consistentTimeE @ 711 NONAME DATA 8 + _ZN23QDeclarativeItemPrivate14parentPropertyEP7QObjectPvP28QDeclarativeNotifierEndpoint @ 712 NONAME + _ZN23QDeclarativeItemPrivate15resources_countEP24QDeclarativeListPropertyI7QObjectE @ 713 NONAME + _ZN23QDeclarativeItemPrivate15transform_clearEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 714 NONAME + _ZN23QDeclarativeItemPrivate15transform_countEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 715 NONAME + _ZN23QDeclarativeItemPrivate16resources_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 716 NONAME + _ZN23QDeclarativeItemPrivate16transformChangedEv @ 717 NONAME + _ZN23QDeclarativeItemPrivate16transform_appendEP24QDeclarativeListPropertyI18QGraphicsTransformEPS1_ @ 718 NONAME + _ZN23QDeclarativeItemPrivate17setConsistentTimeEx @ 719 NONAME + _ZN23QDeclarativeItemPrivate24removeItemChangeListenerEP30QDeclarativeItemChangeListener6QFlagsINS_10ChangeTypeEE @ 720 NONAME + _ZN23QDeclarativeItemPrivate4dataEv @ 721 NONAME + _ZN23QDeclarativeItemPrivate5startER13QElapsedTimer @ 722 NONAME + _ZN23QDeclarativeItemPrivate6statesEv @ 723 NONAME + _ZN23QDeclarativeItemPrivate7_statesEv @ 724 NONAME + _ZN23QDeclarativeItemPrivate7elapsedER13QElapsedTimer @ 725 NONAME + _ZN23QDeclarativeItemPrivate7restartER13QElapsedTimer @ 726 NONAME + _ZN23QDeclarativeItemPrivate8setStateERK7QString @ 727 NONAME + _ZN23QDeclarativeItemPrivate8setWidthEf @ 728 NONAME + _ZN23QDeclarativeItemPrivate9resourcesEv @ 729 NONAME + _ZN23QDeclarativeItemPrivate9setHeightEf @ 730 NONAME + _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 731 NONAME ABSENT + _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapP7QStringP5QSizebii @ 732 NONAME ABSENT + _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 733 NONAME ABSENT + _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrlii @ 734 NONAME ABSENT + _ZN23QDeclarativePixmapReply10setLoadingEv @ 735 NONAME ABSENT + _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 736 NONAME ABSENT + _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 737 NONAME ABSENT + _ZN23QDeclarativePixmapReply16downloadProgressExx @ 738 NONAME ABSENT + _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 739 NONAME DATA 16 ABSENT + _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 740 NONAME ABSENT + _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 741 NONAME ABSENT + _ZN23QDeclarativePixmapReply6addRefEv @ 742 NONAME ABSENT + _ZN23QDeclarativePixmapReply7releaseEb @ 743 NONAME ABSENT + _ZN23QDeclarativePixmapReply8finishedEv @ 744 NONAME ABSENT + _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrlii @ 745 NONAME ABSENT + _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrlii @ 746 NONAME ABSENT + _ZN23QDeclarativePixmapReplyD0Ev @ 747 NONAME ABSENT + _ZN23QDeclarativePixmapReplyD1Ev @ 748 NONAME ABSENT + _ZN23QDeclarativePixmapReplyD2Ev @ 749 NONAME ABSENT + _ZN23QDeclarativePropertyMap11qt_metacallEN11QMetaObject4CallEiPPv @ 750 NONAME + _ZN23QDeclarativePropertyMap11qt_metacastEPKc @ 751 NONAME + _ZN23QDeclarativePropertyMap12valueChangedERK7QStringRK8QVariant @ 752 NONAME + _ZN23QDeclarativePropertyMap16staticMetaObjectE @ 753 NONAME DATA 16 + _ZN23QDeclarativePropertyMap19getStaticMetaObjectEv @ 754 NONAME + _ZN23QDeclarativePropertyMap5clearERK7QString @ 755 NONAME + _ZN23QDeclarativePropertyMap6insertERK7QStringRK8QVariant @ 756 NONAME + _ZN23QDeclarativePropertyMapC1EP7QObject @ 757 NONAME + _ZN23QDeclarativePropertyMapC2EP7QObject @ 758 NONAME + _ZN23QDeclarativePropertyMapD0Ev @ 759 NONAME + _ZN23QDeclarativePropertyMapD1Ev @ 760 NONAME + _ZN23QDeclarativePropertyMapD2Ev @ 761 NONAME + _ZN23QDeclarativePropertyMapixERK7QString @ 762 NONAME + _ZN24QDeclarativeCustomParser11clearErrorsEv @ 763 NONAME + _ZN24QDeclarativeCustomParser5errorERK28QDeclarativeCustomParserNodeRK7QString @ 764 NONAME + _ZN24QDeclarativeCustomParser5errorERK32QDeclarativeCustomParserPropertyRK7QString @ 765 NONAME + _ZN24QDeclarativeCustomParser5errorERK7QString @ 766 NONAME + _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 767 NONAME + _ZN24QDeclarativeDebugService11objectForIdEi @ 768 NONAME + _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 769 NONAME + _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 770 NONAME + _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 771 NONAME + _ZN24QDeclarativeDebugService14enabledChangedEb @ 772 NONAME + _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 773 NONAME + _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 774 NONAME + _ZN24QDeclarativeDebugService16staticMetaObjectE @ 775 NONAME DATA 16 + _ZN24QDeclarativeDebugService18hasDebuggingClientEv @ 776 NONAME + _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 777 NONAME + _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 778 NONAME + _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 779 NONAME + _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 780 NONAME + _ZN24QDeclarativeDomComponentC1ERKS_ @ 781 NONAME + _ZN24QDeclarativeDomComponentC1Ev @ 782 NONAME + _ZN24QDeclarativeDomComponentC2ERKS_ @ 783 NONAME + _ZN24QDeclarativeDomComponentC2Ev @ 784 NONAME + _ZN24QDeclarativeDomComponentD1Ev @ 785 NONAME + _ZN24QDeclarativeDomComponentD2Ev @ 786 NONAME + _ZN24QDeclarativeDomComponentaSERKS_ @ 787 NONAME + _ZN24QDeclarativeParserStatusC2Ev @ 788 NONAME + _ZN24QDeclarativeParserStatusD0Ev @ 789 NONAME + _ZN24QDeclarativeParserStatusD1Ev @ 790 NONAME + _ZN24QDeclarativeParserStatusD2Ev @ 791 NONAME + _ZN24QDeclarativeScriptString10setContextEP19QDeclarativeContext @ 792 NONAME + _ZN24QDeclarativeScriptString14setScopeObjectEP7QObject @ 793 NONAME + _ZN24QDeclarativeScriptString9setScriptERK7QString @ 794 NONAME + _ZN24QDeclarativeScriptStringC1ERKS_ @ 795 NONAME + _ZN24QDeclarativeScriptStringC1Ev @ 796 NONAME + _ZN24QDeclarativeScriptStringC2ERKS_ @ 797 NONAME + _ZN24QDeclarativeScriptStringC2Ev @ 798 NONAME + _ZN24QDeclarativeScriptStringD1Ev @ 799 NONAME + _ZN24QDeclarativeScriptStringD2Ev @ 800 NONAME + _ZN24QDeclarativeScriptStringaSERKS_ @ 801 NONAME + _ZN25QDeclarativeImageProviderD0Ev @ 802 NONAME + _ZN25QDeclarativeImageProviderD1Ev @ 803 NONAME + _ZN25QDeclarativeImageProviderD2Ev @ 804 NONAME + _ZN25QDeclarativeListReferenceC1EP7QObjectPKcP18QDeclarativeEngine @ 805 NONAME + _ZN25QDeclarativeListReferenceC1ERKS_ @ 806 NONAME + _ZN25QDeclarativeListReferenceC1Ev @ 807 NONAME + _ZN25QDeclarativeListReferenceC2EP7QObjectPKcP18QDeclarativeEngine @ 808 NONAME + _ZN25QDeclarativeListReferenceC2ERKS_ @ 809 NONAME + _ZN25QDeclarativeListReferenceC2Ev @ 810 NONAME + _ZN25QDeclarativeListReferenceD1Ev @ 811 NONAME + _ZN25QDeclarativeListReferenceD2Ev @ 812 NONAME + _ZN25QDeclarativeListReferenceaSERKS_ @ 813 NONAME + _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 814 NONAME + _ZN26QDeclarativeDebuggerStatusD0Ev @ 815 NONAME + _ZN26QDeclarativeDebuggerStatusD1Ev @ 816 NONAME + _ZN26QDeclarativeDebuggerStatusD2Ev @ 817 NONAME + _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 818 NONAME + _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 819 NONAME + _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 820 NONAME + _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 821 NONAME + _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 822 NONAME + _ZN26QDeclarativeOpenMetaObject15propertyWrittenEi @ 823 NONAME + _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 824 NONAME + _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 825 NONAME + _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 826 NONAME + _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 827 NONAME + _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 828 NONAME + _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 829 NONAME + _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 830 NONAME + _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 831 NONAME + _ZN26QDeclarativeOpenMetaObjectD0Ev @ 832 NONAME + _ZN26QDeclarativeOpenMetaObjectD1Ev @ 833 NONAME + _ZN26QDeclarativeOpenMetaObjectD2Ev @ 834 NONAME + _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 835 NONAME + _ZN26QDeclarativeOpenMetaObjectixEi @ 836 NONAME + _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 837 NONAME + _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 838 NONAME + _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 839 NONAME DATA 16 + _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 840 NONAME + _ZN26QDeclarativeStateOperation7actionsEv @ 841 NONAME + _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 842 NONAME + _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 843 NONAME + _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 844 NONAME + _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 845 NONAME + _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 846 NONAME + _ZN27QDeclarativeAbstractBinding5clearEv @ 847 NONAME + _ZN27QDeclarativeAbstractBinding7destroyEv @ 848 NONAME + _ZN27QDeclarativeAbstractBindingC2Ev @ 849 NONAME + _ZN27QDeclarativeAbstractBindingD0Ev @ 850 NONAME + _ZN27QDeclarativeAbstractBindingD1Ev @ 851 NONAME + _ZN27QDeclarativeAbstractBindingD2Ev @ 852 NONAME + _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 853 NONAME + _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 854 NONAME + _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 855 NONAME DATA 16 + _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 856 NONAME + _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 857 NONAME + _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 858 NONAME + _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 859 NONAME + _ZN27QDeclarativeDomValueBindingC1Ev @ 860 NONAME + _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 861 NONAME + _ZN27QDeclarativeDomValueBindingC2Ev @ 862 NONAME + _ZN27QDeclarativeDomValueBindingD1Ev @ 863 NONAME + _ZN27QDeclarativeDomValueBindingD2Ev @ 864 NONAME + _ZN27QDeclarativeDomValueBindingaSERKS_ @ 865 NONAME + _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 866 NONAME + _ZN27QDeclarativeDomValueLiteralC1Ev @ 867 NONAME + _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 868 NONAME + _ZN27QDeclarativeDomValueLiteralC2Ev @ 869 NONAME + _ZN27QDeclarativeDomValueLiteralD1Ev @ 870 NONAME + _ZN27QDeclarativeDomValueLiteralD2Ev @ 871 NONAME + _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 872 NONAME + _ZN27QDeclarativeExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 873 NONAME + _ZN27QDeclarativeExtensionPlugin11qt_metacastEPKc @ 874 NONAME + _ZN27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 875 NONAME + _ZN27QDeclarativeExtensionPlugin16staticMetaObjectE @ 876 NONAME DATA 16 + _ZN27QDeclarativeExtensionPlugin19getStaticMetaObjectEv @ 877 NONAME + _ZN27QDeclarativeExtensionPluginC2EP7QObject @ 878 NONAME + _ZN27QDeclarativeExtensionPluginD0Ev @ 879 NONAME + _ZN27QDeclarativeExtensionPluginD1Ev @ 880 NONAME + _ZN27QDeclarativeExtensionPluginD2Ev @ 881 NONAME + _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 882 NONAME + _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 883 NONAME + _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 884 NONAME + _ZN27QDeclarativeGridScaledImageC1Ev @ 885 NONAME + _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 886 NONAME + _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 887 NONAME + _ZN27QDeclarativeGridScaledImageC2Ev @ 888 NONAME + _ZN27QDeclarativeGridScaledImageaSERKS_ @ 889 NONAME + _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 890 NONAME + _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectiiP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 891 NONAME + _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 892 NONAME + _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 893 NONAME + _ZN27QDeclarativePropertyPrivate12bindingIndexERK20QDeclarativeProperty @ 894 NONAME + _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 895 NONAME + _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 896 NONAME + _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 897 NONAME + _ZN27QDeclarativePropertyPrivate16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 898 NONAME + _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 899 NONAME + _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 900 NONAME + _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 901 NONAME + _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 902 NONAME + _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 903 NONAME + _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 904 NONAME + _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 905 NONAME + _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 906 NONAME + _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP23QDeclarativeContextData6QFlagsINS_9WriteFlagEE @ 907 NONAME + _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 908 NONAME + _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 909 NONAME + _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP23QDeclarativeContextData @ 910 NONAME + _ZN28QDeclarativeCustomParserNodeC1ERKS_ @ 911 NONAME + _ZN28QDeclarativeCustomParserNodeC1Ev @ 912 NONAME + _ZN28QDeclarativeCustomParserNodeC2ERKS_ @ 913 NONAME + _ZN28QDeclarativeCustomParserNodeC2Ev @ 914 NONAME + _ZN28QDeclarativeCustomParserNodeD1Ev @ 915 NONAME + _ZN28QDeclarativeCustomParserNodeD2Ev @ 916 NONAME + _ZN28QDeclarativeCustomParserNodeaSERKS_ @ 917 NONAME + _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 918 NONAME + _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 919 NONAME + _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 920 NONAME DATA 16 + _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 921 NONAME + _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 922 NONAME + _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 923 NONAME + _ZN28QDeclarativeDebugObjectQueryD0Ev @ 924 NONAME + _ZN28QDeclarativeDebugObjectQueryD1Ev @ 925 NONAME + _ZN28QDeclarativeDebugObjectQueryD2Ev @ 926 NONAME + _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 927 NONAME + _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 928 NONAME + _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 929 NONAME + _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 930 NONAME + _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 931 NONAME + _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 932 NONAME + _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 933 NONAME + _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 934 NONAME + _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 935 NONAME + _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 936 NONAME + _ZN28QDeclarativeValueTypeFactory11isValueTypeEi @ 937 NONAME + _ZN28QDeclarativeValueTypeFactory18registerValueTypesEv @ 938 NONAME + _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 939 NONAME + _ZN28QDeclarativeValueTypeFactoryC1Ev @ 940 NONAME + _ZN28QDeclarativeValueTypeFactoryC2Ev @ 941 NONAME + _ZN28QDeclarativeValueTypeFactoryD1Ev @ 942 NONAME + _ZN28QDeclarativeValueTypeFactoryD2Ev @ 943 NONAME + _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 944 NONAME + _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 945 NONAME + _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 946 NONAME DATA 16 + _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 947 NONAME + _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 948 NONAME + _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 949 NONAME + _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 950 NONAME + _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 951 NONAME + _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 952 NONAME + _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 953 NONAME + _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 954 NONAME + _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 955 NONAME + _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 956 NONAME + _ZN30QDeclarativeDebugFileReferenceC1Ev @ 957 NONAME + _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 958 NONAME + _ZN30QDeclarativeDebugFileReferenceC2Ev @ 959 NONAME + _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 960 NONAME + _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 961 NONAME + _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 962 NONAME + _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 963 NONAME DATA 16 + _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 964 NONAME + _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 965 NONAME + _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 966 NONAME + _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 967 NONAME + _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 968 NONAME + _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 969 NONAME + _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 970 NONAME + _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 971 NONAME + _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 972 NONAME + _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 973 NONAME + _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 974 NONAME + _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 975 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 976 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 977 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 978 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 979 NONAME + _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 980 NONAME + _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 981 NONAME + _ZN31QDeclarativeDomValueValueSourceC1Ev @ 982 NONAME + _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 983 NONAME + _ZN31QDeclarativeDomValueValueSourceC2Ev @ 984 NONAME + _ZN31QDeclarativeDomValueValueSourceD1Ev @ 985 NONAME + _ZN31QDeclarativeDomValueValueSourceD2Ev @ 986 NONAME + _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 987 NONAME + _ZN31QDeclarativePropertyValueSourceC2Ev @ 988 NONAME + _ZN31QDeclarativePropertyValueSourceD0Ev @ 989 NONAME + _ZN31QDeclarativePropertyValueSourceD1Ev @ 990 NONAME + _ZN31QDeclarativePropertyValueSourceD2Ev @ 991 NONAME + _ZN32QDeclarativeCustomParserPropertyC1ERKS_ @ 992 NONAME + _ZN32QDeclarativeCustomParserPropertyC1Ev @ 993 NONAME + _ZN32QDeclarativeCustomParserPropertyC2ERKS_ @ 994 NONAME + _ZN32QDeclarativeCustomParserPropertyC2Ev @ 995 NONAME + _ZN32QDeclarativeCustomParserPropertyD1Ev @ 996 NONAME + _ZN32QDeclarativeCustomParserPropertyD2Ev @ 997 NONAME + _ZN32QDeclarativeCustomParserPropertyaSERKS_ @ 998 NONAME + _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 999 NONAME + _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 1000 NONAME + _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 1001 NONAME + _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 1002 NONAME + _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 1003 NONAME + _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 1004 NONAME + _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 1005 NONAME + _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1006 NONAME + _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 1007 NONAME + _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 1008 NONAME DATA 16 + _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 1009 NONAME + _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 1010 NONAME + _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 1011 NONAME + _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 1012 NONAME + _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 1013 NONAME + _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 1014 NONAME + _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 1015 NONAME + _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 1016 NONAME + _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 1017 NONAME + _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 1018 NONAME + _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 1019 NONAME + _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 1020 NONAME + _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 1021 NONAME + _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 1022 NONAME + _ZN33QDeclarativeDebugContextReferenceC1Ev @ 1023 NONAME + _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 1024 NONAME + _ZN33QDeclarativeDebugContextReferenceC2Ev @ 1025 NONAME + _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 1026 NONAME + _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1027 NONAME + _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 1028 NONAME + _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 1029 NONAME DATA 16 + _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 1030 NONAME + _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 1031 NONAME + _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 1032 NONAME + _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 1033 NONAME + _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 1034 NONAME + _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 1035 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 1036 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 1037 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 1038 NONAME + _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 1039 NONAME + _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 1040 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 1041 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 1042 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 1043 NONAME + _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 1044 NONAME + _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 1045 NONAME + _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 1046 NONAME + _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 1047 NONAME + _ZN36QDeclarativePropertyValueInterceptorC2Ev @ 1048 NONAME + _ZN36QDeclarativePropertyValueInterceptorD0Ev @ 1049 NONAME + _ZN36QDeclarativePropertyValueInterceptorD1Ev @ 1050 NONAME + _ZN36QDeclarativePropertyValueInterceptorD2Ev @ 1051 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1052 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 1053 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 1054 NONAME DATA 16 + _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 1055 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 1056 NONAME + _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 1057 NONAME + _ZN39QDeclarativeNetworkAccessManagerFactoryD0Ev @ 1058 NONAME + _ZN39QDeclarativeNetworkAccessManagerFactoryD1Ev @ 1059 NONAME + _ZN39QDeclarativeNetworkAccessManagerFactoryD2Ev @ 1060 NONAME + _ZN7QPacket5clearEv @ 1061 NONAME + _ZN7QPacketC1ERK10QByteArray @ 1062 NONAME + _ZN7QPacketC1ERKS_ @ 1063 NONAME + _ZN7QPacketC1Ev @ 1064 NONAME + _ZN7QPacketC2ERK10QByteArray @ 1065 NONAME + _ZN7QPacketC2ERKS_ @ 1066 NONAME + _ZN7QPacketC2Ev @ 1067 NONAME + _ZN7QPacketD0Ev @ 1068 NONAME + _ZN7QPacketD1Ev @ 1069 NONAME + _ZN7QPacketD2Ev @ 1070 NONAME + _ZNK15QDeclarativePen10metaObjectEv @ 1071 NONAME + _ZNK15QPacketProtocol10metaObjectEv @ 1072 NONAME + _ZNK15QPacketProtocol16packetsAvailableEv @ 1073 NONAME + _ZNK15QPacketProtocol17maximumPacketSizeEv @ 1074 NONAME + _ZNK16QDeclarativeItem10metaObjectEv @ 1075 NONAME + _ZNK16QDeclarativeItem10parentItemEv @ 1076 NONAME + _ZNK16QDeclarativeItem10wantsFocusEv @ 1077 NONAME + _ZNK16QDeclarativeItem10widthValidEv @ 1078 NONAME + _ZNK16QDeclarativeItem11heightValidEv @ 1079 NONAME + _ZNK16QDeclarativeItem11mapFromItemERK12QScriptValueff @ 1080 NONAME + _ZNK16QDeclarativeItem12boundingRectEv @ 1081 NONAME + _ZNK16QDeclarativeItem13implicitWidthEv @ 1082 NONAME + _ZNK16QDeclarativeItem13keepMouseGrabEv @ 1083 NONAME + _ZNK16QDeclarativeItem14baselineOffsetEv @ 1084 NONAME + _ZNK16QDeclarativeItem14implicitHeightEv @ 1085 NONAME + _ZNK16QDeclarativeItem15transformOriginEv @ 1086 NONAME + _ZNK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 1087 NONAME + _ZNK16QDeclarativeItem19isComponentCompleteEv @ 1088 NONAME + _ZNK16QDeclarativeItem4clipEv @ 1089 NONAME + _ZNK16QDeclarativeItem5widthEv @ 1090 NONAME + _ZNK16QDeclarativeItem6heightEv @ 1091 NONAME + _ZNK16QDeclarativeItem6smoothEv @ 1092 NONAME + _ZNK16QDeclarativeItem7childAtEff @ 1093 NONAME + _ZNK16QDeclarativeItem8hasFocusEv @ 1094 NONAME + _ZNK16QDeclarativeItem9mapToItemERK12QScriptValueff @ 1095 NONAME + _ZNK16QDeclarativeText10metaObjectEv @ 1096 NONAME + _ZNK16QDeclarativeText10styleColorEv @ 1097 NONAME + _ZNK16QDeclarativeText10textFormatEv @ 1098 NONAME + _ZNK16QDeclarativeText12boundingRectEv @ 1099 NONAME + _ZNK16QDeclarativeText12paintedWidthEv @ 1100 NONAME + _ZNK16QDeclarativeText13paintedHeightEv @ 1101 NONAME + _ZNK16QDeclarativeText16resourcesLoadingEv @ 1102 NONAME + _ZNK16QDeclarativeText4fontEv @ 1103 NONAME + _ZNK16QDeclarativeText4textEv @ 1104 NONAME + _ZNK16QDeclarativeText5colorEv @ 1105 NONAME + _ZNK16QDeclarativeText5styleEv @ 1106 NONAME + _ZNK16QDeclarativeText6hAlignEv @ 1107 NONAME + _ZNK16QDeclarativeText6vAlignEv @ 1108 NONAME + _ZNK16QDeclarativeText8wrapModeEv @ 1109 NONAME + _ZNK16QDeclarativeText9elideModeEv @ 1110 NONAME + _ZNK16QDeclarativeType10createSizeEv @ 1111 NONAME + _ZNK16QDeclarativeType10metaObjectEv @ 1112 NONAME + _ZNK16QDeclarativeType11isCreatableEv @ 1113 NONAME + _ZNK16QDeclarativeType11isInterfaceEv @ 1114 NONAME + _ZNK16QDeclarativeType11qListTypeIdEv @ 1115 NONAME + _ZNK16QDeclarativeType11qmlTypeNameEv @ 1116 NONAME + _ZNK16QDeclarativeType12customParserEv @ 1117 NONAME + _ZNK16QDeclarativeType12interfaceIIdEv @ 1118 NONAME + _ZNK16QDeclarativeType12majorVersionEv @ 1119 NONAME + _ZNK16QDeclarativeType12minorVersionEv @ 1120 NONAME + _ZNK16QDeclarativeType14baseMetaObjectEv @ 1121 NONAME + _ZNK16QDeclarativeType14createFunctionEv @ 1122 NONAME + _ZNK16QDeclarativeType14isExtendedTypeEv @ 1123 NONAME + _ZNK16QDeclarativeType16noCreationReasonEv @ 1124 NONAME + _ZNK16QDeclarativeType16parserStatusCastEv @ 1125 NONAME + _ZNK16QDeclarativeType18availableInVersionEii @ 1126 NONAME + _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 1127 NONAME + _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 1128 NONAME + _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 1129 NONAME + _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 1130 NONAME + _ZNK16QDeclarativeType5indexEv @ 1131 NONAME + _ZNK16QDeclarativeType6createEPP7QObjectPPvj @ 1132 NONAME + _ZNK16QDeclarativeType6createEv @ 1133 NONAME + _ZNK16QDeclarativeType6typeIdEv @ 1134 NONAME + _ZNK16QDeclarativeType8typeNameEv @ 1135 NONAME + _ZNK16QDeclarativeView10metaObjectEv @ 1136 NONAME + _ZNK16QDeclarativeView10resizeModeEv @ 1137 NONAME + _ZNK16QDeclarativeView10rootObjectEv @ 1138 NONAME + _ZNK16QDeclarativeView11initialSizeEv @ 1139 NONAME + _ZNK16QDeclarativeView6errorsEv @ 1140 NONAME + _ZNK16QDeclarativeView6sourceEv @ 1141 NONAME + _ZNK16QDeclarativeView6statusEv @ 1142 NONAME + _ZNK16QDeclarativeView8sizeHintEv @ 1143 NONAME + _ZNK16QMetaEnumBuilder3keyEi @ 1144 NONAME + _ZNK16QMetaEnumBuilder4nameEv @ 1145 NONAME + _ZNK16QMetaEnumBuilder5valueEi @ 1146 NONAME + _ZNK16QMetaEnumBuilder6d_funcEv @ 1147 NONAME + _ZNK16QMetaEnumBuilder6isFlagEv @ 1148 NONAME + _ZNK16QMetaEnumBuilder8keyCountEv @ 1149 NONAME + _ZNK17QDeclarativeError11descriptionEv @ 1150 NONAME + _ZNK17QDeclarativeError3urlEv @ 1151 NONAME + _ZNK17QDeclarativeError4lineEv @ 1152 NONAME + _ZNK17QDeclarativeError6columnEv @ 1153 NONAME + _ZNK17QDeclarativeError7isValidEv @ 1154 NONAME + _ZNK17QDeclarativeError8toStringEv @ 1155 NONAME + _ZNK17QDeclarativeState10metaObjectEv @ 1156 NONAME + _ZNK17QDeclarativeState10stateGroupEv @ 1157 NONAME + _ZNK17QDeclarativeState11isWhenKnownEv @ 1158 NONAME + _ZNK17QDeclarativeState11operationAtEi @ 1159 NONAME + _ZNK17QDeclarativeState14operationCountEv @ 1160 NONAME + _ZNK17QDeclarativeState4nameEv @ 1161 NONAME + _ZNK17QDeclarativeState4whenEv @ 1162 NONAME + _ZNK17QDeclarativeState7extendsEv @ 1163 NONAME + _ZNK17QDeclarativeState7isNamedEv @ 1164 NONAME + _ZNK18QDeclarativeEngine10metaObjectEv @ 1165 NONAME + _ZNK18QDeclarativeEngine13imageProviderERK7QString @ 1166 NONAME + _ZNK18QDeclarativeEngine14importPathListEv @ 1167 NONAME + _ZNK18QDeclarativeEngine14pluginPathListEv @ 1168 NONAME + _ZNK18QDeclarativeEngine18offlineStoragePathEv @ 1169 NONAME + _ZNK18QDeclarativeEngine20networkAccessManagerEv @ 1170 NONAME + _ZNK18QDeclarativeEngine27networkAccessManagerFactoryEv @ 1171 NONAME + _ZNK18QDeclarativeEngine29outputWarningsToStandardErrorEv @ 1172 NONAME + _ZNK18QDeclarativeEngine7baseUrlEv @ 1173 NONAME + _ZNK18QDeclarativeParser7Variant12asStringListEv @ 1174 NONAME + _ZNK18QDeclarativeParser7Variant12isStringListEv @ 1175 NONAME + _ZNK18QDeclarativeParser7Variant4typeEv @ 1176 NONAME + _ZNK18QDeclarativeParser7Variant5asASTEv @ 1177 NONAME + _ZNK18QDeclarativeParser7Variant8asNumberEv @ 1178 NONAME + _ZNK18QDeclarativeParser7Variant8asScriptEv @ 1179 NONAME + _ZNK18QDeclarativeParser7Variant8asStringEv @ 1180 NONAME + _ZNK18QDeclarativeParser7Variant9asBooleanEv @ 1181 NONAME + _ZNK18QMetaMethodBuilder10attributesEv @ 1182 NONAME + _ZNK18QMetaMethodBuilder10methodTypeEv @ 1183 NONAME + _ZNK18QMetaMethodBuilder10returnTypeEv @ 1184 NONAME + _ZNK18QMetaMethodBuilder14parameterNamesEv @ 1185 NONAME + _ZNK18QMetaMethodBuilder3tagEv @ 1186 NONAME + _ZNK18QMetaMethodBuilder5indexEv @ 1187 NONAME + _ZNK18QMetaMethodBuilder6accessEv @ 1188 NONAME + _ZNK18QMetaMethodBuilder6d_funcEv @ 1189 NONAME + _ZNK18QMetaMethodBuilder9signatureEv @ 1190 NONAME + _ZNK18QMetaObjectBuilder10enumeratorEi @ 1191 NONAME + _ZNK18QMetaObjectBuilder10superClassEv @ 1192 NONAME + _ZNK18QMetaObjectBuilder11constructorEi @ 1193 NONAME + _ZNK18QMetaObjectBuilder11methodCountEv @ 1194 NONAME + _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 1195 NONAME + _ZNK18QMetaObjectBuilder13classInfoNameEi @ 1196 NONAME + _ZNK18QMetaObjectBuilder13propertyCountEv @ 1197 NONAME + _ZNK18QMetaObjectBuilder14classInfoCountEv @ 1198 NONAME + _ZNK18QMetaObjectBuilder14classInfoValueEi @ 1199 NONAME + _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 1200 NONAME + _ZNK18QMetaObjectBuilder16constructorCountEv @ 1201 NONAME + _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 1202 NONAME + _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 1203 NONAME + _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 1204 NONAME + _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 1205 NONAME + _ZNK18QMetaObjectBuilder5flagsEv @ 1206 NONAME + _ZNK18QMetaObjectBuilder6methodEi @ 1207 NONAME + _ZNK18QMetaObjectBuilder8propertyEi @ 1208 NONAME + _ZNK18QMetaObjectBuilder9classNameEv @ 1209 NONAME + _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 1210 NONAME + _ZNK19QDeclarativeAnchors10leftMarginEv @ 1211 NONAME + _ZNK19QDeclarativeAnchors10metaObjectEv @ 1212 NONAME + _ZNK19QDeclarativeAnchors11rightMarginEv @ 1213 NONAME + _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 1214 NONAME + _ZNK19QDeclarativeAnchors12bottomMarginEv @ 1215 NONAME + _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 1216 NONAME + _ZNK19QDeclarativeAnchors14verticalCenterEv @ 1217 NONAME + _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 1218 NONAME + _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 1219 NONAME + _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 1220 NONAME + _ZNK19QDeclarativeAnchors3topEv @ 1221 NONAME + _ZNK19QDeclarativeAnchors4fillEv @ 1222 NONAME + _ZNK19QDeclarativeAnchors4leftEv @ 1223 NONAME + _ZNK19QDeclarativeAnchors5rightEv @ 1224 NONAME + _ZNK19QDeclarativeAnchors6bottomEv @ 1225 NONAME + _ZNK19QDeclarativeAnchors7marginsEv @ 1226 NONAME + _ZNK19QDeclarativeAnchors8baselineEv @ 1227 NONAME + _ZNK19QDeclarativeAnchors8centerInEv @ 1228 NONAME + _ZNK19QDeclarativeAnchors9topMarginEv @ 1229 NONAME + _ZNK19QDeclarativeBinding10expressionEv @ 1230 NONAME + _ZNK19QDeclarativeBinding10metaObjectEv @ 1231 NONAME + _ZNK19QDeclarativeBinding7enabledEv @ 1232 NONAME + _ZNK19QDeclarativeBinding8propertyEv @ 1233 NONAME + _ZNK19QDeclarativeContext10metaObjectEv @ 1234 NONAME + _ZNK19QDeclarativeContext13contextObjectEv @ 1235 NONAME + _ZNK19QDeclarativeContext13parentContextEv @ 1236 NONAME + _ZNK19QDeclarativeContext15contextPropertyERK7QString @ 1237 NONAME + _ZNK19QDeclarativeContext6engineEv @ 1238 NONAME + _ZNK19QDeclarativeContext7baseUrlEv @ 1239 NONAME + _ZNK19QDeclarativeContext7isValidEv @ 1240 NONAME + _ZNK19QDeclarativeDomList14commaPositionsEv @ 1241 NONAME + _ZNK19QDeclarativeDomList6lengthEv @ 1242 NONAME + _ZNK19QDeclarativeDomList6valuesEv @ 1243 NONAME + _ZNK19QDeclarativeDomList8positionEv @ 1244 NONAME + _ZNK19QListModelInterface10metaObjectEv @ 1245 NONAME + _ZNK20QDeclarativeBehavior10metaObjectEv @ 1246 NONAME + _ZNK20QDeclarativeBehavior7enabledEv @ 1247 NONAME + _ZNK20QDeclarativeDomValue13isValueSourceEv @ 1248 NONAME + _ZNK20QDeclarativeDomValue13toValueSourceEv @ 1249 NONAME + _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 1250 NONAME + _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 1251 NONAME + _ZNK20QDeclarativeDomValue4typeEv @ 1252 NONAME + _ZNK20QDeclarativeDomValue6isListEv @ 1253 NONAME + _ZNK20QDeclarativeDomValue6lengthEv @ 1254 NONAME + _ZNK20QDeclarativeDomValue6toListEv @ 1255 NONAME + _ZNK20QDeclarativeDomValue8isObjectEv @ 1256 NONAME + _ZNK20QDeclarativeDomValue8positionEv @ 1257 NONAME + _ZNK20QDeclarativeDomValue8toObjectEv @ 1258 NONAME + _ZNK20QDeclarativeDomValue9isBindingEv @ 1259 NONAME + _ZNK20QDeclarativeDomValue9isInvalidEv @ 1260 NONAME + _ZNK20QDeclarativeDomValue9isLiteralEv @ 1261 NONAME + _ZNK20QDeclarativeDomValue9toBindingEv @ 1262 NONAME + _ZNK20QDeclarativeDomValue9toLiteralEv @ 1263 NONAME + _ZNK20QDeclarativeProperty10isPropertyEv @ 1264 NONAME + _ZNK20QDeclarativeProperty10isWritableEv @ 1265 NONAME + _ZNK20QDeclarativeProperty12isDesignableEv @ 1266 NONAME + _ZNK20QDeclarativeProperty12isResettableEv @ 1267 NONAME + _ZNK20QDeclarativeProperty12propertyTypeEv @ 1268 NONAME + _ZNK20QDeclarativeProperty15hasNotifySignalEv @ 1269 NONAME + _ZNK20QDeclarativeProperty16isSignalPropertyEv @ 1270 NONAME + _ZNK20QDeclarativeProperty16propertyTypeNameEv @ 1271 NONAME + _ZNK20QDeclarativeProperty17needsNotifySignalEv @ 1272 NONAME + _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjectPKc @ 1273 NONAME + _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjecti @ 1274 NONAME + _ZNK20QDeclarativeProperty20propertyTypeCategoryEv @ 1275 NONAME + _ZNK20QDeclarativeProperty4nameEv @ 1276 NONAME + _ZNK20QDeclarativeProperty4readEv @ 1277 NONAME + _ZNK20QDeclarativeProperty4typeEv @ 1278 NONAME + _ZNK20QDeclarativeProperty5indexEv @ 1279 NONAME + _ZNK20QDeclarativeProperty5resetEv @ 1280 NONAME + _ZNK20QDeclarativeProperty5writeERK8QVariant @ 1281 NONAME + _ZNK20QDeclarativeProperty6methodEv @ 1282 NONAME + _ZNK20QDeclarativeProperty6objectEv @ 1283 NONAME + _ZNK20QDeclarativeProperty7isValidEv @ 1284 NONAME + _ZNK20QDeclarativeProperty8propertyEv @ 1285 NONAME + _ZNK20QDeclarativePropertyeqERKS_ @ 1286 NONAME + _ZNK20QMetaPropertyBuilder10isEditableEv @ 1287 NONAME + _ZNK20QMetaPropertyBuilder10isReadableEv @ 1288 NONAME + _ZNK20QMetaPropertyBuilder10isWritableEv @ 1289 NONAME + _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 1290 NONAME + _ZNK20QMetaPropertyBuilder12isDesignableEv @ 1291 NONAME + _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 1292 NONAME + _ZNK20QMetaPropertyBuilder12isResettableEv @ 1293 NONAME + _ZNK20QMetaPropertyBuilder12isScriptableEv @ 1294 NONAME + _ZNK20QMetaPropertyBuilder12notifySignalEv @ 1295 NONAME + _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 1296 NONAME + _ZNK20QMetaPropertyBuilder4nameEv @ 1297 NONAME + _ZNK20QMetaPropertyBuilder4typeEv @ 1298 NONAME + _ZNK20QMetaPropertyBuilder6d_funcEv @ 1299 NONAME + _ZNK20QMetaPropertyBuilder6isUserEv @ 1300 NONAME + _ZNK20QMetaPropertyBuilder8isStoredEv @ 1301 NONAME + _ZNK20QMetaPropertyBuilder9isDynamicEv @ 1302 NONAME + _ZNK21QDeclarativeComponent10metaObjectEv @ 1303 NONAME + _ZNK21QDeclarativeComponent11errorStringEv @ 1304 NONAME + _ZNK21QDeclarativeComponent15creationContextEv @ 1305 NONAME + _ZNK21QDeclarativeComponent3urlEv @ 1306 NONAME + _ZNK21QDeclarativeComponent6errorsEv @ 1307 NONAME + _ZNK21QDeclarativeComponent6isNullEv @ 1308 NONAME + _ZNK21QDeclarativeComponent6statusEv @ 1309 NONAME + _ZNK21QDeclarativeComponent7isErrorEv @ 1310 NONAME + _ZNK21QDeclarativeComponent7isReadyEv @ 1311 NONAME + _ZNK21QDeclarativeComponent8progressEv @ 1312 NONAME + _ZNK21QDeclarativeComponent9isLoadingEv @ 1313 NONAME + _ZNK21QDeclarativeDomImport3uriEv @ 1314 NONAME + _ZNK21QDeclarativeDomImport4typeEv @ 1315 NONAME + _ZNK21QDeclarativeDomImport7versionEv @ 1316 NONAME + _ZNK21QDeclarativeDomImport9qualifierEv @ 1317 NONAME + _ZNK21QDeclarativeDomObject10objectTypeEv @ 1318 NONAME + _ZNK21QDeclarativeDomObject10propertiesEv @ 1319 NONAME + _ZNK21QDeclarativeDomObject11isComponentEv @ 1320 NONAME + _ZNK21QDeclarativeDomObject11toComponentEv @ 1321 NONAME + _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 1322 NONAME + _ZNK21QDeclarativeDomObject14customTypeDataEv @ 1323 NONAME + _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 1324 NONAME + _ZNK21QDeclarativeDomObject15objectClassNameEv @ 1325 NONAME + _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 1326 NONAME + _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 1327 NONAME + _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 1328 NONAME + _ZNK21QDeclarativeDomObject3urlEv @ 1329 NONAME + _ZNK21QDeclarativeDomObject6lengthEv @ 1330 NONAME + _ZNK21QDeclarativeDomObject7isValidEv @ 1331 NONAME + _ZNK21QDeclarativeDomObject8objectIdEv @ 1332 NONAME + _ZNK21QDeclarativeDomObject8positionEv @ 1333 NONAME + _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 1334 NONAME + _ZNK21QDeclarativeListModel10metaObjectEv @ 1335 NONAME + _ZNK21QDeclarativeListModel3getEi @ 1336 NONAME + _ZNK21QDeclarativeListModel4dataEiRK5QListIiE @ 1337 NONAME + _ZNK21QDeclarativeListModel4dataEii @ 1338 NONAME + _ZNK21QDeclarativeListModel5countEv @ 1339 NONAME + _ZNK21QDeclarativeListModel5rolesEv @ 1340 NONAME + _ZNK21QDeclarativeListModel8toStringEi @ 1341 NONAME + _ZNK21QDeclarativeRectangle10metaObjectEv @ 1342 NONAME + _ZNK21QDeclarativeRectangle12boundingRectEv @ 1343 NONAME + _ZNK21QDeclarativeRectangle5colorEv @ 1344 NONAME + _ZNK21QDeclarativeRectangle6radiusEv @ 1345 NONAME + _ZNK21QDeclarativeRectangle8gradientEv @ 1346 NONAME + _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 1347 NONAME + _ZNK21QDeclarativeScaleGrid6isNullEv @ 1348 NONAME + _ZNK21QDeclarativeValueType10metaObjectEv @ 1349 NONAME + _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 1350 NONAME + _ZNK22QDeclarativeDebugQuery5stateEv @ 1351 NONAME + _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 1352 NONAME + _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 1353 NONAME + _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 1354 NONAME + _ZNK22QDeclarativeDebugWatch5stateEv @ 1355 NONAME + _ZNK22QDeclarativeDebugWatch7queryIdEv @ 1356 NONAME + _ZNK22QDeclarativeExpression10expressionEv @ 1357 NONAME + _ZNK22QDeclarativeExpression10lineNumberEv @ 1358 NONAME + _ZNK22QDeclarativeExpression10metaObjectEv @ 1359 NONAME + _ZNK22QDeclarativeExpression10sourceFileEv @ 1360 NONAME + _ZNK22QDeclarativeExpression11scopeObjectEv @ 1361 NONAME + _ZNK22QDeclarativeExpression20notifyOnValueChangedEv @ 1362 NONAME + _ZNK22QDeclarativeExpression5errorEv @ 1363 NONAME + _ZNK22QDeclarativeExpression6engineEv @ 1364 NONAME + _ZNK22QDeclarativeExpression7contextEv @ 1365 NONAME + _ZNK22QDeclarativeExpression8hasErrorEv @ 1366 NONAME + _ZNK22QDeclarativeStateGroup10metaObjectEv @ 1367 NONAME + _ZNK22QDeclarativeStateGroup5stateEv @ 1368 NONAME + _ZNK22QDeclarativeStateGroup6statesEv @ 1369 NONAME + _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 1370 NONAME + _ZNK22QDeclarativeTransition10metaObjectEv @ 1371 NONAME + _ZNK22QDeclarativeTransition10reversibleEv @ 1372 NONAME + _ZNK22QDeclarativeTransition7toStateEv @ 1373 NONAME + _ZNK22QDeclarativeTransition9fromStateEv @ 1374 NONAME + _ZNK23QDeclarativeDebugClient10metaObjectEv @ 1375 NONAME + _ZNK23QDeclarativeDebugClient11isConnectedEv @ 1376 NONAME + _ZNK23QDeclarativeDebugClient4nameEv @ 1377 NONAME + _ZNK23QDeclarativeDebugClient9isEnabledEv @ 1378 NONAME + _ZNK23QDeclarativeDomDocument10rootObjectEv @ 1379 NONAME + _ZNK23QDeclarativeDomDocument6errorsEv @ 1380 NONAME + _ZNK23QDeclarativeDomDocument7importsEv @ 1381 NONAME + _ZNK23QDeclarativeDomProperty12propertyNameEv @ 1382 NONAME + _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 1383 NONAME + _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 1384 NONAME + _ZNK23QDeclarativeDomProperty5valueEv @ 1385 NONAME + _ZNK23QDeclarativeDomProperty6lengthEv @ 1386 NONAME + _ZNK23QDeclarativeDomProperty7isValidEv @ 1387 NONAME + _ZNK23QDeclarativeDomProperty8positionEv @ 1388 NONAME + _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 1389 NONAME + _ZNK23QDeclarativeItemPrivate14verticalCenterEv @ 1390 NONAME + _ZNK23QDeclarativeItemPrivate16horizontalCenterEv @ 1391 NONAME + _ZNK23QDeclarativeItemPrivate22computeTransformOriginEv @ 1392 NONAME + _ZNK23QDeclarativeItemPrivate3topEv @ 1393 NONAME + _ZNK23QDeclarativeItemPrivate4leftEv @ 1394 NONAME + _ZNK23QDeclarativeItemPrivate5rightEv @ 1395 NONAME + _ZNK23QDeclarativeItemPrivate5stateEv @ 1396 NONAME + _ZNK23QDeclarativeItemPrivate5widthEv @ 1397 NONAME + _ZNK23QDeclarativeItemPrivate6bottomEv @ 1398 NONAME + _ZNK23QDeclarativeItemPrivate6heightEv @ 1399 NONAME + _ZNK23QDeclarativeItemPrivate8baselineEv @ 1400 NONAME + _ZNK23QDeclarativePixmapReply10metaObjectEv @ 1401 NONAME ABSENT + _ZNK23QDeclarativePixmapReply11errorStringEv @ 1402 NONAME ABSENT + _ZNK23QDeclarativePixmapReply11forcedWidthEv @ 1403 NONAME ABSENT + _ZNK23QDeclarativePixmapReply12forcedHeightEv @ 1404 NONAME ABSENT + _ZNK23QDeclarativePixmapReply12implicitSizeEv @ 1405 NONAME ABSENT + _ZNK23QDeclarativePixmapReply3urlEv @ 1406 NONAME ABSENT + _ZNK23QDeclarativePixmapReply6statusEv @ 1407 NONAME ABSENT + _ZNK23QDeclarativePixmapReply9isLoadingEv @ 1408 NONAME ABSENT + _ZNK23QDeclarativePropertyMap10metaObjectEv @ 1409 NONAME + _ZNK23QDeclarativePropertyMap4keysEv @ 1410 NONAME + _ZNK23QDeclarativePropertyMap4sizeEv @ 1411 NONAME + _ZNK23QDeclarativePropertyMap5countEv @ 1412 NONAME + _ZNK23QDeclarativePropertyMap5valueERK7QString @ 1413 NONAME + _ZNK23QDeclarativePropertyMap7isEmptyEv @ 1414 NONAME + _ZNK23QDeclarativePropertyMap8containsERK7QString @ 1415 NONAME + _ZNK23QDeclarativePropertyMapixERK7QString @ 1416 NONAME + _ZNK24QDeclarativeCustomParser11resolveTypeERK10QByteArray @ 1417 NONAME + _ZNK24QDeclarativeCustomParser12evaluateEnumERK10QByteArray @ 1418 NONAME + _ZNK24QDeclarativeDebugService10metaObjectEv @ 1419 NONAME + _ZNK24QDeclarativeDebugService4nameEv @ 1420 NONAME + _ZNK24QDeclarativeDebugService9isEnabledEv @ 1421 NONAME + _ZNK24QDeclarativeDomComponent13componentRootEv @ 1422 NONAME + _ZNK24QDeclarativeScriptString11scopeObjectEv @ 1423 NONAME + _ZNK24QDeclarativeScriptString6scriptEv @ 1424 NONAME + _ZNK24QDeclarativeScriptString7contextEv @ 1425 NONAME + _ZNK25QDeclarativeListReference15listElementTypeEv @ 1426 NONAME + _ZNK25QDeclarativeListReference2atEi @ 1427 NONAME + _ZNK25QDeclarativeListReference5canAtEv @ 1428 NONAME + _ZNK25QDeclarativeListReference5clearEv @ 1429 NONAME + _ZNK25QDeclarativeListReference5countEv @ 1430 NONAME + _ZNK25QDeclarativeListReference6appendEP7QObject @ 1431 NONAME + _ZNK25QDeclarativeListReference6objectEv @ 1432 NONAME + _ZNK25QDeclarativeListReference7isValidEv @ 1433 NONAME + _ZNK25QDeclarativeListReference8canClearEv @ 1434 NONAME + _ZNK25QDeclarativeListReference8canCountEv @ 1435 NONAME + _ZNK25QDeclarativeListReference9canAppendEv @ 1436 NONAME + _ZNK26QDeclarativeOpenMetaObject4nameEi @ 1437 NONAME + _ZNK26QDeclarativeOpenMetaObject4typeEv @ 1438 NONAME + _ZNK26QDeclarativeOpenMetaObject5countEv @ 1439 NONAME + _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 1440 NONAME + _ZNK26QDeclarativeOpenMetaObject5valueEi @ 1441 NONAME + _ZNK26QDeclarativeOpenMetaObject6objectEv @ 1442 NONAME + _ZNK26QDeclarativeOpenMetaObject6parentEv @ 1443 NONAME + _ZNK26QDeclarativeStateOperation10metaObjectEv @ 1444 NONAME + _ZNK27QDeclarativeAbstractBinding10expressionEv @ 1445 NONAME + _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 1446 NONAME + _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 1447 NONAME + _ZNK27QDeclarativeDomValueBinding7bindingEv @ 1448 NONAME + _ZNK27QDeclarativeDomValueLiteral7literalEv @ 1449 NONAME + _ZNK27QDeclarativeExtensionPlugin10metaObjectEv @ 1450 NONAME + _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 1451 NONAME + _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 1452 NONAME + _ZNK27QDeclarativeGridScaledImage7isValidEv @ 1453 NONAME + _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 1454 NONAME + _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 1455 NONAME + _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 1456 NONAME + _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 1457 NONAME + _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 1458 NONAME + _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 1459 NONAME + _ZNK28QDeclarativeCustomParserNode10propertiesEv @ 1460 NONAME + _ZNK28QDeclarativeCustomParserNode4nameEv @ 1461 NONAME + _ZNK28QDeclarativeCustomParserNode8locationEv @ 1462 NONAME + _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 1463 NONAME + _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 1464 NONAME + _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 1465 NONAME + _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 1466 NONAME + _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 1467 NONAME + _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 1468 NONAME + _ZNK30QDeclarativeDebugFileReference3urlEv @ 1469 NONAME + _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 1470 NONAME + _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 1471 NONAME + _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 1472 NONAME + _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 1473 NONAME + _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 1474 NONAME + _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 1475 NONAME + _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 1476 NONAME + _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 1477 NONAME + _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 1478 NONAME + _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 1479 NONAME + _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 1480 NONAME + _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 1481 NONAME + _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 1482 NONAME + _ZNK31QDeclarativeDomValueValueSource6objectEv @ 1483 NONAME + _ZNK32QDeclarativeCustomParserProperty14assignedValuesEv @ 1484 NONAME + _ZNK32QDeclarativeCustomParserProperty4nameEv @ 1485 NONAME + _ZNK32QDeclarativeCustomParserProperty6isListEv @ 1486 NONAME + _ZNK32QDeclarativeCustomParserProperty8locationEv @ 1487 NONAME + _ZNK32QDeclarativeDebugEngineReference4nameEv @ 1488 NONAME + _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 1489 NONAME + _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 1490 NONAME + _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 1491 NONAME + _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 1492 NONAME + _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 1493 NONAME + _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 1494 NONAME + _ZNK32QDeclarativeDebugObjectReference4nameEv @ 1495 NONAME + _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 1496 NONAME + _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 1497 NONAME + _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 1498 NONAME + _ZNK32QDeclarativeDebugObjectReference8idStringEv @ 1499 NONAME + _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 1500 NONAME + _ZNK33QDeclarativeDebugContextReference4nameEv @ 1501 NONAME + _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 1502 NONAME + _ZNK33QDeclarativeDebugContextReference7objectsEv @ 1503 NONAME + _ZNK33QDeclarativeDebugContextReference8contextsEv @ 1504 NONAME + _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 1505 NONAME + _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 1506 NONAME + _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 1507 NONAME + _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 1508 NONAME + _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 1509 NONAME + _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 1510 NONAME + _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 1511 NONAME + _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 1512 NONAME + _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 1513 NONAME + _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 1514 NONAME + _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 1515 NONAME + _ZNK7QPacket7isEmptyEv @ 1516 NONAME + _ZTI15QDeclarativePen @ 1517 NONAME + _ZTI15QPacketAutoSend @ 1518 NONAME + _ZTI15QPacketProtocol @ 1519 NONAME + _ZTI16QDeclarativeItem @ 1520 NONAME + _ZTI16QDeclarativeText @ 1521 NONAME + _ZTI16QDeclarativeView @ 1522 NONAME + _ZTI17QDeclarativeState @ 1523 NONAME + _ZTI18QDeclarativeEngine @ 1524 NONAME + _ZTI18QMetaObjectBuilder @ 1525 NONAME + _ZTI19QDeclarativeAnchors @ 1526 NONAME + _ZTI19QDeclarativeBinding @ 1527 NONAME + _ZTI19QDeclarativeContext @ 1528 NONAME + _ZTI19QListModelInterface @ 1529 NONAME + _ZTI20QDeclarativeBehavior @ 1530 NONAME + _ZTI21QDeclarativeComponent @ 1531 NONAME + _ZTI21QDeclarativeListModel @ 1532 NONAME + _ZTI21QDeclarativeRectangle @ 1533 NONAME + _ZTI21QDeclarativeScaleGrid @ 1534 NONAME + _ZTI21QDeclarativeValueType @ 1535 NONAME + _ZTI22QDeclarativeDebugQuery @ 1536 NONAME + _ZTI22QDeclarativeDebugWatch @ 1537 NONAME + _ZTI22QDeclarativeExpression @ 1538 NONAME + _ZTI22QDeclarativeStateGroup @ 1539 NONAME + _ZTI22QDeclarativeTransition @ 1540 NONAME + _ZTI23QDeclarativeDebugClient @ 1541 NONAME + _ZTI23QDeclarativeEngineDebug @ 1542 NONAME + _ZTI23QDeclarativeItemPrivate @ 1543 NONAME + _ZTI23QDeclarativePixmapReply @ 1544 NONAME ABSENT + _ZTI23QDeclarativePropertyMap @ 1545 NONAME + _ZTI24QDeclarativeCustomParser @ 1546 NONAME + _ZTI24QDeclarativeDebugService @ 1547 NONAME + _ZTI24QDeclarativeParserStatus @ 1548 NONAME + _ZTI25QDeclarativeImageProvider @ 1549 NONAME + _ZTI26QDeclarativeDebuggerStatus @ 1550 NONAME + _ZTI26QDeclarativeOpenMetaObject @ 1551 NONAME + _ZTI26QDeclarativeStateOperation @ 1552 NONAME + _ZTI27QDeclarativeAbstractBinding @ 1553 NONAME + _ZTI27QDeclarativeDebugConnection @ 1554 NONAME + _ZTI27QDeclarativeExtensionPlugin @ 1555 NONAME + _ZTI28QDeclarativeDebugObjectQuery @ 1556 NONAME + _ZTI29QDeclarativeDebugEnginesQuery @ 1557 NONAME + _ZTI30QDeclarativeDebugPropertyWatch @ 1558 NONAME + _ZTI30QDeclarativeExtensionInterface @ 1559 NONAME + _ZTI30QDeclarativeOpenMetaObjectType @ 1560 NONAME + _ZTI31QDeclarativePropertyValueSource @ 1561 NONAME + _ZTI32QDeclarativeDebugExpressionQuery @ 1562 NONAME + _ZTI33QDeclarativeDebugRootContextQuery @ 1563 NONAME + _ZTI36QDeclarativePropertyValueInterceptor @ 1564 NONAME + _ZTI38QDeclarativeDebugObjectExpressionWatch @ 1565 NONAME + _ZTI39QDeclarativeNetworkAccessManagerFactory @ 1566 NONAME + _ZTI7QPacket @ 1567 NONAME + _ZTV15QDeclarativePen @ 1568 NONAME + _ZTV15QPacketAutoSend @ 1569 NONAME + _ZTV15QPacketProtocol @ 1570 NONAME + _ZTV16QDeclarativeItem @ 1571 NONAME + _ZTV16QDeclarativeText @ 1572 NONAME + _ZTV16QDeclarativeView @ 1573 NONAME + _ZTV17QDeclarativeState @ 1574 NONAME + _ZTV18QDeclarativeEngine @ 1575 NONAME + _ZTV18QMetaObjectBuilder @ 1576 NONAME + _ZTV19QDeclarativeAnchors @ 1577 NONAME + _ZTV19QDeclarativeBinding @ 1578 NONAME + _ZTV19QDeclarativeContext @ 1579 NONAME + _ZTV19QListModelInterface @ 1580 NONAME + _ZTV20QDeclarativeBehavior @ 1581 NONAME + _ZTV21QDeclarativeComponent @ 1582 NONAME + _ZTV21QDeclarativeListModel @ 1583 NONAME + _ZTV21QDeclarativeRectangle @ 1584 NONAME + _ZTV21QDeclarativeScaleGrid @ 1585 NONAME + _ZTV21QDeclarativeValueType @ 1586 NONAME + _ZTV22QDeclarativeDebugQuery @ 1587 NONAME + _ZTV22QDeclarativeDebugWatch @ 1588 NONAME + _ZTV22QDeclarativeExpression @ 1589 NONAME + _ZTV22QDeclarativeStateGroup @ 1590 NONAME + _ZTV22QDeclarativeTransition @ 1591 NONAME + _ZTV23QDeclarativeDebugClient @ 1592 NONAME + _ZTV23QDeclarativeEngineDebug @ 1593 NONAME + _ZTV23QDeclarativeItemPrivate @ 1594 NONAME + _ZTV23QDeclarativePixmapReply @ 1595 NONAME ABSENT + _ZTV23QDeclarativePropertyMap @ 1596 NONAME + _ZTV24QDeclarativeCustomParser @ 1597 NONAME + _ZTV24QDeclarativeDebugService @ 1598 NONAME + _ZTV24QDeclarativeParserStatus @ 1599 NONAME + _ZTV25QDeclarativeImageProvider @ 1600 NONAME + _ZTV26QDeclarativeDebuggerStatus @ 1601 NONAME + _ZTV26QDeclarativeOpenMetaObject @ 1602 NONAME + _ZTV26QDeclarativeStateOperation @ 1603 NONAME + _ZTV27QDeclarativeAbstractBinding @ 1604 NONAME + _ZTV27QDeclarativeDebugConnection @ 1605 NONAME + _ZTV27QDeclarativeExtensionPlugin @ 1606 NONAME + _ZTV28QDeclarativeDebugObjectQuery @ 1607 NONAME + _ZTV29QDeclarativeDebugEnginesQuery @ 1608 NONAME + _ZTV30QDeclarativeDebugPropertyWatch @ 1609 NONAME + _ZTV30QDeclarativeOpenMetaObjectType @ 1610 NONAME + _ZTV31QDeclarativePropertyValueSource @ 1611 NONAME + _ZTV32QDeclarativeDebugExpressionQuery @ 1612 NONAME + _ZTV33QDeclarativeDebugRootContextQuery @ 1613 NONAME + _ZTV36QDeclarativePropertyValueInterceptor @ 1614 NONAME + _ZTV38QDeclarativeDebugObjectExpressionWatch @ 1615 NONAME + _ZTV39QDeclarativeNetworkAccessManagerFactory @ 1616 NONAME + _ZTV7QPacket @ 1617 NONAME + _ZThn16_N16QDeclarativeItem10classBeginEv @ 1618 NONAME + _ZThn16_N16QDeclarativeItem17componentCompleteEv @ 1619 NONAME + _ZThn16_N16QDeclarativeItemD0Ev @ 1620 NONAME + _ZThn16_N16QDeclarativeItemD1Ev @ 1621 NONAME + _ZThn16_N16QDeclarativeText17componentCompleteEv @ 1622 NONAME + _ZThn16_N16QDeclarativeTextD0Ev @ 1623 NONAME + _ZThn16_N16QDeclarativeTextD1Ev @ 1624 NONAME + _ZThn8_N16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1625 NONAME + _ZThn8_N16QDeclarativeItem10sceneEventEP6QEvent @ 1626 NONAME + _ZThn8_N16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 1627 NONAME + _ZThn8_N16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 1628 NONAME + _ZThn8_N16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 1629 NONAME + _ZThn8_N16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1630 NONAME + _ZThn8_N16QDeclarativeItemD0Ev @ 1631 NONAME + _ZThn8_N16QDeclarativeItemD1Ev @ 1632 NONAME + _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 1633 NONAME + _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1634 NONAME + _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1635 NONAME + _ZThn8_N16QDeclarativeTextD0Ev @ 1636 NONAME + _ZThn8_N16QDeclarativeTextD1Ev @ 1637 NONAME + _ZThn8_N16QDeclarativeViewD0Ev @ 1638 NONAME + _ZThn8_N16QDeclarativeViewD1Ev @ 1639 NONAME + _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1640 NONAME + _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 1641 NONAME + _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1642 NONAME + _ZThn8_N19QDeclarativeBindingD0Ev @ 1643 NONAME + _ZThn8_N19QDeclarativeBindingD1Ev @ 1644 NONAME + _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 1645 NONAME + _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 1646 NONAME + _ZThn8_N20QDeclarativeBehaviorD0Ev @ 1647 NONAME + _ZThn8_N20QDeclarativeBehaviorD1Ev @ 1648 NONAME + _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1649 NONAME + _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 1650 NONAME + _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 1651 NONAME + _ZThn8_N22QDeclarativeStateGroupD0Ev @ 1652 NONAME + _ZThn8_N22QDeclarativeStateGroupD1Ev @ 1653 NONAME + _ZThn8_N27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 1654 NONAME + _ZThn8_N27QDeclarativeExtensionPluginD0Ev @ 1655 NONAME + _ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 1656 NONAME + _ZThn8_NK16QDeclarativeItem12boundingRectEv @ 1657 NONAME + _ZThn8_NK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 1658 NONAME + _ZThn8_NK16QDeclarativeText12boundingRectEv @ 1659 NONAME + _ZThn8_NK19QDeclarativeBinding10expressionEv @ 1660 NONAME + _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 1661 NONAME + _Zls6QDebugP16QDeclarativeItem @ 1662 NONAME + _Zls6QDebugRK17QDeclarativeError @ 1663 NONAME + _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1664 NONAME + _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1665 NONAME + _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1666 NONAME + _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1667 NONAME + _ZN18QDeclarativePixmap15connectFinishedEP7QObjectPKc @ 1668 NONAME + _ZN18QDeclarativePixmap15connectFinishedEP7QObjecti @ 1669 NONAME + _ZN18QDeclarativePixmap23connectDownloadProgressEP7QObjectPKc @ 1670 NONAME + _ZN18QDeclarativePixmap23connectDownloadProgressEP7QObjecti @ 1671 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrl @ 1672 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlRK5QSize @ 1673 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlRK5QSizeb @ 1674 NONAME + _ZN18QDeclarativePixmap4loadEP18QDeclarativeEngineRK4QUrlb @ 1675 NONAME + _ZN18QDeclarativePixmap5clearEP7QObject @ 1676 NONAME + _ZN18QDeclarativePixmap5clearEv @ 1677 NONAME + _ZN18QDeclarativePixmap9setPixmapERK7QPixmap @ 1678 NONAME + _ZN18QDeclarativePixmapC1EP18QDeclarativeEngineRK4QUrl @ 1679 NONAME + _ZN18QDeclarativePixmapC1EP18QDeclarativeEngineRK4QUrlRK5QSize @ 1680 NONAME + _ZN18QDeclarativePixmapC1Ev @ 1681 NONAME + _ZN18QDeclarativePixmapC2EP18QDeclarativeEngineRK4QUrl @ 1682 NONAME + _ZN18QDeclarativePixmapC2EP18QDeclarativeEngineRK4QUrlRK5QSize @ 1683 NONAME + _ZN18QDeclarativePixmapC2Ev @ 1684 NONAME + _ZN18QDeclarativePixmapD1Ev @ 1685 NONAME + _ZN18QDeclarativePixmapD2Ev @ 1686 NONAME + _ZNK18QDeclarativePixmap11requestSizeEv @ 1687 NONAME + _ZNK18QDeclarativePixmap12implicitSizeEv @ 1688 NONAME + _ZNK18QDeclarativePixmap3urlEv @ 1689 NONAME + _ZNK18QDeclarativePixmap4rectEv @ 1690 NONAME + _ZNK18QDeclarativePixmap5errorEv @ 1691 NONAME + _ZNK18QDeclarativePixmap5widthEv @ 1692 NONAME + _ZNK18QDeclarativePixmap6heightEv @ 1693 NONAME + _ZNK18QDeclarativePixmap6isNullEv @ 1694 NONAME + _ZNK18QDeclarativePixmap6pixmapEv @ 1695 NONAME + _ZNK18QDeclarativePixmap6statusEv @ 1696 NONAME + _ZNK18QDeclarativePixmap7isErrorEv @ 1697 NONAME + _ZNK18QDeclarativePixmap7isReadyEv @ 1698 NONAME + _ZNK18QDeclarativePixmap9isLoadingEv @ 1699 NONAME + -- cgit v0.12 From a37ae8590026de2ef150e3da1b4b986022d6294a Mon Sep 17 00:00:00 2001 From: Morten Engvoldsen Date: Tue, 6 Jul 2010 10:07:54 +0200 Subject: Doc: fixing img style --- doc/src/template/style/style.css | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/src/template/style/style.css b/doc/src/template/style/style.css index 299806b..184a832 100755 --- a/doc/src/template/style/style.css +++ b/doc/src/template/style/style.css @@ -18,6 +18,8 @@ fieldset, img { border: 0; + height:100%; + width:100% } address, caption, cite, code, dfn, em, strong, th, var, optgroup { @@ -756,6 +758,7 @@ pre { border: 1px solid #DDDDDD; + -moz-border-radius: 7px 7px 7px 7px; margin: 0 20px 10px 10px; padding: 20px 15px 20px 20px; overflow-x: auto; @@ -1023,6 +1026,7 @@ } h3.fn, span.fn { + -moz-border-radius:7px 7px 7px 7px; background-color: #F6F6F6; border-width: 1px; border-style: solid; @@ -1040,6 +1044,7 @@ border-width: 1px; border-style: solid; border-color: #E6E6E6; + -moz-border-radius: 7px 7px 7px 7px; width:100%; } @@ -1199,6 +1204,7 @@ vertical-align:top; width:100%; background-color:#F6F6F6; border:1px solid #E6E6E6; +-moz-border-radius: 7px 7px 7px 7px; font-size:12pt; padding-left:10px; margin-top:10px; @@ -1250,8 +1256,9 @@ pre.highlightedCode { } .navTop{ float:right; - padding-right:5px; - margin-top:15px; + display:block; + padding-right:15px; + /*margin-top:10px;*/ } .wrap .content .toc h3{ -- cgit v0.12 From f36d829ef02c54b18734dd027a1c0d9b55a6171f Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Mon, 5 Jul 2010 07:22:42 -0700 Subject: Spectrum build: fixed DLL rpath Rather than explicitly modifying LD_LIBRARY_PATH using a shell script when the application is launched, the relative path from the application binary to the FFT library is encoded in the application using an --rpath flag. Task-number: QTBUG-11756 Reviewed-by: Andy Shaw --- demos/spectrum/app/app.pro | 13 +++-------- demos/spectrum/app/spectrum.sh | 50 ------------------------------------------ 2 files changed, 3 insertions(+), 60 deletions(-) delete mode 100644 demos/spectrum/app/spectrum.sh diff --git a/demos/spectrum/app/app.pro b/demos/spectrum/app/app.pro index ebeef87..28fdab0 100644 --- a/demos/spectrum/app/app.pro +++ b/demos/spectrum/app/app.pro @@ -3,7 +3,6 @@ include(../spectrum.pri) TEMPLATE = app TARGET = spectrum -unix: !macx: !symbian: TARGET = spectrum.bin QT += multimedia @@ -113,15 +112,9 @@ symbian { # Specify directory in which to create spectrum application DESTDIR = ../bin - unix: !symbian { - # On unices other than Mac OSX, we copy a shell script into the bin directory. - # This script takes care of correctly setting the LD_LIBRARY_PATH so that - # the dynamic library can be located. - copy_launch_script.target = copy_launch_script - copy_launch_script.commands = \ - install -m 0555 $$QT_SOURCE_TREE/demos/spectrum/app/spectrum.sh ../bin/spectrum - QMAKE_EXTRA_TARGETS += copy_launch_script - POST_TARGETDEPS += copy_launch_script + unix: { + # Provide relative path from application to fftreal library + QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN } } } diff --git a/demos/spectrum/app/spectrum.sh b/demos/spectrum/app/spectrum.sh deleted file mode 100644 index 2a230ed..0000000 --- a/demos/spectrum/app/spectrum.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -############################################################################# -## -## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -## All rights reserved. -## Contact: Nokia Corporation (qt-info@nokia.com) -## -## This file is part of the examples of the Qt Toolkit. -## -## $QT_BEGIN_LICENSE:LGPL$ -## No Commercial Usage -## This file contains pre-release code and may not be distributed. -## You may use this file in accordance with the terms and conditions -## contained in the Technology Preview License Agreement accompanying -## this package. -## -## GNU Lesser General Public License Usage -## Alternatively, this file may be used under the terms of the GNU Lesser -## General Public License version 2.1 as published by the Free Software -## Foundation and appearing in the file LICENSE.LGPL included in the -## packaging of this file. Please review the following information to -## ensure the GNU Lesser General Public License version 2.1 requirements -## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -## -## In addition, as a special exception, Nokia gives you certain additional -## rights. These rights are described in the Nokia Qt LGPL Exception -## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -## -## If you have questions regarding the use of this file, please contact -## Nokia at qt-info@nokia.com. -## -## -## -## -## -## -## -## -## $QT_END_LICENSE$ -## -############################################################################# - - -# Shell script for launching spectrum application on Unix systems other than Mac OSX - -bindir=`dirname "$0"` -LD_LIBRARY_PATH="${bindir}:${LD_LIBRARY_PATH}" -export LD_LIBRARY_PATH -exec "${bindir}/spectrum.bin" ${1+"$@"} - -- cgit v0.12 From 78f48dc47dd7ea52f2ad979a7fd5289da9f22e66 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Mon, 5 Jul 2010 11:39:37 +0100 Subject: Spectrum demo: fixed installation All binaries must be written into $$QT_BUILD_DIR/demos/spectrum in order for them to be correctly installed. Task-number: QTBUG-11572 Task-number: QTBUG-11756 Reviewed-by: Andy Shaw --- demos/spectrum/3rdparty/fftreal/fftreal.pro | 14 ++++++++------ demos/spectrum/app/app.pro | 7 +++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/demos/spectrum/3rdparty/fftreal/fftreal.pro b/demos/spectrum/3rdparty/fftreal/fftreal.pro index 6801b42..c9da205 100644 --- a/demos/spectrum/3rdparty/fftreal/fftreal.pro +++ b/demos/spectrum/3rdparty/fftreal/fftreal.pro @@ -1,3 +1,5 @@ +include(../../spectrum.pri) + TEMPLATE = lib TARGET = fftreal @@ -31,13 +33,13 @@ symbian { # Provide unique ID for the generated binary, required by Symbian OS TARGET.UID3 = 0xA000E403 TARGET.CAPABILITY = UserEnvironment +} + +macx { + CONFIG += lib_bundle } else { - macx { - CONFIG += lib_bundle - } else { - DESTDIR = ../../bin - } -} + !symbian: DESTDIR = ../.. +} # Install diff --git a/demos/spectrum/app/app.pro b/demos/spectrum/app/app.pro index 28fdab0..1b419db 100644 --- a/demos/spectrum/app/app.pro +++ b/demos/spectrum/app/app.pro @@ -63,8 +63,7 @@ symbian { LIBS += -F$${fftreal_dir} LIBS += -framework fftreal } else { - # Link to dynamic library which is written to ../bin - LIBS += -L../bin + LIBS += -L.. LIBS += -lfftreal } } @@ -85,7 +84,7 @@ symbian { !contains(DEFINES, DISABLE_FFT) { # Include FFTReal DLL in the SIS file - fftreal.sources = ../3rdparty/fftreal/fftreal.dll + fftreal.sources = ../fftreal.dll fftreal.path = !:/sys/bin DEPLOYMENT += fftreal } @@ -110,7 +109,7 @@ symbian { } } else { # Specify directory in which to create spectrum application - DESTDIR = ../bin + DESTDIR = .. unix: { # Provide relative path from application to fftreal library -- cgit v0.12 From f62f6effab8d1551d8e5e5843dc478addee96de1 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 6 Jul 2010 12:20:24 +0200 Subject: Fix performance of QTextDocumentPrivate::adjustDocumentChangesAndCursors As the changedCursors list grew large, the function used to spend an extraordinate amount of time in QList::contains. The fix removes the changedCursors list outright and replaces it with a flag in QTextCursorPrivate. Done-with: mae --- src/gui/text/qtextcursor.cpp | 3 ++- src/gui/text/qtextcursor_p.h | 1 + src/gui/text/qtextdocument_p.cpp | 34 +++++++++++++++++----------------- src/gui/text/qtextdocument_p.h | 5 ++--- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp index a9caa6b..63aa946 100644 --- a/src/gui/text/qtextcursor.cpp +++ b/src/gui/text/qtextcursor.cpp @@ -64,7 +64,8 @@ enum { QTextCursorPrivate::QTextCursorPrivate(QTextDocumentPrivate *p) : priv(p), x(0), position(0), anchor(0), adjusted_anchor(0), - currentCharFormat(-1), visualNavigation(false), keepPositionOnInsert(false) + currentCharFormat(-1), visualNavigation(false), keepPositionOnInsert(false), + changed(false) { priv->addCursor(this); } diff --git a/src/gui/text/qtextcursor_p.h b/src/gui/text/qtextcursor_p.h index 4e36b95..4b3262f 100644 --- a/src/gui/text/qtextcursor_p.h +++ b/src/gui/text/qtextcursor_p.h @@ -114,6 +114,7 @@ public: int currentCharFormat; uint visualNavigation : 1; uint keepPositionOnInsert : 1; + uint changed : 1; }; QT_END_NAMESPACE diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index a55e5f3..9849317 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -235,17 +235,17 @@ void QTextDocumentPrivate::init() void QTextDocumentPrivate::clear() { Q_Q(QTextDocument); - for (int i = 0; i < cursors.count(); ++i) { - cursors.at(i)->setPosition(0); - cursors.at(i)->currentCharFormat = -1; - cursors.at(i)->anchor = 0; - cursors.at(i)->adjusted_anchor = 0; + + foreach (QTextCursorPrivate *curs, cursors) { + curs->setPosition(0); + curs->currentCharFormat = -1; + curs->anchor = 0; + curs->adjusted_anchor = 0; } QListoldCursors = cursors; QT_TRY{ cursors.clear(); - changedCursors.clear(); QMap::Iterator objectIt = objects.begin(); while (objectIt != objects.end()) { @@ -288,8 +288,8 @@ void QTextDocumentPrivate::clear() QTextDocumentPrivate::~QTextDocumentPrivate() { - for (int i = 0; i < cursors.count(); ++i) - cursors.at(i)->priv = 0; + foreach (QTextCursorPrivate *curs, cursors) + curs->priv = 0; cursors.clear(); undoState = 0; undoEnabled = true; @@ -1225,9 +1225,11 @@ void QTextDocumentPrivate::finishEdit() } } - while (!changedCursors.isEmpty()) { - QTextCursorPrivate *curs = changedCursors.takeFirst(); - emit q->cursorPositionChanged(QTextCursor(curs)); + foreach (QTextCursorPrivate *curs, cursors) { + if (curs->changed) { + curs->changed = false; + emit q->cursorPositionChanged(QTextCursor(curs)); + } } contentsChanged(); @@ -1273,11 +1275,9 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr if (!editBlock) ++revision; - for (int i = 0; i < cursors.size(); ++i) { - QTextCursorPrivate *curs = cursors.at(i); + foreach (QTextCursorPrivate *curs, cursors) { if (curs->adjustPosition(from, addedOrRemoved, op) == QTextCursorPrivate::CursorMoved) { - if (!changedCursors.contains(curs)) - changedCursors.append(curs); + curs->changed = true; } } @@ -1700,8 +1700,8 @@ bool QTextDocumentPrivate::ensureMaximumBlockCount() void QTextDocumentPrivate::aboutToRemoveCell(int from, int to) { Q_ASSERT(from <= to); - for (int i = 0; i < cursors.size(); ++i) - cursors.at(i)->aboutToRemoveCell(from, to); + foreach (QTextCursorPrivate *curs, cursors) + curs->aboutToRemoveCell(from, to); } QT_END_NAMESPACE diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h index 06e0753..dcac99d 100644 --- a/src/gui/text/qtextdocument_p.h +++ b/src/gui/text/qtextdocument_p.h @@ -277,7 +277,7 @@ public: void documentChange(int from, int length); inline void addCursor(QTextCursorPrivate *c) { cursors.append(c); } - inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); changedCursors.removeAll(c); } + inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); } QTextFrame *frameAt(int pos) const; QTextFrame *rootFrame() const; @@ -329,8 +329,7 @@ private: BlockMap blocks; int initialBlockCharFormatIndex; - QList cursors; - QList changedCursors; + QList cursors; QMap objects; QMap resources; QMap cachedResources; -- cgit v0.12 From 3b6c44f773d293f807784b775f352873c793e75a Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Tue, 6 Jul 2010 12:24:20 +0200 Subject: qdoc: Simplified code to enable fixing of QTBUG-6340. Also reworded some of the text for QTBUG-11575. Task-number: QTBUG-6340, QTBUG-11575 --- doc/src/declarative/extending.qdoc | 24 +- tools/qdoc3/htmlgenerator.cpp | 457 ++++++------------------------------- tools/qdoc3/htmlgenerator.h | 25 +- tools/qdoc3/tree.cpp | 17 +- 4 files changed, 97 insertions(+), 426 deletions(-) diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc index 28d4ed4..2fd6fa8 100644 --- a/doc/src/declarative/extending.qdoc +++ b/doc/src/declarative/extending.qdoc @@ -423,22 +423,14 @@ signals with the \l {Connections} element. Additionally, if a property is added to a C++ class, all QML elements based on that C++ class will have a \e{value-changed} signal handler -for that property. The name of the signal handler is \e{onChanged}, with the first letter of the property name being upper -cased. - -\note If the NOTIFY signal for the added property is not simply -\c{Changed()}, then you will get two equivalent signal -handlers, one because of the signal, one because of the property. For -example, if the property \c{test_property} with NOTIFY signal -\c{testPropChanged()} is added to a C++ class, then QML elements based -on that C++ class will have two signal handlers: -\c{onTest_propertyChanged} because of the property, and -\c{onTestPropChanged} because of the NOTIFY signal. For clarity, we -suggest that for properties exposed to QML in this way, the name of -the NOTIFY signal should be just \c{Changed()}, so that -there will be just one signal handler in QML and one naming -convention used. +for that property. The name of the signal handler is +\e{onChanged}, with the first letter of the property +name being upper case. + +\note The QML signal handler will always be named +onChanged, regardless of the name used for the NOTIFY +signal in C++. We recommend using Changed() for the +NOTIFY signal in C++. See also \l {Extending types from QML}. diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp index 49ba5f6..89b1e98 100644 --- a/tools/qdoc3/htmlgenerator.cpp +++ b/tools/qdoc3/htmlgenerator.cpp @@ -1359,7 +1359,7 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner, if (!s->inherited.isEmpty()) { out() << "
    \n"; - generateSectionInheritedList(*s, inner, marker, true); + generateSectionInheritedList(*s, inner, marker); out() << "
\n"; } } @@ -2636,44 +2636,6 @@ void HtmlGenerator::generateLegaleseList(const Node *relative, } } -/*void HtmlGenerator::generateSynopsis(const Node *node, - const Node *relative, - CodeMarker *marker, - CodeMarker::SynopsisStyle style) -{ - QString marked = marker->markedUpSynopsis(node, relative, style); - QRegExp templateTag("(<[^@>]*>)"); - if (marked.indexOf(templateTag) != -1) { - QString contents = protectEnc(marked.mid(templateTag.pos(1), - templateTag.cap(1).length())); - marked.replace(templateTag.pos(1), templateTag.cap(1).length(), - contents); - } - marked.replace(QRegExp("<@param>([a-z]+)_([1-9n])"), - "\\1\\2"); - marked.replace("<@param>", ""); - marked.replace("", ""); - - if (style == CodeMarker::Summary) - marked.replace("@name>", "b>"); - - if (style == CodeMarker::SeparateList) { - QRegExp extraRegExp("<@extra>.*"); - extraRegExp.setMinimal(true); - marked.replace(extraRegExp, ""); - } - else { - marked.replace("<@extra>", "  "); - marked.replace("", ""); - } - - if (style != CodeMarker::Detailed) { - marked.replace("<@type>", ""); - marked.replace("", ""); - } - out() << highlightedCode(marked, marker, relative); -}*/ - #ifdef QDOC_QML void HtmlGenerator::generateQmlItem(const Node *node, const Node *relative, @@ -2703,6 +2665,17 @@ void HtmlGenerator::generateQmlItem(const Node *node, marked.replace("<@type>", ""); marked.replace("", ""); } + if (node->type() == Node::QmlProperty) { + const QmlPropertyNode* qpn = static_cast(node); + if (!summary && qpn->name() == "color" && qpn->dataType() == "color") { + if (relative && relative->name() == "GradientStop") { + qDebug() << "color : color"; + debugging_on = true; + qDebug() << " " << relative->name() << relative->type() << relative->subType(); + qDebug() << marked; + } + } + } out() << highlightedCode(marked, marker, relative); debugging_on = false; } @@ -2822,24 +2795,23 @@ void HtmlGenerator::generateOverviewList(const Node *relative, CodeMarker * /* m } } -#ifdef QDOC_NAME_ALIGNMENT void HtmlGenerator::generateSection(const NodeList& nl, const Node *relative, CodeMarker *marker, CodeMarker::SynopsisStyle style) { - bool name_alignment = true; + bool alignNames = true; if (!nl.isEmpty()) { bool twoColumn = false; if (style == CodeMarker::SeparateList) { - name_alignment = false; + alignNames = false; twoColumn = (nl.count() >= 16); } else if (nl.first()->type() == Node::Property) { twoColumn = (nl.count() >= 5); - name_alignment = false; + alignNames = false; } - if (name_alignment) { + if (alignNames) { out() << "\n"; } else { @@ -2857,7 +2829,7 @@ void HtmlGenerator::generateSection(const NodeList& nl, continue; } - if (name_alignment) { + if (alignNames) { out() << "\n"; else out() << "\n"; i++; ++m; } - if (name_alignment) + if (alignNames) out() << "
"; } else { @@ -2866,15 +2838,15 @@ void HtmlGenerator::generateSection(const NodeList& nl, out() << "
  • "; } - generateSynopsis(*m, relative, marker, style, name_alignment); - if (name_alignment) + generateSynopsis(*m, relative, marker, style, alignNames); + if (alignNames) out() << "
  • \n"; else { out() << "\n"; @@ -2889,18 +2861,18 @@ void HtmlGenerator::generateSectionList(const Section& section, CodeMarker *marker, CodeMarker::SynopsisStyle style) { - bool name_alignment = true; + bool alignNames = true; if (!section.members.isEmpty()) { bool twoColumn = false; if (style == CodeMarker::SeparateList) { - name_alignment = false; + alignNames = false; twoColumn = (section.members.count() >= 16); } else if (section.members.first()->type() == Node::Property) { twoColumn = (section.members.count() >= 5); - name_alignment = false; + alignNames = false; } - if (name_alignment) { + if (alignNames) { out() << "\n"; } else { @@ -2918,7 +2890,7 @@ void HtmlGenerator::generateSectionList(const Section& section, continue; } - if (name_alignment) { + if (alignNames) { out() << "\n"; else out() << "\n"; i++; ++m; } - if (name_alignment) + if (alignNames) out() << "
    "; } else { @@ -2927,15 +2899,15 @@ void HtmlGenerator::generateSectionList(const Section& section, out() << "
  • "; } - generateSynopsis(*m, relative, marker, style, name_alignment); - if (name_alignment) + generateSynopsis(*m, relative, marker, style, alignNames); + if (alignNames) out() << "
  • \n"; else { out() << "\n"; @@ -2946,22 +2918,18 @@ void HtmlGenerator::generateSectionList(const Section& section, if (style == CodeMarker::Summary && !section.inherited.isEmpty()) { out() << "
      \n"; - generateSectionInheritedList(section, relative, marker, name_alignment); + generateSectionInheritedList(section, relative, marker); out() << "
    \n"; } } void HtmlGenerator::generateSectionInheritedList(const Section& section, const Node *relative, - CodeMarker *marker, - bool nameAlignment) + CodeMarker *marker) { QList >::ConstIterator p = section.inherited.begin(); while (p != section.inherited.end()) { - if (nameAlignment) - out() << "
  • "; - else - out() << "
  • "; + out() << "
  • "; out() << (*p).second << " "; if ((*p).second == 1) { out() << section.singularMember; @@ -2981,7 +2949,7 @@ void HtmlGenerator::generateSynopsis(const Node *node, const Node *relative, CodeMarker *marker, CodeMarker::SynopsisStyle style, - bool nameAlignment) + bool alignNames) { QString marked = marker->markedUpSynopsis(node, relative, style); QRegExp templateTag("(<[^@>]*>)"); @@ -3014,14 +2982,13 @@ void HtmlGenerator::generateSynopsis(const Node *node, marked.replace("<@type>", ""); marked.replace("", ""); } - out() << highlightedCode(marked, marker, relative, style, nameAlignment); + out() << highlightedCode(marked, marker, relative, alignNames); } QString HtmlGenerator::highlightedCode(const QString& markedCode, - CodeMarker *marker, - const Node *relative, - CodeMarker::SynopsisStyle , - bool nameAlignment) + CodeMarker* marker, + const Node* relative, + bool alignNames) { QString src = markedCode; QString html; @@ -3031,20 +2998,24 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode, const QChar charLangle = '<'; const QChar charAt = '@'; - // replace all <@link> tags: "(<@link node=\"([^\"]+)\">).*()" + static const QString typeTag("type"); + static const QString headerTag("headerfile"); + static const QString funcTag("func"); static const QString linkTag("link"); + + // replace all <@link> tags: "(<@link node=\"([^\"]+)\">).*()" bool done = false; - for (int i = 0, n = src.size(); i < n;) { + for (int i = 0, srcSize = src.size(); i < srcSize;) { if (src.at(i) == charLangle && src.at(i + 1).unicode() == '@') { - if (nameAlignment && !done) {// && (i != 0)) Why was this here? + if (alignNames && !done) {// && (i != 0)) Why was this here? html += ""; done = true; } i += 2; - if (parseArg(src, linkTag, &i, n, &arg, &par1)) { + if (parseArg(src, linkTag, &i, srcSize, &arg, &par1)) { html += ""; - QString link = linkForNode( - CodeMarker::nodeForString(par1.toString()), relative); + const Node* n = CodeMarker::nodeForString(par1.toString()); + QString link = linkForNode(n, relative); addLink(link, arg, &html); html += ""; } @@ -3064,16 +3035,14 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode, // replace all <@func> tags: "(<@func target=\"([^\"]*)\">)(.*)()" src = html; html = QString(); - static const QString funcTag("func"); - for (int i = 0, n = src.size(); i < n;) { + for (int i = 0, srcSize = src.size(); i < srcSize;) { if (src.at(i) == charLangle && src.at(i + 1) == charAt) { i += 2; - if (parseArg(src, funcTag, &i, n, &arg, &par1)) { - QString link = linkForNode( - marker->resolveTarget(par1.toString(), - myTree, - relative), - relative); + if (parseArg(src, funcTag, &i, srcSize, &arg, &par1)) { + const Node* n = marker->resolveTarget(par1.toString(), + myTree, + relative); + QString link = linkForNode(n, relative); addLink(link, arg, &html); par1 = QStringRef(); } @@ -3091,295 +3060,36 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode, // replace all "(<@(type|headerfile|func)(?: +[^>]*)?>)(.*)()" tags src = html; html = QString(); - static const QString typeTags[] = { "type", "headerfile", "func" }; - for (int i = 0, n = src.size(); i < n;) { - if (src.at(i) == charLangle && src.at(i + 1) == charAt) { + + for (int i=0, srcSize=src.size(); iresolveTarget(arg.toString(), myTree, relative); - QString link = linkForNode(n,relative); - addLink(link, arg, &html); - handled = true; - break; + if (parseArg(src, typeTag, &i, srcSize, &arg, &par1)) { + par1 = QStringRef(); + const Node* n = marker->resolveTarget(arg.toString(), myTree, relative); + if (HtmlGenerator::debugging_on) { + if (n) { + qDebug() << " " << n->name() << n->type() << n->subType(); + qDebug() << " " << relative->name() << relative->type() << relative->subType(); + } } + addLink(linkForNode(n,relative), arg, &html); + handled = true; } - if (!handled) { - html += charLangle; - html += charAt; - } - } - else { - html += src.at(i++); - } - } - - // replace all - // "<@comment>" -> ""; - // "<@preprocessor>" -> ""; - // "<@string>" -> ""; - // "<@char>" -> ""; - // "" -> "" - src = html; - html = QString(); - static const QString spanTags[] = { - "<@comment>", "", - "<@preprocessor>", "", - "<@string>", "", - "<@char>", "", - "", "", - "","", - "", "", - "", "" - // "<@char>", "", - // "", "", - // "<@func>", "", - // "", "", - // "<@id>", "", - // "", "", - // "<@keyword>", "", - // "", "", - // "<@number>", "", - // "", "", - // "<@op>", "", - // "", "", - // "<@param>", "", - // "", "", - // "<@string>", "", - // "", "", - }; - for (int i = 0, n = src.size(); i < n;) { - if (src.at(i) == charLangle) { - bool handled = false; - for (int k = 0; k != 8; ++k) { - const QString & tag = spanTags[2 * k]; - if (tag == QStringRef(&src, i, tag.length())) { - html += spanTags[2 * k + 1]; - i += tag.length(); - handled = true; - break; - } + else if (parseArg(src, headerTag, &i, srcSize, &arg, &par1)) { + par1 = QStringRef(); + const Node* n = marker->resolveTarget(arg.toString(), myTree, relative); + addLink(linkForNode(n,relative), arg, &html); + handled = true; } - if (!handled) { - ++i; - if (src.at(i) == charAt || - (src.at(i) == QLatin1Char('/') && src.at(i + 1) == charAt)) { - // drop 'our' unknown tags (the ones still containing '@') - while (i < n && src.at(i) != QLatin1Char('>')) - ++i; - ++i; - } - else { - // retain all others - html += charLangle; - } + else if (parseArg(src, funcTag, &i, srcSize, &arg, &par1)) { + par1 = QStringRef(); + const Node* n = marker->resolveTarget(arg.toString(), myTree, relative); + addLink(linkForNode(n,relative), arg, &html); + handled = true; } - } - else { - html += src.at(i); - ++i; - } - } - - return html; -} -#else -void HtmlGenerator::generateSectionList(const Section& section, - const Node *relative, - CodeMarker *marker, - CodeMarker::SynopsisStyle style) -{ - if (!section.members.isEmpty()) { - bool twoColumn = false; - if (style == CodeMarker::SeparateList) { - twoColumn = (section.members.count() >= 16); - } - else if (section.members.first()->type() == Node::Property) { - twoColumn = (section.members.count() >= 5); - } - if (twoColumn) - out() << "\n"; - if (++numTableRows % 2 == 1) - out() << ""; - else - out() << ""; - -// << "\n
    "; - out() << "
      \n"; - - int i = 0; - NodeList::ConstIterator m = section.members.begin(); - while (m != section.members.end()) { - if ((*m)->access() == Node::Private) { - ++m; - continue; - } - - if (twoColumn && i == (int) (section.members.count() + 1) / 2) - out() << "
      \n"; - - out() << "
    • "; - if (style == CodeMarker::Accessors) - out() << ""; - generateSynopsis(*m, relative, marker, style); - if (style == CodeMarker::Accessors) - out() << ""; - out() << "
    • \n"; - i++; - ++m; - } - out() << "
    \n"; - if (twoColumn) - out() << "
    \n"; - } - - if (style == CodeMarker::Summary && !section.inherited.isEmpty()) { - out() << "
      \n"; - generateSectionInheritedList(section, relative, marker); - out() << "
    \n"; - } -} - -void HtmlGenerator::generateSectionInheritedList(const Section& section, - const Node *relative, - CodeMarker *marker) -{ - QList >::ConstIterator p = section.inherited.begin(); - while (p != section.inherited.end()) { - out() << "
  • "; - out() << (*p).second << " "; - if ((*p).second == 1) { - out() << section.singularMember; - } else { - out() << section.pluralMember; - } - out() << " inherited from " - << protectEnc(marker->plainFullName((*p).first, relative)) - << "
  • \n"; - ++p; - } -} - -void HtmlGenerator::generateSynopsis(const Node *node, - const Node *relative, - CodeMarker *marker, - CodeMarker::SynopsisStyle style) -{ - QString marked = marker->markedUpSynopsis(node, relative, style); - QRegExp templateTag("(<[^@>]*>)"); - if (marked.indexOf(templateTag) != -1) { - QString contents = protectEnc(marked.mid(templateTag.pos(1), - templateTag.cap(1).length())); - marked.replace(templateTag.pos(1), templateTag.cap(1).length(), - contents); - } - marked.replace(QRegExp("<@param>([a-z]+)_([1-9n])"), "\\1\\2"); - marked.replace("<@param>", ""); - marked.replace("", ""); - - if (style == CodeMarker::Summary) - marked.replace("@name>", "b>"); - - if (style == CodeMarker::SeparateList) { - QRegExp extraRegExp("<@extra>.*"); - extraRegExp.setMinimal(true); - marked.replace(extraRegExp, ""); - } else { - marked.replace("<@extra>", ""); - marked.replace("", ""); - } - - if (style != CodeMarker::Detailed) { - marked.replace("<@type>", ""); - marked.replace("", ""); - } - out() << highlightedCode(marked, marker, relative); -} - -QString HtmlGenerator::highlightedCode(const QString& markedCode, - CodeMarker *marker, - const Node *relative) -{ - QString src = markedCode; - QString html; - QStringRef arg; - QStringRef par1; - - const QChar charLangle = '<'; - const QChar charAt = '@'; - - // replace all <@link> tags: "(<@link node=\"([^\"]+)\">).*()" - static const QString linkTag("link"); - for (int i = 0, n = src.size(); i < n;) { - if (src.at(i) == charLangle && src.at(i + 1) == charAt) { - i += 2; - if (parseArg(src, linkTag, &i, n, &arg, &par1)) { - const Node* node = CodeMarker::nodeForString(par1.toString()); - QString link = linkForNode(node, relative); - addLink(link, arg, &html); - } - else { - html += charLangle; - html += charAt; - } - } - else { - html += src.at(i++); - } - } - - if (slow) { - // is this block ever used at all? - // replace all <@func> tags: "(<@func target=\"([^\"]*)\">)(.*)()" - src = html; - html = QString(); - static const QString funcTag("func"); - for (int i = 0, n = src.size(); i < n;) { - if (src.at(i) == charLangle && src.at(i + 1) == charAt) { - i += 2; - if (parseArg(src, funcTag, &i, n, &arg, &par1)) { - QString link = linkForNode( - marker->resolveTarget(par1.toString(), - myTree, - relative), - relative); - addLink(link, arg, &html); - par1 = QStringRef(); - } - else { - html += charLangle; - html += charAt; - } - } - else { - html += src.at(i++); - } - } - } - - // replace all "(<@(type|headerfile|func)(?: +[^>]*)?>)(.*)()" tags - src = html; - html = QString(); - static const QString typeTags[] = { "type", "headerfile", "func" }; - for (int i = 0, n = src.size(); i < n;) { - if (src.at(i) == charLangle && src.at(i + 1) == charAt) { - i += 2; - bool handled = false; - for (int k = 0; k != 3; ++k) { - if (parseArg(src, typeTags[k], &i, n, &arg, &par1)) { - par1 = QStringRef(); - QString link = linkForNode( - marker->resolveTarget(arg.toString(), myTree, relative), - relative); - addLink(link, arg, &html); - handled = true; - break; - } - } if (!handled) { html += charLangle; html += charAt; @@ -3407,22 +3117,6 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode, "","", "", "", "", "" - // "<@char>", "", - // "", "", - // "<@func>", "", - // "", "", - // "<@id>", "", - // "", "", - // "<@keyword>", "", - // "", "", - // "<@number>", "", - // "", "", - // "<@op>", "", - // "", "", - // "<@param>", "", - // "", "", - // "<@string>", "", - // "", "", }; for (int i = 0, n = src.size(); i < n;) { if (src.at(i) == charLangle) { @@ -3459,7 +3153,6 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode, return html; } -#endif void HtmlGenerator::generateLink(const Atom* atom, const Node* /* relative */, diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h index aad5021..80341de 100644 --- a/tools/qdoc3/htmlgenerator.h +++ b/tools/qdoc3/htmlgenerator.h @@ -46,8 +46,6 @@ #ifndef HTMLGENERATOR_H #define HTMLGENERATOR_H -#define QDOC_NAME_ALIGNMENT - #include #include #include @@ -198,7 +196,7 @@ class HtmlGenerator : public PageGenerator void generateQmlInstantiates(const QmlClassNode* qcn, CodeMarker* marker); void generateInstantiatedBy(const ClassNode* cn, CodeMarker* marker); #endif -#ifdef QDOC_NAME_ALIGNMENT + void generateSection(const NodeList& nl, const Node *relative, CodeMarker *marker, @@ -207,28 +205,15 @@ class HtmlGenerator : public PageGenerator const Node *relative, CodeMarker *marker, CodeMarker::SynopsisStyle style, - bool nameAlignment = false); - void generateSectionInheritedList(const Section& section, - const Node *relative, - CodeMarker *marker, - bool nameAlignment = false); - QString highlightedCode(const QString& markedCode, - CodeMarker *marker, - const Node *relative, - CodeMarker::SynopsisStyle style = CodeMarker::Accessors, - bool nameAlignment = false); -#else - void generateSynopsis(const Node *node, - const Node *relative, - CodeMarker *marker, - CodeMarker::SynopsisStyle style); + bool alignNames = false); void generateSectionInheritedList(const Section& section, const Node *relative, CodeMarker *marker); QString highlightedCode(const QString& markedCode, CodeMarker *marker, - const Node *relative); -#endif + const Node *relative, + bool alignNames = false); + void generateFullName(const Node *apparentNode, const Node *relative, CodeMarker *marker, diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp index d3de46c..70b998f 100644 --- a/tools/qdoc3/tree.cpp +++ b/tools/qdoc3/tree.cpp @@ -134,15 +134,16 @@ Node *Tree::findNode(const QStringList &path, Node *relative, int findFlags) /*! */ -const Node *Tree::findNode(const QStringList &path, - const Node *relative, +const Node* Tree::findNode(const QStringList &path, + const Node* start, int findFlags) const { - if (!relative) - relative = root(); + const Node* current = start; + if (!current) + current = root(); do { - const Node *node = relative; + const Node *node = current; int i; for (i = 0; i < path.size(); ++i) { @@ -171,10 +172,10 @@ const Node *Tree::findNode(const QStringList &path, if (node && i == path.size() && (!(findFlags & NonFunction) || node->type() != Node::Function || ((FunctionNode *)node)->metaness() == FunctionNode::MacroWithoutParams)) - if (node->subType() != Node::QmlPropertyGroup) + if ((node != start) && (node->subType() != Node::QmlPropertyGroup)) return node; - relative = relative->parent(); - } while (relative); + current = current->parent(); + } while (current); return 0; } -- cgit v0.12 From 4a1d231cd5e0b756a919642b9faf35146a190b95 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Tue, 6 Jul 2010 13:33:47 +0200 Subject: Support QSslSocket::systemCaCertificates() on Symbian Implemented access to the unified certificate store on Symbian with Shane and Peter's help. Task-number: QTBUG-11399 Reviewed-by: Shane Kearns Reviewed-by: Peter Hartmann --- src/network/network.pro | 2 +- src/network/ssl/qsslsocket_openssl.cpp | 134 +++++++++++++++++++++++++++++++++ src/network/ssl/qsslsocket_openssl_p.h | 64 ++++++++++++++++ 3 files changed, 199 insertions(+), 1 deletion(-) diff --git a/src/network/network.pro b/src/network/network.pro index 8582d8a..7ed7d3a 100644 --- a/src/network/network.pro +++ b/src/network/network.pro @@ -27,5 +27,5 @@ QMAKE_LIBS += $$QMAKE_LIBS_NETWORK symbian { TARGET.UID3=0x2001B2DE - LIBS += -lesock -linsock + LIBS += -lesock -linsock -lcertstore -lefsrv -lctframework } diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index cad8ca7..d7088ee 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -68,6 +68,8 @@ PtrCertOpenSystemStoreW QSslSocketPrivate::ptrCertOpenSystemStoreW = 0; PtrCertFindCertificateInStore QSslSocketPrivate::ptrCertFindCertificateInStore = 0; PtrCertCloseStore QSslSocketPrivate::ptrCertCloseStore = 0; +#elif defined(Q_OS_SYMBIAN) +#include #endif QT_BEGIN_NAMESPACE @@ -565,6 +567,119 @@ void QSslSocketPrivate::resetDefaultCiphers() setDefaultCiphers(ciphers); } +#if defined(Q_OS_SYMBIAN) + +QCertificateRetriever::QCertificateRetriever(QCertificateConsumer* parent) + : CActive(EPriorityStandard) + , certStore(0) + , certFilter(0) + , consumer(parent) + , currentCertificateIndex(0) + , certDescriptor(0, 0) +{ + CActiveScheduler::Add(this); + QT_TRAP_THROWING(certStore = CUnifiedCertStore::NewL(qt_s60GetRFs(), EFalse)); + QT_TRAP_THROWING(certFilter = CCertAttributeFilter::NewL()); + certFilter->SetFormat(EX509Certificate); +} + +QCertificateRetriever::~QCertificateRetriever() +{ + delete certFilter; + delete certStore; + Cancel(); +} + +void QCertificateRetriever::fetch() +{ + certStore->Initialize(iStatus); + state = Initializing; + SetActive(); +} + +void QCertificateRetriever::list() +{ + certStore->List(certs, *certFilter, iStatus); + state = Listing; + SetActive(); +} + +void QCertificateRetriever::retrieveNextCertificate() +{ + CCTCertInfo* cert = certs[currentCertificateIndex]; + currentCertificate.resize(cert->Size()); + certDescriptor.Set((TUint8*)currentCertificate.data(), 0, currentCertificate.size()); + certStore->Retrieve(*cert, certDescriptor, iStatus); + state = RetrievingCertificates; + SetActive(); +} + +void QCertificateRetriever::RunL() +{ + switch (state) { + case Initializing: + list(); + break; + case Listing: + currentCertificateIndex = 0; + retrieveNextCertificate(); + break; + case RetrievingCertificates: + consumer->addEncodedCertificate(currentCertificate); + currentCertificate = QByteArray(); + + currentCertificateIndex++; + + if (currentCertificateIndex < certs.Count()) + retrieveNextCertificate(); + else + consumer->finish(); + break; + } +} + +void QCertificateRetriever::DoCancel() +{ + switch (state) { + case Initializing: + certStore->CancelInitialize(); + break; + case Listing: + certStore->CancelList(); + break; + case RetrievingCertificates: + certStore->CancelRetrieve(); + break; + } +} + +QCertificateConsumer::QCertificateConsumer(QObject* parent) + : QObject(parent) + , retriever(0) +{ +} + +QCertificateConsumer::~QCertificateConsumer() +{ + delete retriever; +} + +void QCertificateConsumer::finish() +{ + delete retriever; + retriever = 0; + emit finished(); +} + +void QCertificateConsumer::start() +{ + retriever = new QCertificateRetriever(this); + Q_CHECK_PTR(retriever); + retriever->fetch(); +} + +#endif // defined(Q_OS_SYMBIAN) + QList QSslSocketPrivate::systemCaCertificates() { ensureInitialized(); @@ -638,7 +753,26 @@ QList QSslSocketPrivate::systemCaCertificates() systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/lib/ssl/certs/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Gentoo, Mandrake systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/share/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Centos, Redhat, SuSE systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/ssl/*.pem"), QSsl::Pem, QRegExp::Wildcard)); // Normal OpenSSL Tarball +#elif defined(Q_OS_SYMBIAN) + QThread* certThread = new QThread; + + QCertificateConsumer *consumer = new QCertificateConsumer(); + consumer->moveToThread(certThread); + QObject::connect(certThread, SIGNAL(started()), consumer, SLOT(start())); + QObject::connect(consumer, SIGNAL(finished()), certThread, SLOT(quit()), Qt::DirectConnection); + + certThread->start(); + certThread->wait(); + foreach (const QByteArray &encodedCert, consumer->encodedCertificates()) { + QSslCertificate cert(encodedCert, QSsl::Der); + if (!cert.isNull()) + systemCerts.append(cert); + } + + delete consumer; + delete certThread; #endif + return systemCerts; } diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h index 3c08757..e41320d 100644 --- a/src/network/ssl/qsslsocket_openssl_p.h +++ b/src/network/ssl/qsslsocket_openssl_p.h @@ -118,6 +118,70 @@ public: static QList STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509); }; +#if defined(Q_OS_SYMBIAN) +#include // link against certstore.lib +#include // link against ctframework.lib + +class QCertificateRetriever; + +class QCertificateConsumer : public QObject +{ + Q_OBJECT +public: + QCertificateConsumer(QObject* parent = 0); + ~QCertificateConsumer(); + + void finish(); + + void addEncodedCertificate(const QByteArray& certificate) + { certificates.append(certificate); } + QList encodedCertificates() const { return certificates; } + +public slots: + void start(); + +signals: + void finished(); + +private: + QList certificates; + QCertificateRetriever *retriever; +}; + + +class QCertificateRetriever : public CActive +{ +public: + QCertificateRetriever(QCertificateConsumer* consumer); + ~QCertificateRetriever(); + + void fetch(); + +private: + virtual void RunL(); + virtual void DoCancel(); + + void list(); + void retrieveNextCertificate(); + + enum { + Initializing, + Listing, + RetrievingCertificates + } state; + + CUnifiedCertStore* certStore; + RMPointerArray certs; + CCertAttributeFilter* certFilter; + QCertificateConsumer* consumer; + int currentCertificateIndex; + QByteArray currentCertificate; + TPtr8 certDescriptor; +}; + +#endif + + QT_END_NAMESPACE #endif -- cgit v0.12 From e6b2fb8df994a4cb3de2f9896aea64858eb3d238 Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Tue, 6 Jul 2010 13:39:41 +0200 Subject: Prevent a recursive debug output loop when writing to the logger widget. (On Maemo5 the input method may generate a qWarning when someone clicks into the logger widget, which leads to an endless output recursion) Reviewed-by: Harald Fernengel --- tools/qml/main.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index d0817bc..d5ad9ad 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include "qdeclarativetester.h" QT_USE_NAMESPACE @@ -89,19 +90,25 @@ void showWarnings() } } +static QAtomicInt recursiveLock(0); + void myMessageOutput(QtMsgType type, const char *msg) { + QString strMsg = QString::fromLatin1(msg); + if (!logger.isNull() && !QCoreApplication::closingDown()) { - QString strMsg = QString::fromAscii(msg); - QMetaObject::invokeMethod(logger.data(), "append", Q_ARG(QString, strMsg)); + if (recursiveLock.testAndSetOrdered(0, 1)) { + QMetaObject::invokeMethod(logger.data(), "append", Q_ARG(QString, strMsg)); + recursiveLock = 0; + } } else { - warnings += msg; + warnings += strMsg; warnings += QLatin1Char('\n'); } if (systemMsgOutput) { // Windows systemMsgOutput(type, msg); } else { // Unix - fprintf(stderr, "%s\n",msg); + fprintf(stderr, "%s\n", msg); fflush(stderr); } } -- cgit v0.12 From 92b6ca830f279cfa9d37946f1fd72843b24e704b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 2 Jul 2010 17:38:10 +0200 Subject: fix bogus return value from qprocess::execute() Task-number: QTBUG-230, QTBUG-5866 Reviewed-by: joerg --- src/corelib/io/qprocess.cpp | 14 ++++++++++---- tests/auto/qprocess/tst_qprocess.cpp | 9 +++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 8eba2b0..4c21a40 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -2082,14 +2082,19 @@ QProcess::ExitStatus QProcess::exitStatus() const process. On Windows, arguments that contain spaces are wrapped in quotes. + + If the process cannot be started, -2 is returned. If the process + crashes, -1 is returned. Otherwise, the process' exit code is + returned. */ int QProcess::execute(const QString &program, const QStringList &arguments) { QProcess process; process.setReadChannelMode(ForwardedChannels); process.start(program, arguments); - process.waitForFinished(-1); - return process.exitCode(); + if (!process.waitForFinished(-1)) + return -2; + return process.exitStatus() == QProcess::NormalExit ? process.exitCode() : -1; } /*! @@ -2104,8 +2109,9 @@ int QProcess::execute(const QString &program) QProcess process; process.setReadChannelMode(ForwardedChannels); process.start(program); - process.waitForFinished(-1); - return process.exitCode(); + if (!process.waitForFinished(-1)) + return -2; + return process.exitStatus() == QProcess::NormalExit ? process.exitCode() : -1; } /*! diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/qprocess/tst_qprocess.cpp index 8dae9a0..8242d30 100644 --- a/tests/auto/qprocess/tst_qprocess.cpp +++ b/tests/auto/qprocess/tst_qprocess.cpp @@ -93,6 +93,7 @@ private slots: void getSetCheck(); void constructing(); void simpleStart(); + void execute(); void startDetached(); void crashTest(); void crashTest2(); @@ -284,6 +285,14 @@ void tst_QProcess::simpleStart() QCOMPARE(qVariantValue(spy.at(2).at(0)), QProcess::NotRunning); } //----------------------------------------------------------------------------- +void tst_QProcess::execute() +{ + QCOMPARE(QProcess::execute("testProcessNormal/testProcessNormal", + QStringList() << "arg1" << "arg2"), 0); + QCOMPARE(QProcess::execute("nonexistingexe"), -2); +} + +//----------------------------------------------------------------------------- void tst_QProcess::startDetached() { QProcess proc; -- cgit v0.12 From 4fe7291edcac2688f042a11ff5c23374c6c0375d Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 6 Jul 2010 13:56:38 +0200 Subject: add setNativeArguments() and nativeArguments() this function enables starting subprocesses which need command lines which cannot be constructed via the portable list-based api. such cases would be programs which need quoting rules which diverge from the msvc runtime. Reviewed-by: joerg Task-number: QTBUG-7620 (and various others which boil down to that) --- src/corelib/io/qprocess.cpp | 44 ++++++++++++++++++ src/corelib/io/qprocess.h | 5 +++ src/corelib/io/qprocess_p.h | 3 ++ src/corelib/io/qprocess_symbian.cpp | 17 ++++--- src/corelib/io/qprocess_win.cpp | 5 +++ src/s60installs/bwins/QtCoreu.def | 2 + src/s60installs/eabi/QtCoreu.def | 2 + tests/auto/qprocess/testProcessSpacesArgs/main.cpp | 7 ++- tests/auto/qprocess/tst_qprocess.cpp | 52 ++++++++++++++++++++++ 9 files changed, 129 insertions(+), 8 deletions(-) diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 4c21a40..9bc4063 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -1377,6 +1377,50 @@ void QProcess::setStandardOutputProcess(QProcess *destination) dto->stdinChannel.pipeFrom(dfrom); } +#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) + +/*! + \since 4.7 + + Returns the additional native command line arguments for the program. + + \note This function is available only on the Windows and Symbian + platforms. + + \sa setNativeArguments() +*/ +QString QProcess::nativeArguments() const +{ + Q_D(const QProcess); + return d->nativeArguments; +} + +/*! + \since 4.7 + \overload + + Sets additional native command line arguments for the program. + + On operating systems where the system API for passing command line + arguments to a subprocess natively uses a single string, one can + conceive command lines which cannot be passed via QProcess's portable + list-based API. In such cases this function must be used to set a + string which is \e appended to the string composed from the usual + argument list, with a delimiting space. + + \note This function is available only on the Windows and Symbian + platforms. + + \sa nativeArguments() +*/ +void QProcess::setNativeArguments(const QString &arguments) +{ + Q_D(QProcess); + d->nativeArguments = arguments; +} + +#endif + /*! If QProcess has been assigned a working directory, this function returns the working directory that the QProcess will enter before the program has diff --git a/src/corelib/io/qprocess.h b/src/corelib/io/qprocess.h index f84b855..b07d742 100644 --- a/src/corelib/io/qprocess.h +++ b/src/corelib/io/qprocess.h @@ -148,6 +148,11 @@ public: void setStandardErrorFile(const QString &fileName, OpenMode mode = Truncate); void setStandardOutputProcess(QProcess *destination); +#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) + QString nativeArguments() const; + void setNativeArguments(const QString &arguments); +#endif + QString workingDirectory() const; void setWorkingDirectory(const QString &dir); diff --git a/src/corelib/io/qprocess_p.h b/src/corelib/io/qprocess_p.h index 60b7b5a..8b7e3ff 100644 --- a/src/corelib/io/qprocess_p.h +++ b/src/corelib/io/qprocess_p.h @@ -181,6 +181,9 @@ public: QString program; QStringList arguments; +#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) + QString nativeArguments; +#endif QProcessEnvironment environment; QRingBuffer outputReadBuffer; diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp index 92212fe..af657b2 100644 --- a/src/corelib/io/qprocess_symbian.cpp +++ b/src/corelib/io/qprocess_symbian.cpp @@ -219,7 +219,8 @@ static bool qt_rprocess_running(RProcess *proc) return false; } -static void qt_create_symbian_commandline(const QStringList &arguments, QString &commandLine) +static void qt_create_symbian_commandline( + const QStringList &arguments, const QString &nativeArguments, QString &commandLine) { for (int i = 0; i < arguments.size(); ++i) { QString tmp = arguments.at(i); @@ -243,12 +244,14 @@ static void qt_create_symbian_commandline(const QStringList &arguments, QString } } - // Chop the extra trailing space if any arguments were appended - if (arguments.size()) + if (!nativeArguments.isEmpty()) + commandLine += nativeArguments; + else if (!commandLine.isEmpty()) // Chop the extra trailing space if any arguments were appended commandLine.chop(1); } -static TInt qt_create_symbian_process(RProcess **proc, const QString &programName, const QStringList &arguments) +static TInt qt_create_symbian_process(RProcess **proc, + const QString &programName, const QStringList &arguments, const QString &nativeArguments) { RProcess *newProc = NULL; newProc = new RProcess(); @@ -257,7 +260,7 @@ static TInt qt_create_symbian_process(RProcess **proc, const QString &programNam return KErrNoMemory; QString commandLine; - qt_create_symbian_commandline(arguments, commandLine); + qt_create_symbian_commandline(arguments, nativeArguments, commandLine); TPtrC program_ptr(reinterpret_cast(programName.constData())); TPtrC cmdline_ptr(reinterpret_cast(commandLine.constData())); @@ -794,7 +797,7 @@ void QProcessPrivate::startProcess() q, SLOT(_q_processDied())); } - TInt err = qt_create_symbian_process(&symbianProcess, program, arguments); + TInt err = qt_create_symbian_process(&symbianProcess, program, arguments, nativeArguments); if (err == KErrNone) { pid = symbianProcess->Id().Id(); @@ -1030,7 +1033,7 @@ bool QProcessPrivate::startDetached(const QString &program, const QStringList &a RProcess *newProc = NULL; - TInt err = qt_create_symbian_process(&newProc, program, arguments); + TInt err = qt_create_symbian_process(&newProc, program, arguments, QString()); if (err == KErrNone) { if (pid) diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp index cb25a58..702349f 100644 --- a/src/corelib/io/qprocess_win.cpp +++ b/src/corelib/io/qprocess_win.cpp @@ -366,6 +366,11 @@ void QProcessPrivate::startProcess() if (environment.d.constData()) envlist = qt_create_environment(environment.d.constData()->hash); #endif + if (!nativeArguments.isEmpty()) { + if (!args.isEmpty()) + args += QLatin1Char(' '); + args += nativeArguments; + } #if defined QPROCESS_DEBUG qDebug("Creating process"); diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def index 101c6a8..94be1bb 100644 --- a/src/s60installs/bwins/QtCoreu.def +++ b/src/s60installs/bwins/QtCoreu.def @@ -4482,4 +4482,6 @@ EXPORTS ?textDirection@QLocale@@QBE?AW4LayoutDirection@Qt@@XZ @ 4481 NONAME ; enum Qt::LayoutDirection QLocale::textDirection(void) const ?peek@QIODevicePrivate@@UAE_JPAD_J@Z @ 4482 NONAME ; long long QIODevicePrivate::peek(char *, long long) ?peek@QIODevicePrivate@@UAE?AVQByteArray@@_J@Z @ 4483 NONAME ; class QByteArray QIODevicePrivate::peek(long long) + ?nativeArguments@QProcess@@QBE?AVQString@@XZ @ 4484 NONAME ; class QString QProcess::nativeArguments(void) const + ?setNativeArguments@QProcess@@QAEXABVQString@@@Z @ 4485 NONAME ; void QProcess::setNativeArguments(class QString const &) diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index 7b9e777..46c4885 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -3709,4 +3709,6 @@ EXPORTS _ZNK7QString13isRightToLeftEv @ 3708 NONAME _ZN16QIODevicePrivate4peekEPcx @ 3709 NONAME _ZN16QIODevicePrivate4peekEx @ 3710 NONAME + _ZN8QProcess18setNativeArgumentsERK7QString @ 3711 NONAME + _ZNK8QProcess15nativeArgumentsEv @ 3712 NONAME diff --git a/tests/auto/qprocess/testProcessSpacesArgs/main.cpp b/tests/auto/qprocess/testProcessSpacesArgs/main.cpp index d842934..ae5d3ae 100644 --- a/tests/auto/qprocess/testProcessSpacesArgs/main.cpp +++ b/tests/auto/qprocess/testProcessSpacesArgs/main.cpp @@ -44,9 +44,14 @@ int main(int argc, char ** argv) { -#if defined(__SYMBIAN32__) +#if defined(__SYMBIAN32__) || defined(WINCE) || defined(_WIN32_WCE) +# if defined(__SYMBIAN32__) // Printing to stdout messes up the out.txt, so open a file and print there. FILE* file = fopen("c:\\logs\\qprocess_args_test.txt","w+"); +# else + // No pipes on this "OS" + FILE* file = fopen("\\temp\\qprocess_args_test.txt","w+"); +# endif for (int i = 0; i < argc; ++i) { if (i) fprintf(file, "|"); diff --git a/tests/auto/qprocess/tst_qprocess.cpp b/tests/auto/qprocess/tst_qprocess.cpp index 8242d30..fd310f4 100644 --- a/tests/auto/qprocess/tst_qprocess.cpp +++ b/tests/auto/qprocess/tst_qprocess.cpp @@ -132,6 +132,9 @@ private slots: void waitForBytesWrittenInABytesWrittenSlot(); void spaceArgsTest_data(); void spaceArgsTest(); +#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) + void nativeArguments(); +#endif void exitCodeTest(); void setEnvironment_data(); void setEnvironment(); @@ -1630,6 +1633,55 @@ void tst_QProcess::spaceArgsTest() process = 0; } +#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN) + +//----------------------------------------------------------------------------- +void tst_QProcess::nativeArguments() +{ + QProcess proc; + + // This doesn't actually need special quoting, so it is pointless to use + // native arguments here, but that's not the point of this test. + proc.setNativeArguments("hello kitty, \"*\"!"); + + proc.start(QString::fromLatin1("testProcessSpacesArgs/nospace"), QStringList()); + +#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN) + QVERIFY(proc.waitForStarted(5000)); + QVERIFY(proc.waitForFinished(5000)); +#else + QVERIFY(proc.waitForStarted(10000)); + QVERIFY(proc.waitForFinished(10000)); +#endif + +#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE) + // Symbian test outputs to a file, so check that +# ifdef Q_OS_SYMBIAN + FILE* file = fopen("c:\\logs\\qprocess_args_test.txt","r"); +# else + FILE* file = fopen("\\temp\\qprocess_args_test.txt","r"); +# endif + char buf[256]; + fgets(buf, 256, file); + fclose(file); + QStringList actual = QString::fromLatin1(buf).split("|"); +#else + QStringList actual = QString::fromLatin1(proc.readAll()).split("|"); +#endif + QVERIFY(!actual.isEmpty()); + // not interested in the program name, it might be different. + actual.removeFirst(); + QStringList expected; +#if defined(Q_OS_WINCE) + expected << "hello" << "kitty," << "\"*\"!"; // Weird, weird ... +#else + expected << "hello" << "kitty," << "*!"; +#endif + QCOMPARE(actual, expected); +} + +#endif + //----------------------------------------------------------------------------- void tst_QProcess::exitCodeTest() { -- cgit v0.12 From fa9c62460791c9b9add365fc9543ec0392f50cee Mon Sep 17 00:00:00 2001 From: Thomas Zander Date: Mon, 5 Jul 2010 17:05:04 +0200 Subject: Adapt the TapAndHold recognizer to non-touch too The QTapAndHoldGestureRecognizer now can trigger also on mouse and GraphicsSceneMouse events and all of them will cause the gesture start event to be sent after the touch interval timed out. Reviewed-by: Denis --- src/gui/kernel/qstandardgestures.cpp | 63 +++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/src/gui/kernel/qstandardgestures.cpp b/src/gui/kernel/qstandardgestures.cpp index 8a3e89e..62d8a53 100644 --- a/src/gui/kernel/qstandardgestures.cpp +++ b/src/gui/kernel/qstandardgestures.cpp @@ -45,6 +45,7 @@ #include "qevent.h" #include "qwidget.h" #include "qabstractscrollarea.h" +#include #include "qdebug.h" #ifndef QT_NO_GESTURES @@ -509,49 +510,65 @@ QTapAndHoldGestureRecognizer::recognize(QGesture *state, QObject *object, if (object == state && event->type() == QEvent::Timer) { q->killTimer(d->timerId); d->timerId = 0; - return QGestureRecognizer::Ignore | QGestureRecognizer::ConsumeEventHint; + return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint; } const QTouchEvent *ev = static_cast(event); - - QGestureRecognizer::Result result = QGestureRecognizer::CancelGesture; + const QMouseEvent *me = static_cast(event); + const QGraphicsSceneMouseEvent *gsme = static_cast(event); enum { TimerInterval = 2000 }; enum { TapRadius = 40 }; switch (event->type()) { + case QEvent::GraphicsSceneMousePress: + d->position = gsme->screenPos(); + q->setHotSpot(d->position); + if (d->timerId) + q->killTimer(d->timerId); + d->timerId = q->startTimer(TimerInterval); + return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout + case QEvent::MouseButtonPress: + d->position = me->globalPos(); + q->setHotSpot(d->position); + if (d->timerId) + q->killTimer(d->timerId); + d->timerId = q->startTimer(TimerInterval); + return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout case QEvent::TouchBegin: - d->position = ev->touchPoints().at(0).pos(); + d->position = ev->touchPoints().at(0).startScreenPos(); + q->setHotSpot(d->position); if (d->timerId) q->killTimer(d->timerId); d->timerId = q->startTimer(TimerInterval); - q->setHotSpot(ev->touchPoints().at(0).startScreenPos()); - result = QGestureRecognizer::TriggerGesture; - break; + return QGestureRecognizer::MayBeGesture; // we don't show a sign of life until the timeout + case QEvent::GraphicsSceneMouseRelease: + case QEvent::MouseButtonRelease: case QEvent::TouchEnd: - if (d->timerId) - result = QGestureRecognizer::CancelGesture; - else - result = QGestureRecognizer::FinishGesture; - break; + return QGestureRecognizer::CancelGesture; // get out of the MayBeGesture state case QEvent::TouchUpdate: - if (q->state() != Qt::NoGesture && ev->touchPoints().size() == 1) { + if (d->timerId && ev->touchPoints().size() == 1) { QTouchEvent::TouchPoint p = ev->touchPoints().at(0); QPoint delta = p.pos().toPoint() - p.startPos().toPoint(); if (delta.manhattanLength() <= TapRadius) - result = QGestureRecognizer::TriggerGesture; + return QGestureRecognizer::MayBeGesture; } - break; - case QEvent::MouseButtonPress: - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - result = QGestureRecognizer::Ignore; - break; + return QGestureRecognizer::CancelGesture; + case QEvent::MouseMove: { + QPoint delta = me->globalPos() - d->position.toPoint(); + if (d->timerId && delta.manhattanLength() <= TapRadius) + return QGestureRecognizer::MayBeGesture; + return QGestureRecognizer::CancelGesture; + } + case QEvent::GraphicsSceneMouseMove: { + QPoint delta = gsme->screenPos() - d->position.toPoint(); + if (d->timerId && delta.manhattanLength() <= TapRadius) + return QGestureRecognizer::MayBeGesture; + return QGestureRecognizer::CancelGesture; + } default: - result = QGestureRecognizer::Ignore; - break; + return QGestureRecognizer::Ignore; } - return result; } void QTapAndHoldGestureRecognizer::reset(QGesture *state) -- cgit v0.12 From 2fa8b39c8a687550934e9668384f0bbe9f56f550 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 6 Jul 2010 19:08:45 +0200 Subject: fix autotest fixing QProcess::execute() revealed that this test has always been broken on windows. --- tests/auto/linguist/lrelease/tst_lrelease.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/auto/linguist/lrelease/tst_lrelease.cpp b/tests/auto/linguist/lrelease/tst_lrelease.cpp index fdb384e..3b2c2d2 100644 --- a/tests/auto/linguist/lrelease/tst_lrelease.cpp +++ b/tests/auto/linguist/lrelease/tst_lrelease.cpp @@ -171,7 +171,12 @@ void tst_lrelease::mixedcodecs() { QVERIFY(!QProcess::execute(binDir + "/lrelease testdata/mixedcodecs-ts11.ts")); QVERIFY(!QProcess::execute(binDir + "/lrelease testdata/mixedcodecs-ts20.ts")); +#ifdef Q_OS_WIN + QVERIFY(!QProcess::execute("fc /b testdata\\mixedcodecs-ts11.qm testdata\\mixedcodecs-ts20.qm")); +#else QVERIFY(!QProcess::execute("cmp testdata/mixedcodecs-ts11.qm testdata/mixedcodecs-ts20.qm")); +#endif + QTranslator translator; QVERIFY(translator.load("testdata/mixedcodecs-ts11.qm")); qApp->installTranslator(&translator); -- cgit v0.12 From a16388c1f4ff3d6cb9863a9b16914f6ddb305c05 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 7 Jul 2010 10:33:40 +1000 Subject: Revert "Fix exponential behavior of QTextCursor::removeSelectedText" This reverts commit 62db6c18c7f1f60819783ed5e1340e9fc09e072e, which introduced a regression in tst_qtextpiecetable::checkDocumentChanged --- src/gui/text/qtextdocument_p.cpp | 7 ------- src/gui/text/qtextdocument_p.h | 1 - 2 files changed, 8 deletions(-) diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 9849317..9bcf8b4 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -205,7 +205,6 @@ QTextDocumentPrivate::QTextDocumentPrivate() undoEnabled = true; inContentsChange = false; - inRemove = false; defaultTextOption.setTabStop(80); // same as in qtextengine.cpp defaultTextOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); @@ -670,10 +669,7 @@ void QTextDocumentPrivate::remove(int pos, int length, QTextUndoCommand::Operati { if (length == 0) return; - inRemove = true; move(pos, -1, length, op); - inRemove = false; - adjustDocumentChangesAndCursors(pos, -length, op); } void QTextDocumentPrivate::setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode) @@ -1269,9 +1265,6 @@ void QTextDocumentPrivate::documentChange(int from, int length) */ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOrRemoved, QTextUndoCommand::Operation op) { - if (inRemove) // postpone, will be called again from QTextDocumentPrivate::remove() - return; - if (!editBlock) ++revision; diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h index dcac99d..b9d5f5a 100644 --- a/src/gui/text/qtextdocument_p.h +++ b/src/gui/text/qtextdocument_p.h @@ -345,7 +345,6 @@ public: int maximumBlockCount; uint needsEnsureMaximumBlockCount : 1; uint inContentsChange : 1; - uint inRemove : 1; QSizeF pageSize; QString title; QString url; -- cgit v0.12 From e3bc34b40559e0cb88363039ee61300478e7c700 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 7 Jul 2010 13:30:11 +1000 Subject: Remove deprecated Flickable.flickDirection --- src/declarative/QmlChanges.txt | 2 +- src/declarative/graphicsitems/qdeclarativeflickable.cpp | 12 ------------ src/declarative/graphicsitems/qdeclarativeflickable_p.h | 3 --- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 336fbbf..91442c1 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -1,5 +1,5 @@ ============================================================================= -The changes below are pre Qt 4.7.0 RC +The changes below are pre Qt 4.7.0 beta 2 QDeclarativeView - initialSize() function added diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index a40546f..70cbf74 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -641,18 +641,6 @@ void QDeclarativeFlickable::setFlickableDirection(FlickableDirection direction) } } -QDeclarativeFlickable::FlickableDirection QDeclarativeFlickable::flickDirection() const -{ - qmlInfo(this) << "'flickDirection' is deprecated. Please use 'flickableDirection' instead."; - return flickableDirection(); -} - -void QDeclarativeFlickable::setFlickDirection(FlickableDirection direction) -{ - qmlInfo(this) << "'flickDirection' is deprecated. Please use 'flickableDirection' instead."; - setFlickableDirection(direction); -} - void QDeclarativeFlickablePrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event) { if (interactive && timeline.isActive() && (qAbs(hData.velocity) > 10 || qAbs(vData.velocity) > 10)) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h index 47746c6..44f2bcf 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h @@ -74,7 +74,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeFlickable : public QDeclarativeItem Q_PROPERTY(bool flicking READ isFlicking NOTIFY flickingChanged) Q_PROPERTY(bool flickingHorizontally READ isFlickingHorizontally NOTIFY flickingHorizontallyChanged) Q_PROPERTY(bool flickingVertically READ isFlickingVertically NOTIFY flickingVerticallyChanged) - Q_PROPERTY(FlickableDirection flickDirection READ flickDirection WRITE setFlickDirection NOTIFY flickableDirectionChanged) // deprecated Q_PROPERTY(FlickableDirection flickableDirection READ flickableDirection WRITE setFlickableDirection NOTIFY flickableDirectionChanged) Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive NOTIFY interactiveChanged) @@ -147,8 +146,6 @@ public: QDeclarativeItem *contentItem(); enum FlickableDirection { AutoFlickDirection=0x00, HorizontalFlick=0x01, VerticalFlick=0x02, HorizontalAndVerticalFlick=0x03 }; - FlickableDirection flickDirection() const; // deprecated - void setFlickDirection(FlickableDirection); // deprecated FlickableDirection flickableDirection() const; void setFlickableDirection(FlickableDirection); -- cgit v0.12 From be19c343000ffc7099474663c66a13226fa5253c Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 7 Jul 2010 14:05:29 +1000 Subject: More generated images in anticipation of QT-3574 --- .../tst_qdeclarativetextedit.cpp | 28 +++++++++----- .../tst_qdeclarativetextinput.cpp | 45 +++++++++++++--------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 2025504..6e4aa22 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -64,6 +64,23 @@ #define SRCDIR "." #endif +QString createExpectedFileIfNotFound(const QString& filebasename, const QImage& actual) +{ + // XXX This will be replaced by some clever persistent platform image store. + QString persistent_dir = SRCDIR "/data"; + QString arch = "unknown-architecture"; // QTest needs to help with this. + + QString expectfile = persistent_dir + QDir::separator() + filebasename + "-" + arch + ".png"; + + if (!QFile::exists(expectfile)) { + actual.save(expectfile); + qWarning() << "created" << expectfile; + } + + return expectfile; +} + + class tst_qdeclarativetextedit : public QObject { @@ -345,16 +362,7 @@ void tst_qdeclarativetextedit::alignments() QPainter p(&actual); canvas->render(&p); - // XXX This will be replaced by some clever persistent platform image store. - QString persistent_dir = SRCDIR "/data"; - QString arch = "unknown-architecture"; // QTest needs to help with this. - - expectfile = persistent_dir + QDir::separator() + expectfile + "-" + arch + ".png"; - - if (!QFile::exists(expectfile)) { - actual.save(expectfile); - qWarning() << "created" << expectfile; - } + expectfile = createExpectedFileIfNotFound(expectfile, actual); QImage expect(expectfile); diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 5354f42..16d9ac7 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -56,6 +57,22 @@ #define SRCDIR "." #endif +QString createExpectedFileIfNotFound(const QString& filebasename, const QImage& actual) +{ + // XXX This will be replaced by some clever persistent platform image store. + QString persistent_dir = SRCDIR "/data"; + QString arch = "unknown-architecture"; // QTest needs to help with this. + + QString expectfile = persistent_dir + QDir::separator() + filebasename + "-" + arch + ".png"; + + if (!QFile::exists(expectfile)) { + actual.save(expectfile); + qWarning() << "created" << expectfile; + } + + return expectfile; +} + class tst_qdeclarativetextinput : public QObject { @@ -381,9 +398,9 @@ void tst_qdeclarativetextinput::horizontalAlignment_data() QTest::addColumn("hAlign"); QTest::addColumn("expectfile"); - QTest::newRow("L") << int(Qt::AlignLeft) << SRCDIR "/data/halign_left.png"; - QTest::newRow("R") << int(Qt::AlignRight) << SRCDIR "/data/halign_right.png"; - QTest::newRow("C") << int(Qt::AlignHCenter) << SRCDIR "/data/halign_center.png"; + QTest::newRow("L") << int(Qt::AlignLeft) << "halign_left"; + QTest::newRow("R") << int(Qt::AlignRight) << "halign_right"; + QTest::newRow("C") << int(Qt::AlignHCenter) << "halign_center"; } void tst_qdeclarativetextinput::horizontalAlignment() @@ -391,13 +408,6 @@ void tst_qdeclarativetextinput::horizontalAlignment() QFETCH(int, hAlign); QFETCH(QString, expectfile); -#ifdef Q_WS_X11 - // Font-specific, but not likely platform-specific, so only test on one platform - QFont fn; - fn.setRawName("-misc-fixed-medium-r-*-*-8-*-*-*-*-*-*-*"); - QApplication::setFont(fn); -#endif - QDeclarativeView *canvas = createView(SRCDIR "/data/horizontalAlignment.qml"); canvas->show(); @@ -409,17 +419,16 @@ void tst_qdeclarativetextinput::horizontalAlignment() ob->setProperty("horizontalAlignment",hAlign); QImage actual(canvas->width(), canvas->height(), QImage::Format_RGB32); actual.fill(qRgb(255,255,255)); - QPainter p(&actual); - canvas->render(&p); + { + QPainter p(&actual); + canvas->render(&p); + } + + expectfile = createExpectedFileIfNotFound(expectfile, actual); QImage expect(expectfile); -#ifdef Q_WS_X11 - // Font-specific, but not likely platform-specific, so only test on one platform - if (QApplicationPrivate::graphics_system_name == "raster" || QApplicationPrivate::graphics_system_name == "") { - QCOMPARE(actual,expect); - } -#endif + QCOMPARE(actual,expect); } void tst_qdeclarativetextinput::positionAt() -- cgit v0.12 From 628159323c60c434a202b036ecbaf5e433c703e8 Mon Sep 17 00:00:00 2001 From: Warwick Allison Date: Wed, 7 Jul 2010 14:09:49 +1000 Subject: Make Text, TextInput, and TextEdit all have the same size for the same text. This may mean that the cursor is to the right of the width, so components should cater for that with a margin if they are boxed / clipped. TextInput used to try to account for right bearing (and left bearing incorrectly since it added it on the right). This is removed. Potentially this means that for some fonts the text repaints incorrectly on the left or right, but if that is the case Text and TextEdit already had such a problem (undetected), and all will need fixing. Task-number: QTBUG-11983 --- src/declarative/graphicsitems/qdeclarativetext.cpp | 2 ++ .../graphicsitems/qdeclarativetextedit.cpp | 15 ++++++----- .../graphicsitems/qdeclarativetextinput.cpp | 31 +++++++++++----------- .../graphicsitems/qdeclarativetextinput_p.h | 2 ++ .../tst_qdeclarativetextedit.cpp | 6 ++--- .../tst_qdeclarativetextinput.cpp | 2 +- 6 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index a7e2ed0..200a680 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -711,6 +711,8 @@ QRectF QDeclarativeText::boundingRect() const int x = 0; int y = 0; + // Could include font max left/right bearings to either side of rectangle. + if (d->cache || d->style != Normal) { switch (d->hAlign) { case AlignLeft: diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index 5b4d80b..f3eef23 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -1341,6 +1341,15 @@ QRectF QDeclarativeTextEdit::boundingRect() const { Q_D(const QDeclarativeTextEdit); QRectF r = QDeclarativePaintedItem::boundingRect(); + int cursorWidth = 1; + if(d->cursor) + cursorWidth = d->cursor->width(); + if(!d->document->isEmpty()) + cursorWidth += 3;// ### Need a better way of accounting for space between char and cursor + + // Could include font max left/right bearings to either side of rectangle. + + r.setRight(r.right() + cursorWidth); return r.translated(0,d->yoff); } @@ -1380,12 +1389,6 @@ void QDeclarativeTextEdit::updateSize() int newWidth = qCeil(d->document->idealWidth()); if (!widthValid() && d->document->textWidth() != newWidth) d->document->setTextWidth(newWidth); // ### Text does not align if width is not set (QTextDoc bug) - int cursorWidth = 1; - if(d->cursor) - cursorWidth = d->cursor->width(); - newWidth += cursorWidth; - if(!d->document->isEmpty()) - newWidth += 3;// ### Need a better way of accounting for space between char and cursor // ### Setting the implicitWidth triggers another updateSize(), and unless there are bindings nothing has changed. setImplicitWidth(newWidth); qreal newHeight = d->document->isEmpty() ? fm.height() : (int)d->document->size().height(); diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index c2eea6e..5325f25 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -824,7 +824,7 @@ void QDeclarativeTextInput::createCursor() QDeclarative_setParent_noEvent(d->cursorItem, this); d->cursorItem->setParentItem(this); d->cursorItem->setX(d->control->cursorToX()); - d->cursorItem->setHeight(d->control->height()); + d->cursorItem->setHeight(d->control->height()-1); // -1 to counter QLineControl's +1 which is not consistent with Text. } void QDeclarativeTextInput::moveCursor() @@ -1029,19 +1029,7 @@ void QDeclarativeTextInput::geometryChanged(const QRectF &newGeometry, int QDeclarativeTextInputPrivate::calculateTextWidth() { - int cursorWidth = control->cursorWidth(); - if(cursorItem) - cursorWidth = cursorItem->width(); - - QFontMetrics fm = QFontMetrics(font); - int leftBearing = 0; - int rightBearing = 0; - if (!control->text().isEmpty()) { - leftBearing = qMax(0, -fm.leftBearing(control->text().at(0))); - rightBearing = qMax(0, -fm.rightBearing(control->text().at(control->text().count()-1))); - } - - return qRound(control->naturalTextWidth()) + qMax(cursorWidth, leftBearing) + rightBearing; + return qRound(control->naturalTextWidth()); } void QDeclarativeTextInputPrivate::updateHorizontalScroll() @@ -1481,12 +1469,25 @@ void QDeclarativeTextInput::updateRect(const QRect &r) update(); } +QRectF QDeclarativeTextInput::boundingRect() const +{ + Q_D(const QDeclarativeTextInput); + QRectF r = QDeclarativePaintedItem::boundingRect(); + + int cursorWidth = d->cursorItem ? d->cursorItem->width() : d->control->cursorWidth(); + + // Could include font max left/right bearings to either side of rectangle. + + r.setRight(r.right() + cursorWidth); + return r; +} + void QDeclarativeTextInput::updateSize(bool needsRedraw) { Q_D(QDeclarativeTextInput); int w = width(); int h = height(); - setImplicitHeight(d->control->height()); + setImplicitHeight(d->control->height()-1); // -1 to counter QLineControl's +1 which is not consistent with Text. setImplicitWidth(d->calculateTextWidth()); setContentsSize(QSize(width(), height()));//Repaints if changed if(w==width() && h==height() && needsRedraw){ diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h index bacd041..ded0d09 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h +++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h @@ -187,6 +187,8 @@ public: void drawContents(QPainter *p,const QRect &r); QVariant inputMethodQuery(Qt::InputMethodQuery property) const; + QRectF boundingRect() const; + Q_SIGNALS: void textChanged(); void cursorPositionChanged(); diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 6e4aa22..5a81881 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -226,7 +226,7 @@ void tst_qdeclarativetextedit::width() QDeclarativeTextEdit *textEditObject = qobject_cast(texteditComponent.create()); QVERIFY(textEditObject != 0); - QCOMPARE(textEditObject->width(), 1.);//+1 for cursor + QCOMPARE(textEditObject->width(), 0.0); } for (int i = 0; i < standard.size(); i++) @@ -242,7 +242,7 @@ void tst_qdeclarativetextedit::width() QDeclarativeTextEdit *textEditObject = qobject_cast(texteditComponent.create()); QVERIFY(textEditObject != 0); - QCOMPARE(textEditObject->width(), qreal(metricWidth + 1 + 3));//+3 is the current way of accounting for space between cursor and last character. + QCOMPARE(textEditObject->width(), qreal(metricWidth)); } for (int i = 0; i < richText.size(); i++) @@ -259,7 +259,7 @@ void tst_qdeclarativetextedit::width() QDeclarativeTextEdit *textEditObject = qobject_cast(texteditComponent.create()); QVERIFY(textEditObject != 0); - QCOMPARE(textEditObject->width(), qreal(documentWidth + 1 + 3)); + QCOMPARE(textEditObject->width(), qreal(documentWidth)); } } diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 16d9ac7..9ae7c99 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -175,7 +175,7 @@ void tst_qdeclarativetextinput::width() QDeclarativeTextInput *textinputObject = qobject_cast(textinputComponent.create()); QVERIFY(textinputObject != 0); - QCOMPARE(textinputObject->width(), 1.); // 1 for the cursor + QCOMPARE(textinputObject->width(), 0.0); delete textinputObject; } -- cgit v0.12 From 760dd5919ac3bafb5f17b700d5da9b3609318bbb Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 7 Jul 2010 15:09:13 +1000 Subject: QDeclarativeText optimization. updateSize() shouldn't trigger another updateSize(). Reviewed-by: Martin Jones --- src/declarative/graphicsitems/qdeclarativetext.cpp | 4 +++- src/declarative/graphicsitems/qdeclarativetext_p_p.h | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index 200a680..9a281e5 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -772,7 +772,7 @@ void QDeclarativeText::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QDeclarativeText); - if (newGeometry.width() != oldGeometry.width()) { + if (!d->internalWidthUpdate && newGeometry.width() != oldGeometry.width()) { if (d->wrapMode != QDeclarativeText::NoWrap || d->elideMode != QDeclarativeText::ElideNone) { //re-elide if needed if (d->singleline && d->elideMode != QDeclarativeText::ElideNone && @@ -872,7 +872,9 @@ void QDeclarativeTextPrivate::updateSize() q->setBaselineOffset(fm.ascent() + yoff); //### need to comfirm cost of always setting these for richText + internalWidthUpdate = true; q->setImplicitWidth(size.width()); + internalWidthUpdate = false; q->setImplicitHeight(size.height()); emit q->paintedSizeChanged(); } else { diff --git a/src/declarative/graphicsitems/qdeclarativetext_p_p.h b/src/declarative/graphicsitems/qdeclarativetext_p_p.h index 51a5514..48552a7 100644 --- a/src/declarative/graphicsitems/qdeclarativetext_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativetext_p_p.h @@ -72,7 +72,7 @@ public: QDeclarativeTextPrivate() : color((QRgb)0), style(QDeclarativeText::Normal), hAlign(QDeclarativeText::AlignLeft), vAlign(QDeclarativeText::AlignTop), elideMode(QDeclarativeText::ElideNone), - imgDirty(true), dirty(true), richText(false), singleline(false), cache(true), doc(0), + imgDirty(true), dirty(true), richText(false), singleline(false), cache(true), internalWidthUpdate(false), doc(0), format(QDeclarativeText::AutoText), wrapMode(QDeclarativeText::NoWrap) { #if defined(QML_NO_TEXT_CACHE) @@ -119,6 +119,7 @@ public: bool richText:1; bool singleline:1; bool cache:1; + bool internalWidthUpdate:1; QTextDocumentWithImageResources *doc; QTextLayout layout; QSize cachedLayoutSize; -- cgit v0.12 From 44d78dca77b8a5f4f0d1bb67e84c21a4c57345b6 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Wed, 7 Jul 2010 15:45:45 +1000 Subject: Don't crash if drag.target has no parentItem Task-number: QTBUG-11986 --- src/declarative/graphicsitems/qdeclarativemousearea.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp index caf251d..7b65ca7 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp +++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp @@ -443,7 +443,7 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) QPointF startLocalPos; QPointF curLocalPos; - if (drag()->target()->parent()) { + if (drag()->target()->parentItem()) { startLocalPos = drag()->target()->parentItem()->mapFromScene(d->startScene); curLocalPos = drag()->target()->parentItem()->mapFromScene(event->scenePos()); } else { @@ -761,7 +761,7 @@ QDeclarativeDrag *QDeclarativeMouseArea::drag() \c drag provides a convenient way to make an item draggable. \list - \i \c drag.target specifies the item to drag. + \i \c drag.target specifies the id of the item to drag. \i \c drag.active specifies if the target item is currently being dragged. \i \c drag.axis specifies whether dragging can be done horizontally (\c Drag.XAxis), vertically (\c Drag.YAxis), or both (\c Drag.XandYAxis) \i \c drag.minimum and \c drag.maximum limit how far the target can be dragged along the corresponding axes. -- cgit v0.12 From af5fc41e27f068604453a927cac4d81886d1987e Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Wed, 7 Jul 2010 15:45:33 +1000 Subject: Add Symbian support for runtime.orientation property Task-number: Reviewed-by: Martin Jones --- demos/declarative/calculator/Core/calculator.js | 2 +- demos/declarative/calculator/calculator.qml | 29 +++-- tools/qml/deviceorientation_symbian.cpp | 166 ++++++++++++++++++++++++ tools/qml/main.cpp | 11 ++ tools/qml/qml.pri | 2 + tools/qml/qml.pro | 4 + 6 files changed, 205 insertions(+), 9 deletions(-) create mode 100644 tools/qml/deviceorientation_symbian.cpp diff --git a/demos/declarative/calculator/Core/calculator.js b/demos/declarative/calculator/Core/calculator.js index 51b3dd3..c80c42f 100644 --- a/demos/declarative/calculator/Core/calculator.js +++ b/demos/declarative/calculator/Core/calculator.js @@ -84,7 +84,7 @@ function doOperation(op) { } if (op == rotateLeft) - main.state = 'rotated' + main.state = "orientation " + Orientation.Landscape if (op == rotateRight) main.state = '' } diff --git a/demos/declarative/calculator/calculator.qml b/demos/declarative/calculator/calculator.qml index 3d36211..63b6c55 100644 --- a/demos/declarative/calculator/calculator.qml +++ b/demos/declarative/calculator/calculator.qml @@ -58,10 +58,11 @@ Rectangle { property string plusminus : "\u00b1" function doOp(operation) { CalcEngine.doOperation(operation) } - + Item { id: main - state: (runtime.orientation == Orientation.Portrait) ? '' : 'rotated' + state: "orientation " + runtime.orientation + width: parent.width; height: parent.height; anchors.centerIn: parent Column { @@ -130,16 +131,28 @@ Rectangle { } } - states: State { - name: 'rotated' - PropertyChanges { target: main; rotation: -90; width: window.height; height: window.width } - PropertyChanges { target: rotateButton; operation: rotateRight } - } + states: [ + State { + name: "orientation " + Orientation.Landscape + PropertyChanges { target: main; rotation: -90; width: window.height; height: window.width } + PropertyChanges { target: rotateButton; operation: rotateRight } + }, + State { + name: "orientation " + Orientation.PortraitInverted + PropertyChanges { target: main; rotation: -180; } + PropertyChanges { target: rotateButton; operation: rotateLeft } + }, + State { + name: "orientation " + Orientation.LandscapeInverted + PropertyChanges { target: main; rotation: -270; width: window.height; height: window.width } + PropertyChanges { target: rotateButton; operation: rotateRight } + } + ] transitions: Transition { SequentialAnimation { PropertyAction { target: rotateButton; property: "operation" } - NumberAnimation { properties: "rotation"; duration: 300; easing.type: Easing.InOutQuint } + RotationAnimation { direction: RotationAnimation.Shortest; duration: 300; easing.type: Easing.InOutQuint } NumberAnimation { properties: "x,y,width,height"; duration: 300; easing.type: Easing.InOutQuint } } } diff --git a/tools/qml/deviceorientation_symbian.cpp b/tools/qml/deviceorientation_symbian.cpp new file mode 100644 index 0000000..48bfc72 --- /dev/null +++ b/tools/qml/deviceorientation_symbian.cpp @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "deviceorientation.h" + +#include +#include +#include +#include +#include + +class SymbianOrientation : public DeviceOrientation, public MSensrvDataListener +{ + Q_OBJECT +public: + SymbianOrientation() + : DeviceOrientation(), m_current(UnknownOrientation), m_sensorChannel(0) + { + TRAP_IGNORE(initL()); + if (!m_sensorChannel) + qWarning("No valid sensors found."); + } + + ~SymbianOrientation() + { + if (m_sensorChannel) { + m_sensorChannel->StopDataListening(); + m_sensorChannel->CloseChannel(); + delete m_sensorChannel; + } + } + + void initL() + { + CSensrvChannelFinder *channelFinder = CSensrvChannelFinder::NewLC(); + RSensrvChannelInfoList channelInfoList; + CleanupClosePushL(channelInfoList); + + TSensrvChannelInfo searchConditions; + searchConditions.iChannelType = KSensrvChannelTypeIdOrientationData; + channelFinder->FindChannelsL(channelInfoList, searchConditions); + + for (int i = 0; i < channelInfoList.Count(); ++i) { + TRAPD(error, m_sensorChannel = CSensrvChannel::NewL(channelInfoList[i])); + if (!error) + TRAP(error, m_sensorChannel->OpenChannelL()); + if (!error) { + TRAP(error, m_sensorChannel->StartDataListeningL(this, 1, 1, 0)); + break; + } + if (error) { + delete m_sensorChannel; + m_sensorChannel = 0; + } + } + + channelInfoList.Close(); + CleanupStack::Pop(&channelInfoList); + CleanupStack::PopAndDestroy(channelFinder); + } + + Orientation orientation() const + { + return m_current; + } + + void setOrientation(Orientation) { } + +private: + DeviceOrientation::Orientation m_current; + CSensrvChannel *m_sensorChannel; + + void DataReceived(CSensrvChannel &channel, TInt count, TInt dataLost) + { + if (channel.GetChannelInfo().iChannelType == KSensrvChannelTypeIdOrientationData) { + TSensrvOrientationData data; + for (int i = 0; i < count; ++i) { + TPckgBuf dataBuf; + channel.GetData(dataBuf); + data = dataBuf(); + Orientation o = UnknownOrientation; + switch (data.iDeviceOrientation) { + case TSensrvOrientationData::EOrientationDisplayRightUp: + o = LandscapeInverted; + break; + case TSensrvOrientationData::EOrientationDisplayUp: + o = Portrait; + break; + case TSensrvOrientationData::EOrientationDisplayDown: + o = PortraitInverted; + break; + case TSensrvOrientationData::EOrientationDisplayLeftUp: + o = Landscape; + break; + case TSensrvOrientationData::EOrientationUndefined: + case TSensrvOrientationData::EOrientationDisplayUpwards: + case TSensrvOrientationData::EOrientationDisplayDownwards: + default: + break; + } + + if (m_current != o) { + m_current = o; + emit orientationChanged(); + } + } + } + } + + void DataError(CSensrvChannel& /* channel */, TSensrvErrorSeverity /* error */) + { + } + + void GetDataListenerInterfaceL(TUid /* interfaceUid */, TAny*& /* interface */) + { + } +}; + + +DeviceOrientation* DeviceOrientation::instance() +{ + static SymbianOrientation *o = 0; + if (!o) + o = new SymbianOrientation; + return o; +} + +#include "deviceorientation_symbian.moc" diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index d5ad9ad..dfd1726 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -56,6 +56,10 @@ QT_USE_NAMESPACE QtMsgHandler systemMsgOutput = 0; +#if defined(Q_WS_S60) +#include // For locking app to portrait +#endif + #if defined (Q_OS_SYMBIAN) #include #include @@ -207,6 +211,13 @@ int main(int argc, char ** argv) app.setOrganizationName("Nokia"); app.setOrganizationDomain("nokia.com"); +#if defined(Q_WS_S60) + CAknAppUi *appUi = static_cast(CEikonEnv::Static()->AppUi()); + if (appUi) { + appUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait); + } +#endif + QDeclarativeViewer::registerTypes(); QDeclarativeTester::registerTypes(); diff --git a/tools/qml/qml.pri b/tools/qml/qml.pri index 3e5a88b..0d01f70 100644 --- a/tools/qml/qml.pri +++ b/tools/qml/qml.pri @@ -23,6 +23,8 @@ maemo5 { SOURCES += $$PWD/deviceorientation_maemo5.cpp FORMS = $$PWD/recopts_maemo5.ui \ $$PWD/proxysettings_maemo5.ui +} symbian:!contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { + SOURCES += $$PWD/deviceorientation_symbian.cpp } else { SOURCES += $$PWD/deviceorientation.cpp FORMS = $$PWD/recopts.ui \ diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro index 63efff1..0a51c0b 100644 --- a/tools/qml/qml.pro +++ b/tools/qml/qml.pro @@ -37,6 +37,10 @@ symbian { include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 TARGET.CAPABILITY = NetworkServices ReadUserData + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { + LIBS += -lsensrvclient -lsensrvutil + contains(QT_CONFIG, s60): LIBS += -lavkon -lcone + } } mac { QMAKE_INFO_PLIST=Info_mac.plist -- cgit v0.12 From 28651cfc0ce2954c0b6c0e5d3587e4d8b001c1de Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Fri, 2 Jul 2010 16:16:59 +0200 Subject: Fix crash when handleCommand() called before softkeys are updated Softkeys are updated via a compressable event that is posted via the event loop. Since these events are not delivered immediately, there is a chance that a call to handleCommand() could happen before the softkeys have been updated which can lead to a crash if the previous QAction's have been deleted already since the data structure used by QSoftKeyManager is outdated. The likeliness of this is increased by the fact that S60 commands are normally sent from the WSERV active object which has a higher priority than the active object used by Qt's event loop which means commands will preempt the event loop. The fix is to introduce a flag that keeps track of pending update requests and if a command is received while there are outstanding requests, force the softkeys to be updated before handling the command. Task-number: QT-3571 Reviewed-by: axis --- src/gui/kernel/qsoftkeymanager.cpp | 5 +++++ src/gui/kernel/qsoftkeymanager_common_p.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp index 04e4685..54e6317 100644 --- a/src/gui/kernel/qsoftkeymanager.cpp +++ b/src/gui/kernel/qsoftkeymanager.cpp @@ -162,6 +162,7 @@ void QSoftKeyManager::sendKeyEvent() void QSoftKeyManager::updateSoftKeys() { + QSoftKeyManager::instance()->d_func()->pendingUpdate = true; QEvent *event = new QEvent(QEvent::UpdateSoftKeys); QApplication::postEvent(QSoftKeyManager::instance(), event); } @@ -250,6 +251,7 @@ bool QSoftKeyManager::handleUpdateSoftKeys() } d->updateSoftKeys_sys(); + d->pendingUpdate = false; return true; } @@ -275,6 +277,9 @@ bool QSoftKeyManager::event(QEvent *e) #ifdef Q_WS_S60 bool QSoftKeyManager::handleCommand(int command) { + if (QSoftKeyManager::instance()->d_func()->pendingUpdate) + (void)QSoftKeyManager::instance()->handleUpdateSoftKeys(); + return static_cast(QSoftKeyManager::instance()->d_func())->handleCommand(command); } #endif diff --git a/src/gui/kernel/qsoftkeymanager_common_p.h b/src/gui/kernel/qsoftkeymanager_common_p.h index 04ddf7d..1b364d4 100644 --- a/src/gui/kernel/qsoftkeymanager_common_p.h +++ b/src/gui/kernel/qsoftkeymanager_common_p.h @@ -71,7 +71,7 @@ protected: QHash keyedActions; QMultiHash requestedSoftKeyActions; QWidget *initialSoftKeySource; - + bool pendingUpdate; }; QT_END_NAMESPACE -- cgit v0.12 From f5dca266bbf75abe24f39ac8e4d96796529afd77 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Wed, 7 Jul 2010 17:19:42 +1000 Subject: docs --- .../graphicsitems/qdeclarativeflickable.cpp | 2 +- .../graphicsitems/qdeclarativeimage.cpp | 26 ++++++++++++---------- src/declarative/graphicsitems/qdeclarativeitem.cpp | 4 ++-- .../graphicsitems/qdeclarativepathview.cpp | 4 ++++ src/declarative/qml/qdeclarativecomponent.cpp | 4 ++-- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 70cbf74..9af5f56 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -1342,7 +1342,7 @@ bool QDeclarativeFlickable::isFlickingVertically() const This property holds the time to delay (ms) delivering a press to children of the Flickable. This can be useful where reacting - to a press before a flicking action has undesireable effects. + to a press before a flicking action has undesirable effects. If the flickable is dragged/flicked before the delay times out the press event will not be delivered. If the button is released diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index e0db580..666ff3f 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -65,18 +65,20 @@ QT_BEGIN_NAMESPACE Image { source: "qtlogo.png" } \endqml \endtable - - If a size is not specified explicitly, the Image element is sized to the loaded image. - Image elements can be stretched and tiled using the \l fillMode property. - If the image \l source is a network resource, the image is loaded asynchronous and the - \l progress and \l status properties are updated appropriately. Otherwise, if the image is - available locally, it is loaded immediately and the user interface is blocked until loading is - complete. (This is typically the correct behavior for user interface elements.) - For large local images, which do not need to be visible immediately, it may be preferable to - enable \l asynchronous loading. This loads the image in the background using a low priority thread. + If the \l {Image::width}{width} and \l{Image::height}{height} properties are not specified, + the Image element is automatically sized to the loaded image. Image elements can be + stretched and tiled using the \l fillMode property. + + By default, locally available images are loaded immediately, and the user interface + is blocked until loading is complete. If a large image is to be loaded, it may be + preferable to load the image in a low priority thread, by enabling the \l asynchronous + property. - Images are cached and shared internally, so if several Image elements have the same source + If the image is from a network rather than a local resource, it is automatically loaded + asynchronously, and the \l progress and \l status properties are updated as appropriate. + + Images are cached and shared internally, so if several Image elements have the same \l source, only one copy of the image will be loaded. \bold Note: Images are often the greatest user of memory in QML user interfaces. It is recommended @@ -84,7 +86,7 @@ QT_BEGIN_NAMESPACE size bounded via the \l sourceSize property. This is especially important for content that is loaded from external sources or provided by the user. - \sa {declarative/imageelements/image}{Image example} + \sa {declarative/imageelements/image}{Image example}, QDeclarativeImageProvider */ /*! @@ -431,7 +433,7 @@ void QDeclarativeImage::geometryChanged(const QRectF &newGeometry, const QRectF asynchronously in a separate thread. The default value is false, causing the user interface thread to block while the image is loaded. Setting \a asynchronous to true is useful where - maintaining a responsive user interface is more desireable + maintaining a responsive user interface is more desirable than having images immediately visible. Note that this property is only valid for images read from the diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index bd935c9..f5ea537 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -1601,7 +1601,7 @@ QDeclarativeItem *QDeclarativeItem::parentItem() const Returns true if construction of the QML component is complete; otherwise returns false. - It is often desireable to delay some processing until the component is + It is often desirable to delay some processing until the component is completed. \sa componentComplete() @@ -2601,7 +2601,7 @@ void QDeclarativeItem::classBegin() \internal componentComplete() is called when all items in the component - have been constructed. It is often desireable to delay some + have been constructed. It is often desirable to delay some processing until the component is complete an all bindings in the component have been resolved. */ diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp index 0e980b3..f4ebd13 100644 --- a/src/declarative/graphicsitems/qdeclarativepathview.cpp +++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp @@ -329,6 +329,10 @@ void QDeclarativePathViewPrivate::regenerate() \image pathview.gif + (Note the above example uses PathAttribute to scale and modify the + opacity of the items as they rotate. This additional code can be seen in the + PathAttribute documentation.) + Delegates are instantiated as needed and may be destroyed at any time. State should \e never be stored in a delegate. diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 8b013fe..04ec382 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -96,10 +96,10 @@ class QByteArray; QObject *myObject = component.create(); QDeclarativeItem *item = qobject_cast(myObject); - int width = item->width(); + int width = item->width(); // width = 200 \endcode - \sa {Using QML in C++ Applications} + \sa {Using QML in C++ Applications}, {Integrating QML with existing Qt UI code} */ /*! -- cgit v0.12 From 4e915e3942c1523ffdda01e36c019f842062b794 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Wed, 7 Jul 2010 11:04:33 +0200 Subject: Fix text drawing into alpha pixmap with opengl engine The merge 03dc74984749adf5b11482bf871a47086217845c mistakenly merged the glyphMargin() (which had been removed in 4.7 because QGLTextureGlyphCache now inherits from the image glyph cache) with the glyphPadding() which had been introduced in separate commits in both branches (probably backported.) This broke text drawing into a pixmap with an alpha with the GL engine, because we'd assume a margin of 1, but the alphaMapForGlyph() function doesn't support margins. Task-number: QTBUG-11987 Reviewed-by: Gunnar --- src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp | 5 ----- src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h | 1 - 2 files changed, 6 deletions(-) diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 5371c5e..410cf21 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -276,11 +276,6 @@ void QGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph) } } -int QGLTextureGlyphCache::glyphMargin() const -{ - return 1; -} - int QGLTextureGlyphCache::glyphPadding() const { return 1; diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h index 84e9021..6bcd655 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h @@ -72,7 +72,6 @@ public: virtual void createTextureData(int width, int height); virtual void resizeTextureData(int width, int height); virtual void fillTexture(const Coord &c, glyph_t glyph); - virtual int glyphMargin() const; virtual int glyphPadding() const; inline GLuint texture() const { return m_texture; } -- cgit v0.12 From 2769d4b72675e62c441fa181609adca25922715a Mon Sep 17 00:00:00 2001 From: John Brooks Date: Mon, 5 Jul 2010 21:17:48 +0200 Subject: Move logic for building SIMD extensions to gui.pro Enables SIMD files to be built outside of painting.pri by appending files to SSE_SOURCES etc. Merge-request: 725 Reviewed-by: Benjamin Poulain --- src/gui/gui.pro | 126 ++++++++++++++++++++++++++++++++++ src/gui/painting/painting.pri | 152 ++---------------------------------------- 2 files changed, 133 insertions(+), 145 deletions(-) diff --git a/src/gui/gui.pro b/src/gui/gui.pro index dede9d0..41f1904 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -77,3 +77,129 @@ symbian { DEPLOYMENT = partial_upgrade $$DEPLOYMENT } +contains(QMAKE_MAC_XARCH, no) { + DEFINES += QT_NO_MAC_XARCH +} else { + mmx:DEFINES += QT_HAVE_MMX + 3dnow:DEFINES += QT_HAVE_3DNOW + sse:DEFINES += QT_HAVE_SSE QT_HAVE_MMXEXT + sse2:DEFINES += QT_HAVE_SSE2 + iwmmxt:DEFINES += QT_HAVE_IWMMXT + + win32-g++*|!win32:!*-icc* { + mmx { + mmx_compiler.commands = $$QMAKE_CXX -c -Winline + + mac { + mmx_compiler.commands += -Xarch_i386 -mmmx + mmx_compiler.commands += -Xarch_x86_64 -mmmx + } else { + mmx_compiler.commands += -mmmx + } + + mmx_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + mmx_compiler.dependency_type = TYPE_C + mmx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + mmx_compiler.input = MMX_SOURCES + mmx_compiler.variable_out = OBJECTS + mmx_compiler.name = compiling[mmx] ${QMAKE_FILE_IN} + silent:mmx_compiler.commands = @echo compiling[mmx] ${QMAKE_FILE_IN} && $$mmx_compiler.commands + QMAKE_EXTRA_COMPILERS += mmx_compiler + } + 3dnow { + mmx3dnow_compiler.commands = $$QMAKE_CXX -c -Winline + + mac { + mmx3dnow_compiler.commands += -Xarch_i386 -m3dnow -Xarch_i386 -mmmx + mmx3dnow_compiler.commands += -Xarch_x86_64 -m3dnow -Xarch_x86_64 -mmmx + } else { + mmx3dnow_compiler.commands += -m3dnow -mmmx + } + + mmx3dnow_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + mmx3dnow_compiler.dependency_type = TYPE_C + mmx3dnow_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + mmx3dnow_compiler.input = MMX3DNOW_SOURCES + mmx3dnow_compiler.variable_out = OBJECTS + mmx3dnow_compiler.name = compiling[mmx3dnow] ${QMAKE_FILE_IN} + silent:mmx3dnow_compiler.commands = @echo compiling[mmx3dnow] ${QMAKE_FILE_IN} && $$mmx3dnow_compiler.commands + QMAKE_EXTRA_COMPILERS += mmx3dnow_compiler + sse { + sse3dnow_compiler.commands = $$QMAKE_CXX -c -Winline + + mac { + sse3dnow_compiler.commands += -Xarch_i386 -m3dnow -Xarch_i386 -msse + sse3dnow_compiler.commands += -Xarch_x86_64 -m3dnow -Xarch_x86_64 -msse + } else { + sse3dnow_compiler.commands += -m3dnow -msse + } + + sse3dnow_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse3dnow_compiler.dependency_type = TYPE_C + sse3dnow_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse3dnow_compiler.input = SSE3DNOW_SOURCES + sse3dnow_compiler.variable_out = OBJECTS + sse3dnow_compiler.name = compiling[sse3dnow] ${QMAKE_FILE_IN} + silent:sse3dnow_compiler.commands = @echo compiling[sse3dnow] ${QMAKE_FILE_IN} && $$sse3dnow_compiler.commands + QMAKE_EXTRA_COMPILERS += sse3dnow_compiler + } + } + sse { + sse_compiler.commands = $$QMAKE_CXX -c -Winline + + mac { + sse_compiler.commands += -Xarch_i386 -msse + sse_compiler.commands += -Xarch_x86_64 -msse + } else { + sse_compiler.commands += -msse + } + + sse_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse_compiler.dependency_type = TYPE_C + sse_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse_compiler.input = SSE_SOURCES + sse_compiler.variable_out = OBJECTS + sse_compiler.name = compiling[sse] ${QMAKE_FILE_IN} + silent:sse_compiler.commands = @echo compiling[sse] ${QMAKE_FILE_IN} && $$sse_compiler.commands + QMAKE_EXTRA_COMPILERS += sse_compiler + } + sse2 { + sse2_compiler.commands = $$QMAKE_CXX -c -Winline + + mac { + sse2_compiler.commands += -Xarch_i386 -msse2 + sse2_compiler.commands += -Xarch_x86_64 -msse2 + } else { + sse2_compiler.commands += -msse2 + } + + sse2_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + sse2_compiler.dependency_type = TYPE_C + sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + sse2_compiler.input = SSE2_SOURCES + sse2_compiler.variable_out = OBJECTS + sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN} + silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands + QMAKE_EXTRA_COMPILERS += sse2_compiler + } + iwmmxt { + iwmmxt_compiler.commands = $$QMAKE_CXX -c -Winline + iwmmxt_compiler.commands += -mcpu=iwmmxt + iwmmxt_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} + iwmmxt_compiler.dependency_type = TYPE_C + iwmmxt_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} + iwmmxt_compiler.input = IWMMXT_SOURCES + iwmmxt_compiler.variable_out = OBJECTS + iwmmxt_compiler.name = compiling[iwmmxt] ${QMAKE_FILE_IN} + silent:iwmmxt_compiler.commands = @echo compiling[iwmmxt] ${QMAKE_FILE_IN} && $$iwmmxt_compiler.commands + QMAKE_EXTRA_COMPILERS += iwmmxt_compiler + } + } else { + mmx: SOURCES += $$MMX_SOURCES + 3dnow: SOURCES += $$MMX3DNOW_SOURCES + 3dnow:sse: SOURCES += $$SSE3DNOW_SOURCES + sse: SOURCES += $$SSE_SOURCES + sse2: SOURCES += $$SSE2_SOURCES + iwmmxt: SOURCES += $$IWMMXT_SOURCES + } +} diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index 07aabc9..c207c9d 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -202,154 +202,16 @@ x11|embedded { DEFINES += QT_NO_CUPS QT_NO_LPR } -contains(QMAKE_MAC_XARCH, no) { - DEFINES += QT_NO_MAC_XARCH -} else:if(mmx|3dnow|sse|sse2|iwmmxt) { +if(mmx|3dnow|sse|sse2|iwmmxt) { HEADERS += painting/qdrawhelper_x86_p.h \ painting/qdrawhelper_mmx_p.h \ painting/qdrawhelper_sse_p.h - mmx { - DEFINES += QT_HAVE_MMX - MMX_SOURCES += painting/qdrawhelper_mmx.cpp - } - 3dnow { - DEFINES += QT_HAVE_3DNOW - MMX3DNOW_SOURCES += painting/qdrawhelper_mmx3dnow.cpp - sse { - SSE3DNOW_SOURCES += painting/qdrawhelper_sse3dnow.cpp - } - } - sse { - DEFINES += QT_HAVE_SSE - SSE_SOURCES += painting/qdrawhelper_sse.cpp - - DEFINES += QT_HAVE_MMXEXT - } - sse2 { - DEFINES += QT_HAVE_SSE2 - SSE2_SOURCES += painting/qdrawhelper_sse2.cpp - } - iwmmxt { - DEFINES += QT_HAVE_IWMMXT - IWMMXT_SOURCES += painting/qdrawhelper_iwmmxt.cpp - } - - win32-g++*|!win32:!*-icc* { - mmx { - mmx_compiler.commands = $$QMAKE_CXX -c -Winline - - mac { - mmx_compiler.commands += -Xarch_i386 -mmmx - mmx_compiler.commands += -Xarch_x86_64 -mmmx - } else { - mmx_compiler.commands += -mmmx - } - - mmx_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - mmx_compiler.dependency_type = TYPE_C - mmx_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - mmx_compiler.input = MMX_SOURCES - mmx_compiler.variable_out = OBJECTS - mmx_compiler.name = compiling[mmx] ${QMAKE_FILE_IN} - silent:mmx_compiler.commands = @echo compiling[mmx] ${QMAKE_FILE_IN} && $$mmx_compiler.commands - QMAKE_EXTRA_COMPILERS += mmx_compiler - } - 3dnow { - mmx3dnow_compiler.commands = $$QMAKE_CXX -c -Winline - - mac { - mmx3dnow_compiler.commands += -Xarch_i386 -m3dnow -Xarch_i386 -mmmx - mmx3dnow_compiler.commands += -Xarch_x86_64 -m3dnow -Xarch_x86_64 -mmmx - } else { - mmx3dnow_compiler.commands += -m3dnow -mmmx - } - - mmx3dnow_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - mmx3dnow_compiler.dependency_type = TYPE_C - mmx3dnow_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - mmx3dnow_compiler.input = MMX3DNOW_SOURCES - mmx3dnow_compiler.variable_out = OBJECTS - mmx3dnow_compiler.name = compiling[mmx3dnow] ${QMAKE_FILE_IN} - silent:mmx3dnow_compiler.commands = @echo compiling[mmx3dnow] ${QMAKE_FILE_IN} && $$mmx3dnow_compiler.commands - QMAKE_EXTRA_COMPILERS += mmx3dnow_compiler - sse { - sse3dnow_compiler.commands = $$QMAKE_CXX -c -Winline - - mac { - sse3dnow_compiler.commands += -Xarch_i386 -m3dnow -Xarch_i386 -msse - sse3dnow_compiler.commands += -Xarch_x86_64 -m3dnow -Xarch_x86_64 -msse - } else { - sse3dnow_compiler.commands += -m3dnow -msse - } - - sse3dnow_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - sse3dnow_compiler.dependency_type = TYPE_C - sse3dnow_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - sse3dnow_compiler.input = SSE3DNOW_SOURCES - sse3dnow_compiler.variable_out = OBJECTS - sse3dnow_compiler.name = compiling[sse3dnow] ${QMAKE_FILE_IN} - silent:sse3dnow_compiler.commands = @echo compiling[sse3dnow] ${QMAKE_FILE_IN} && $$sse3dnow_compiler.commands - QMAKE_EXTRA_COMPILERS += sse3dnow_compiler - } - } - sse { - sse_compiler.commands = $$QMAKE_CXX -c -Winline - - mac { - sse_compiler.commands += -Xarch_i386 -msse - sse_compiler.commands += -Xarch_x86_64 -msse - } else { - sse_compiler.commands += -msse - } - - sse_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - sse_compiler.dependency_type = TYPE_C - sse_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - sse_compiler.input = SSE_SOURCES - sse_compiler.variable_out = OBJECTS - sse_compiler.name = compiling[sse] ${QMAKE_FILE_IN} - silent:sse_compiler.commands = @echo compiling[sse] ${QMAKE_FILE_IN} && $$sse_compiler.commands - QMAKE_EXTRA_COMPILERS += sse_compiler - } - sse2 { - sse2_compiler.commands = $$QMAKE_CXX -c -Winline - - mac { - sse2_compiler.commands += -Xarch_i386 -msse2 - sse2_compiler.commands += -Xarch_x86_64 -msse2 - } else { - sse2_compiler.commands += -msse2 - } - - sse2_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - sse2_compiler.dependency_type = TYPE_C - sse2_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - sse2_compiler.input = SSE2_SOURCES - sse2_compiler.variable_out = OBJECTS - sse2_compiler.name = compiling[sse2] ${QMAKE_FILE_IN} - silent:sse2_compiler.commands = @echo compiling[sse2] ${QMAKE_FILE_IN} && $$sse2_compiler.commands - QMAKE_EXTRA_COMPILERS += sse2_compiler - } - iwmmxt { - iwmmxt_compiler.commands = $$QMAKE_CXX -c -Winline - iwmmxt_compiler.commands += -mcpu=iwmmxt - iwmmxt_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} - iwmmxt_compiler.dependency_type = TYPE_C - iwmmxt_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)} - iwmmxt_compiler.input = IWMMXT_SOURCES - iwmmxt_compiler.variable_out = OBJECTS - iwmmxt_compiler.name = compiling[iwmmxt] ${QMAKE_FILE_IN} - silent:iwmmxt_compiler.commands = @echo compiling[iwmmxt] ${QMAKE_FILE_IN} && $$iwmmxt_compiler.commands - QMAKE_EXTRA_COMPILERS += iwmmxt_compiler - } - } else { - mmx: SOURCES += $$MMX_SOURCES - 3dnow: SOURCES += $$MMX3DNOW_SOURCES - 3dnow:sse: SOURCES += $$SSE3DNOW_SOURCES - sse: SOURCES += $$SSE_SOURCES - sse2: SOURCES += $$SSE2_SOURCES - iwmmxt: SOURCES += $$IWMMXT_SOURCES - } + MMX_SOURCES += painting/qdrawhelper_mmx.cpp + MMX3DNOW_SOURCES += painting/qdrawhelper_mmx3dnow.cpp + SSE3DNOW_SOURCES += painting/qdrawhelper_sse3dnow.cpp + SSE_SOURCES += painting/qdrawhelper_sse.cpp + SSE2_SOURCES += painting/qdrawhelper_sse2.cpp + IWMMXT_SOURCES += painting/qdrawhelper_iwmmxt.cpp } x11 { -- cgit v0.12 From 93bcbe213e947843184a75f4b237c8dff45ca866 Mon Sep 17 00:00:00 2001 From: John Brooks Date: Mon, 5 Jul 2010 21:17:49 +0200 Subject: Moved primitive SSE2 painting utilities to qdrawingprimitive_sse2_p.h Merge-request: 725 Reviewed-by: Benjamin Poulain --- src/gui/painting/painting.pri | 3 +- src/gui/painting/qdrawhelper_sse2.cpp | 156 -------------------- src/gui/painting/qdrawingprimitive_sse2_p.h | 216 ++++++++++++++++++++++++++++ 3 files changed, 218 insertions(+), 157 deletions(-) create mode 100644 src/gui/painting/qdrawingprimitive_sse2_p.h diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri index c207c9d..4023f65 100644 --- a/src/gui/painting/painting.pri +++ b/src/gui/painting/painting.pri @@ -205,7 +205,8 @@ x11|embedded { if(mmx|3dnow|sse|sse2|iwmmxt) { HEADERS += painting/qdrawhelper_x86_p.h \ painting/qdrawhelper_mmx_p.h \ - painting/qdrawhelper_sse_p.h + painting/qdrawhelper_sse_p.h \ + painting/qdrawingprimitive_sse2_p.h MMX_SOURCES += painting/qdrawhelper_mmx.cpp MMX3DNOW_SOURCES += painting/qdrawhelper_mmx3dnow.cpp SSE3DNOW_SOURCES += painting/qdrawhelper_sse3dnow.cpp diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index 6cd8688..ae16fed 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -57,162 +57,6 @@ QT_BEGIN_NAMESPACE -/* - * Multiply the components of pixelVector by alphaChannel - * Each 32bits components of alphaChannel must be in the form 0x00AA00AA - * colorMask must have 0x00ff00ff on each 32 bits component - * half must have the value 128 (0x80) for each 32 bits compnent - */ -#define BYTE_MUL_SSE2(result, pixelVector, alphaChannel, colorMask, half) \ -{ \ - /* 1. separate the colors in 2 vectors so each color is on 16 bits \ - (in order to be multiplied by the alpha \ - each 32 bit of dstVectorAG are in the form 0x00AA00GG \ - each 32 bit of dstVectorRB are in the form 0x00RR00BB */\ - __m128i pixelVectorAG = _mm_srli_epi16(pixelVector, 8); \ - __m128i pixelVectorRB = _mm_and_si128(pixelVector, colorMask); \ - \ - /* 2. multiply the vectors by the alpha channel */\ - pixelVectorAG = _mm_mullo_epi16(pixelVectorAG, alphaChannel); \ - pixelVectorRB = _mm_mullo_epi16(pixelVectorRB, alphaChannel); \ - \ - /* 3. devide by 255, that's the tricky part. \ - we do it like for BYTE_MUL(), with bit shift: X/255 ~= (X + X/256 + rounding)/256 */ \ - /** so first (X + X/256 + rounding) */\ - pixelVectorRB = _mm_add_epi16(pixelVectorRB, _mm_srli_epi16(pixelVectorRB, 8)); \ - pixelVectorRB = _mm_add_epi16(pixelVectorRB, half); \ - pixelVectorAG = _mm_add_epi16(pixelVectorAG, _mm_srli_epi16(pixelVectorAG, 8)); \ - pixelVectorAG = _mm_add_epi16(pixelVectorAG, half); \ - \ - /** second devide by 256 */\ - pixelVectorRB = _mm_srli_epi16(pixelVectorRB, 8); \ - /** for AG, we could >> 8 to divide followed by << 8 to put the \ - bytes in the correct position. By masking instead, we execute \ - only one instruction */\ - pixelVectorAG = _mm_andnot_si128(colorMask, pixelVectorAG); \ - \ - /* 4. combine the 2 pairs of colors */ \ - result = _mm_or_si128(pixelVectorAG, pixelVectorRB); \ -} - -/* - * Each 32bits components of alphaChannel must be in the form 0x00AA00AA - * oneMinusAlphaChannel must be 255 - alpha for each 32 bits component - * colorMask must have 0x00ff00ff on each 32 bits component - * half must have the value 128 (0x80) for each 32 bits compnent - */ -#define INTERPOLATE_PIXEL_255_SSE2(result, srcVector, dstVector, alphaChannel, oneMinusAlphaChannel, colorMask, half) { \ - /* interpolate AG */\ - __m128i srcVectorAG = _mm_srli_epi16(srcVector, 8); \ - __m128i dstVectorAG = _mm_srli_epi16(dstVector, 8); \ - __m128i srcVectorAGalpha = _mm_mullo_epi16(srcVectorAG, alphaChannel); \ - __m128i dstVectorAGoneMinusAlphalpha = _mm_mullo_epi16(dstVectorAG, oneMinusAlphaChannel); \ - __m128i finalAG = _mm_add_epi16(srcVectorAGalpha, dstVectorAGoneMinusAlphalpha); \ - finalAG = _mm_add_epi16(finalAG, _mm_srli_epi16(finalAG, 8)); \ - finalAG = _mm_add_epi16(finalAG, half); \ - finalAG = _mm_andnot_si128(colorMask, finalAG); \ - \ - /* interpolate RB */\ - __m128i srcVectorRB = _mm_and_si128(srcVector, colorMask); \ - __m128i dstVectorRB = _mm_and_si128(dstVector, colorMask); \ - __m128i srcVectorRBalpha = _mm_mullo_epi16(srcVectorRB, alphaChannel); \ - __m128i dstVectorRBoneMinusAlphalpha = _mm_mullo_epi16(dstVectorRB, oneMinusAlphaChannel); \ - __m128i finalRB = _mm_add_epi16(srcVectorRBalpha, dstVectorRBoneMinusAlphalpha); \ - finalRB = _mm_add_epi16(finalRB, _mm_srli_epi16(finalRB, 8)); \ - finalRB = _mm_add_epi16(finalRB, half); \ - finalRB = _mm_srli_epi16(finalRB, 8); \ - \ - /* combine */\ - result = _mm_or_si128(finalAG, finalRB); \ -} - -// Basically blend src over dst with the const alpha defined as constAlphaVector. -// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: -//const __m128i nullVector = _mm_set1_epi32(0); -//const __m128i half = _mm_set1_epi16(0x80); -//const __m128i one = _mm_set1_epi16(0xff); -//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); -//const __m128i alphaMask = _mm_set1_epi32(0xff000000); -// -// The computation being done is: -// result = s + d * (1-alpha) -// with shortcuts if fully opaque or fully transparent. -#define BLEND_SOURCE_OVER_ARGB32_SSE2(dst, src, length, nullVector, half, one, colorMask, alphaMask) { \ - int x = 0; \ - for (; x < length-3; x += 4) { \ - const __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); \ - const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ - if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ - /* all opaque */ \ - _mm_storeu_si128((__m128i *)&dst[x], srcVector); \ - } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ - /* not fully transparent */ \ - /* extract the alpha channel on 2 x 16 bits */ \ - /* so we have room for the multiplication */ \ - /* each 32 bits will be in the form 0x00AA00AA */ \ - /* with A being the 1 - alpha */ \ - __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ - alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ - alphaChannel = _mm_sub_epi16(one, alphaChannel); \ - \ - const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); \ - __m128i destMultipliedByOneMinusAlpha; \ - BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ - \ - /* result = s + d * (1-alpha) */\ - const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ - _mm_storeu_si128((__m128i *)&dst[x], result); \ - } \ - } \ - for (; x < length; ++x) { \ - uint s = src[x]; \ - if (s >= 0xff000000) \ - dst[x] = s; \ - else if (s != 0) \ - dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); \ - } \ -} - -// Basically blend src over dst with the const alpha defined as constAlphaVector. -// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: -//const __m128i nullVector = _mm_set1_epi32(0); -//const __m128i half = _mm_set1_epi16(0x80); -//const __m128i one = _mm_set1_epi16(0xff); -//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); -// -// The computation being done is: -// dest = (s + d * sia) * ca + d * cia -// = s * ca + d * (sia * ca + cia) -// = s * ca + d * (1 - sa*ca) -#define BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, length, nullVector, half, one, colorMask, constAlphaVector) \ -{ \ - int x = 0; \ - for (; x < length-3; x += 4) { \ - __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); \ - if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVector, nullVector)) != 0xffff) { \ - BYTE_MUL_SSE2(srcVector, srcVector, constAlphaVector, colorMask, half); \ -\ - __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ - alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ - alphaChannel = _mm_sub_epi16(one, alphaChannel); \ - \ - const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); \ - __m128i destMultipliedByOneMinusAlpha; \ - BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ - \ - const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ - _mm_storeu_si128((__m128i *)&dst[x], result); \ - } \ - } \ - for (; x < length; ++x) { \ - quint32 s = src[x]; \ - if (s != 0) { \ - s = BYTE_MUL(s, const_alpha); \ - dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); \ - } \ - } \ -} - void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, const uchar *srcPixels, int sbpl, int w, int h, diff --git a/src/gui/painting/qdrawingprimitive_sse2_p.h b/src/gui/painting/qdrawingprimitive_sse2_p.h new file mode 100644 index 0000000..2b595c5 --- /dev/null +++ b/src/gui/painting/qdrawingprimitive_sse2_p.h @@ -0,0 +1,216 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDRAWINGPRIMITIVE_SSE2_P_H +#define QDRAWINGPRIMITIVE_SSE2_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +/* + * Multiply the components of pixelVector by alphaChannel + * Each 32bits components of alphaChannel must be in the form 0x00AA00AA + * colorMask must have 0x00ff00ff on each 32 bits component + * half must have the value 128 (0x80) for each 32 bits compnent + */ +#define BYTE_MUL_SSE2(result, pixelVector, alphaChannel, colorMask, half) \ +{ \ + /* 1. separate the colors in 2 vectors so each color is on 16 bits \ + (in order to be multiplied by the alpha \ + each 32 bit of dstVectorAG are in the form 0x00AA00GG \ + each 32 bit of dstVectorRB are in the form 0x00RR00BB */\ + __m128i pixelVectorAG = _mm_srli_epi16(pixelVector, 8); \ + __m128i pixelVectorRB = _mm_and_si128(pixelVector, colorMask); \ + \ + /* 2. multiply the vectors by the alpha channel */\ + pixelVectorAG = _mm_mullo_epi16(pixelVectorAG, alphaChannel); \ + pixelVectorRB = _mm_mullo_epi16(pixelVectorRB, alphaChannel); \ + \ + /* 3. devide by 255, that's the tricky part. \ + we do it like for BYTE_MUL(), with bit shift: X/255 ~= (X + X/256 + rounding)/256 */ \ + /** so first (X + X/256 + rounding) */\ + pixelVectorRB = _mm_add_epi16(pixelVectorRB, _mm_srli_epi16(pixelVectorRB, 8)); \ + pixelVectorRB = _mm_add_epi16(pixelVectorRB, half); \ + pixelVectorAG = _mm_add_epi16(pixelVectorAG, _mm_srli_epi16(pixelVectorAG, 8)); \ + pixelVectorAG = _mm_add_epi16(pixelVectorAG, half); \ + \ + /** second devide by 256 */\ + pixelVectorRB = _mm_srli_epi16(pixelVectorRB, 8); \ + /** for AG, we could >> 8 to divide followed by << 8 to put the \ + bytes in the correct position. By masking instead, we execute \ + only one instruction */\ + pixelVectorAG = _mm_andnot_si128(colorMask, pixelVectorAG); \ + \ + /* 4. combine the 2 pairs of colors */ \ + result = _mm_or_si128(pixelVectorAG, pixelVectorRB); \ +} + +/* + * Each 32bits components of alphaChannel must be in the form 0x00AA00AA + * oneMinusAlphaChannel must be 255 - alpha for each 32 bits component + * colorMask must have 0x00ff00ff on each 32 bits component + * half must have the value 128 (0x80) for each 32 bits compnent + */ +#define INTERPOLATE_PIXEL_255_SSE2(result, srcVector, dstVector, alphaChannel, oneMinusAlphaChannel, colorMask, half) { \ + /* interpolate AG */\ + __m128i srcVectorAG = _mm_srli_epi16(srcVector, 8); \ + __m128i dstVectorAG = _mm_srli_epi16(dstVector, 8); \ + __m128i srcVectorAGalpha = _mm_mullo_epi16(srcVectorAG, alphaChannel); \ + __m128i dstVectorAGoneMinusAlphalpha = _mm_mullo_epi16(dstVectorAG, oneMinusAlphaChannel); \ + __m128i finalAG = _mm_add_epi16(srcVectorAGalpha, dstVectorAGoneMinusAlphalpha); \ + finalAG = _mm_add_epi16(finalAG, _mm_srli_epi16(finalAG, 8)); \ + finalAG = _mm_add_epi16(finalAG, half); \ + finalAG = _mm_andnot_si128(colorMask, finalAG); \ + \ + /* interpolate RB */\ + __m128i srcVectorRB = _mm_and_si128(srcVector, colorMask); \ + __m128i dstVectorRB = _mm_and_si128(dstVector, colorMask); \ + __m128i srcVectorRBalpha = _mm_mullo_epi16(srcVectorRB, alphaChannel); \ + __m128i dstVectorRBoneMinusAlphalpha = _mm_mullo_epi16(dstVectorRB, oneMinusAlphaChannel); \ + __m128i finalRB = _mm_add_epi16(srcVectorRBalpha, dstVectorRBoneMinusAlphalpha); \ + finalRB = _mm_add_epi16(finalRB, _mm_srli_epi16(finalRB, 8)); \ + finalRB = _mm_add_epi16(finalRB, half); \ + finalRB = _mm_srli_epi16(finalRB, 8); \ + \ + /* combine */\ + result = _mm_or_si128(finalAG, finalRB); \ +} + +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +//const __m128i alphaMask = _mm_set1_epi32(0xff000000); +// +// The computation being done is: +// result = s + d * (1-alpha) +// with shortcuts if fully opaque or fully transparent. +#define BLEND_SOURCE_OVER_ARGB32_SSE2(dst, src, length, nullVector, half, one, colorMask, alphaMask) { \ + int x = 0; \ + for (; x < length-3; x += 4) { \ + const __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); \ + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { \ + /* all opaque */ \ + _mm_storeu_si128((__m128i *)&dst[x], srcVector); \ + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) != 0xffff) { \ + /* not fully transparent */ \ + /* extract the alpha channel on 2 x 16 bits */ \ + /* so we have room for the multiplication */ \ + /* each 32 bits will be in the form 0x00AA00AA */ \ + /* with A being the 1 - alpha */ \ + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + \ + const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + \ + /* result = s + d * (1-alpha) */\ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_storeu_si128((__m128i *)&dst[x], result); \ + } \ + } \ + for (; x < length; ++x) { \ + uint s = src[x]; \ + if (s >= 0xff000000) \ + dst[x] = s; \ + else if (s != 0) \ + dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); \ + } \ +} + +// Basically blend src over dst with the const alpha defined as constAlphaVector. +// nullVector, half, one, colorMask are constant accross the whole image/texture, and should be defined as: +//const __m128i nullVector = _mm_set1_epi32(0); +//const __m128i half = _mm_set1_epi16(0x80); +//const __m128i one = _mm_set1_epi16(0xff); +//const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); +// +// The computation being done is: +// dest = (s + d * sia) * ca + d * cia +// = s * ca + d * (sia * ca + cia) +// = s * ca + d * (1 - sa*ca) +#define BLEND_SOURCE_OVER_ARGB32_WITH_CONST_ALPHA_SSE2(dst, src, length, nullVector, half, one, colorMask, constAlphaVector) \ +{ \ + int x = 0; \ + for (; x < length-3; x += 4) { \ + __m128i srcVector = _mm_loadu_si128((__m128i *)&src[x]); \ + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVector, nullVector)) != 0xffff) { \ + BYTE_MUL_SSE2(srcVector, srcVector, constAlphaVector, colorMask, half); \ +\ + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); \ + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); \ + alphaChannel = _mm_sub_epi16(one, alphaChannel); \ + \ + const __m128i dstVector = _mm_loadu_si128((__m128i *)&dst[x]); \ + __m128i destMultipliedByOneMinusAlpha; \ + BYTE_MUL_SSE2(destMultipliedByOneMinusAlpha, dstVector, alphaChannel, colorMask, half); \ + \ + const __m128i result = _mm_add_epi8(srcVector, destMultipliedByOneMinusAlpha); \ + _mm_storeu_si128((__m128i *)&dst[x], result); \ + } \ + } \ + for (; x < length; ++x) { \ + quint32 s = src[x]; \ + if (s != 0) { \ + s = BYTE_MUL(s, const_alpha); \ + dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s)); \ + } \ + } \ +} + +QT_END_NAMESPACE + +#endif // QDRAWINGPRIMITIVE_SSE2_P_H -- cgit v0.12 From dad8e33546a209820da1f3d07a0e331e001bc23e Mon Sep 17 00:00:00 2001 From: John Brooks Date: Mon, 5 Jul 2010 21:17:49 +0200 Subject: SSE2 implementation of convert_ARGB_to_ARGB_PM_inplace for QImage Merge-request: 725 Reviewed-by: Benjamin Poulain --- src/corelib/tools/qsimd_p.h | 5 +- src/gui/image/image.pri | 3 + src/gui/image/qimage.cpp | 18 ++++- src/gui/image/qimage_p.h | 2 + src/gui/image/qimage_sse2.cpp | 109 ++++++++++++++++++++++++++++ src/gui/kernel/qapplication.cpp | 3 + src/gui/painting/qdrawhelper_sse2.cpp | 12 +-- src/gui/painting/qdrawingprimitive_sse2_p.h | 6 ++ 8 files changed, 144 insertions(+), 14 deletions(-) create mode 100644 src/gui/image/qimage_sse2.cpp diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 58d2dcb..0ed9d5d 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -58,8 +58,7 @@ QT_BEGIN_HEADER #endif // SSE intrinsics -#if defined(QT_HAVE_SSE2) && !defined(QT_BOOTSTRAPPED) && (defined(__SSE2__) \ - || (defined(Q_CC_MSVC) && (defined(_M_X64) || _M_IX86_FP == 2))) +#if defined(QT_HAVE_SSE2) && (defined(__SSE2__) || defined(Q_CC_MSVC)) #if defined(QT_LINUXBASE) /// this is an evil hack - the posix_memalign declaration in LSB /// is wrong - see http://bugs.linuxbase.org/show_bug.cgi?id=2431 @@ -73,8 +72,10 @@ QT_BEGIN_HEADER # include #endif +#if !defined(QT_BOOTSTRAPPED) && (!defined(Q_CC_MSVC) || (defined(_M_X64) || _M_IX86_FP == 2)) #define QT_ALWAYS_HAVE_SSE2 #endif +#endif // defined(QT_HAVE_SSE2) && (defined(__SSE2__) || defined(Q_CC_MSVC)) // NEON intrinsics #if defined(QT_HAVE_NEON) diff --git a/src/gui/image/image.pri b/src/gui/image/image.pri index 9f0c87e..3a02d56 100644 --- a/src/gui/image/image.pri +++ b/src/gui/image/image.pri @@ -92,3 +92,6 @@ contains(QT_CONFIG, jpeg):include($$PWD/qjpeghandler.pri) contains(QT_CONFIG, mng):include($$PWD/qmnghandler.pri) contains(QT_CONFIG, tiff):include($$PWD/qtiffhandler.pri) contains(QT_CONFIG, gif):include($$PWD/qgifhandler.pri) + +# SIMD +SSE2_SOURCES += image/qimage_sse2.cpp diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 79f266d..88a0366 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include @@ -209,7 +210,7 @@ QImageData * QImageData::create(const QSize &size, QImage::Format format, int nu break; } - const int bytes_per_line = ((width * depth + 31) >> 5) << 2; // bytes per scanline (must be multiple of 8) + const int bytes_per_line = ((width * depth + 31) >> 5) << 2; // bytes per scanline (must be multiple of 4) // sanity check for potential overflows if (INT_MAX/depth < width @@ -3630,7 +3631,7 @@ static const Image_Converter converter_map[QImage::NImageFormats][QImage::NImage } // Format_ARGB4444_Premultiplied }; -static const InPlace_Image_Converter inplace_converter_map[QImage::NImageFormats][QImage::NImageFormats] = +static InPlace_Image_Converter inplace_converter_map[QImage::NImageFormats][QImage::NImageFormats] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 @@ -3727,6 +3728,19 @@ static const InPlace_Image_Converter inplace_converter_map[QImage::NImageFormats } // Format_ARGB4444_Premultiplied }; +void qInitImageConversions() +{ + const uint features = qDetectCPUFeatures(); + Q_UNUSED(features); + +#ifdef QT_HAVE_SSE2 + if (features & SSE2) { + extern bool convert_ARGB_to_ARGB_PM_inplace_SSE2(QImageData *data, Qt::ImageConversionFlags); + inplace_converter_map[QImage::Format_ARGB32][QImage::Format_ARGB32_Premultiplied] = convert_ARGB_to_ARGB_PM_inplace_SSE2; + } +#endif +} + /*! Returns a copy of the image in the given \a format. diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h index f1a0c47..5272848 100644 --- a/src/gui/image/qimage_p.h +++ b/src/gui/image/qimage_p.h @@ -108,6 +108,8 @@ struct Q_GUI_EXPORT QImageData { // internal image data QPaintEngine *paintEngine; }; +void qInitImageConversions(); + QT_END_NAMESPACE #endif diff --git a/src/gui/image/qimage_sse2.cpp b/src/gui/image/qimage_sse2.cpp new file mode 100644 index 0000000..e2b89b9 --- /dev/null +++ b/src/gui/image/qimage_sse2.cpp @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qimage.h" +#include +#include +#include +#include + +#ifdef QT_HAVE_SSE2 + +QT_BEGIN_NAMESPACE + +bool convert_ARGB_to_ARGB_PM_inplace_SSE2(QImageData *data, Qt::ImageConversionFlags) +{ + Q_ASSERT(data->format == QImage::Format_ARGB32); + + // extra pixels on each line + const int spare = data->width & 3; + // width in pixels of the pad at the end of each line + const int pad = (data->bytes_per_line >> 2) - data->width; + const int iter = data->width >> 2; + int height = data->height; + + const __m128i alphaMask = _mm_set1_epi32(0xff000000); + const __m128i nullVector = _mm_setzero_si128(); + const __m128i half = _mm_set1_epi16(0x80); + const __m128i colorMask = _mm_set1_epi32(0x00ff00ff); + + __m128i *d = reinterpret_cast<__m128i*>(data->data); + while (height--) { + const __m128i *end = d + iter; + + for (; d != end; ++d) { + const __m128i srcVector = _mm_loadu_si128(d); + const __m128i srcVectorAlpha = _mm_and_si128(srcVector, alphaMask); + if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, alphaMask)) == 0xffff) { + // opaque, data is unchanged + } else if (_mm_movemask_epi8(_mm_cmpeq_epi32(srcVectorAlpha, nullVector)) == 0xffff) { + // fully transparent + _mm_storeu_si128(d, nullVector); + } else { + __m128i alphaChannel = _mm_srli_epi32(srcVector, 24); + alphaChannel = _mm_or_si128(alphaChannel, _mm_slli_epi32(alphaChannel, 16)); + + __m128i result; + BYTE_MUL_SSE2(result, srcVector, alphaChannel, colorMask, half); + result = _mm_or_si128(_mm_andnot_si128(alphaMask, result), srcVectorAlpha); + _mm_storeu_si128(d, result); + } + } + + QRgb *p = reinterpret_cast(d); + QRgb *pe = p+spare; + for (; p != pe; ++p) { + if (*p < 0x00ffffff) + *p = 0; + else if (*p < 0xff000000) + *p = PREMUL(*p); + } + + d = reinterpret_cast<__m128i*>(p+pad); + } + + data->format = QImage::Format_ARGB32_Premultiplied; + return true; +} + +QT_END_NAMESPACE + +#endif // QT_HAVE_SSE2 diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index ccfe88c..94211fd 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -902,6 +902,7 @@ QApplication::QApplication(Display *dpy, int &argc, char **argv, #endif // Q_WS_X11 extern void qInitDrawhelperAsm(); +extern void qInitImageConversions(); extern int qRegisterGuiVariant(); extern int qUnregisterGuiVariant(); #ifndef QT_NO_STATEMACHINE @@ -959,6 +960,8 @@ void QApplicationPrivate::initialize() // Set up which span functions should be used in raster engine... qInitDrawhelperAsm(); + // and QImage conversion functions + qInitImageConversions(); #ifndef QT_NO_WHEELEVENT QApplicationPrivate::wheel_scroll_lines = 3; diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp index ae16fed..346e177 100644 --- a/src/gui/painting/qdrawhelper_sse2.cpp +++ b/src/gui/painting/qdrawhelper_sse2.cpp @@ -43,18 +43,10 @@ #ifdef QT_HAVE_SSE2 +#include +#include #include -#ifdef QT_LINUXBASE -// this is an evil hack - the posix_memalign declaration in LSB -// is wrong - see http://bugs.linuxbase.org/show_bug.cgi?id=2431 -# define posix_memalign _lsb_hack_posix_memalign -# include -# undef posix_memalign -#else -# include -#endif - QT_BEGIN_NAMESPACE void qt_blend_argb32_on_argb32_sse2(uchar *destPixels, int dbpl, diff --git a/src/gui/painting/qdrawingprimitive_sse2_p.h b/src/gui/painting/qdrawingprimitive_sse2_p.h index 2b595c5..3c96946 100644 --- a/src/gui/painting/qdrawingprimitive_sse2_p.h +++ b/src/gui/painting/qdrawingprimitive_sse2_p.h @@ -42,6 +42,10 @@ #ifndef QDRAWINGPRIMITIVE_SSE2_P_H #define QDRAWINGPRIMITIVE_SSE2_P_H +#include + +#ifdef QT_HAVE_SSE2 + // // W A R N I N G // ------------- @@ -213,4 +217,6 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE +#endif // QT_HAVE_SSE2 + #endif // QDRAWINGPRIMITIVE_SSE2_P_H -- cgit v0.12 From 03f325217ab8d896327cb8a31f07df4633e9a485 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Tue, 6 Jul 2010 13:22:10 +0200 Subject: Build fix, the header of QImageData did not declare QImageWriter. Including this header in the SSE2 file broke the build because QImageWriter was not declared. --- src/gui/image/qimage_p.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h index 5272848..da535aa 100644 --- a/src/gui/image/qimage_p.h +++ b/src/gui/image/qimage_p.h @@ -61,6 +61,8 @@ #include #endif +class QImageWriter; + QT_BEGIN_NAMESPACE struct Q_GUI_EXPORT QImageData { // internal image data -- cgit v0.12 From 51509e8df8caf9c84312255a0dae41615fda1168 Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Wed, 7 Jul 2010 11:53:45 +0200 Subject: Add test and fix style for the SSE2 implementation of ARGB32 conversion The commit beba018814b35c4bd032e6b9fa948e4bac34c59a introduce conversion from ARGB32 to ARGB32_PM with SSE2. This patch add a benchmark for this type of usage, and change the name to use lowercase for SSE2 (style convention). --- src/gui/image/qimage.cpp | 4 +- src/gui/image/qimage_sse2.cpp | 2 +- tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp | 64 +++++++++++++++++++++- 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 88a0366..e5930ac 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -3735,8 +3735,8 @@ void qInitImageConversions() #ifdef QT_HAVE_SSE2 if (features & SSE2) { - extern bool convert_ARGB_to_ARGB_PM_inplace_SSE2(QImageData *data, Qt::ImageConversionFlags); - inplace_converter_map[QImage::Format_ARGB32][QImage::Format_ARGB32_Premultiplied] = convert_ARGB_to_ARGB_PM_inplace_SSE2; + extern bool convert_ARGB_to_ARGB_PM_inplace_sse2(QImageData *data, Qt::ImageConversionFlags); + inplace_converter_map[QImage::Format_ARGB32][QImage::Format_ARGB32_Premultiplied] = convert_ARGB_to_ARGB_PM_inplace_sse2; } #endif } diff --git a/src/gui/image/qimage_sse2.cpp b/src/gui/image/qimage_sse2.cpp index e2b89b9..82d49a6 100644 --- a/src/gui/image/qimage_sse2.cpp +++ b/src/gui/image/qimage_sse2.cpp @@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE -bool convert_ARGB_to_ARGB_PM_inplace_SSE2(QImageData *data, Qt::ImageConversionFlags) +bool convert_ARGB_to_ARGB_PM_inplace_sse2(QImageData *data, Qt::ImageConversionFlags) { Q_ASSERT(data->format == QImage::Format_ARGB32); diff --git a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp index 8e9de4a..27e5025 100644 --- a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp +++ b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp @@ -40,9 +40,12 @@ ****************************************************************************/ #include -#include #include +#include +#include +#include #include +#include #include class tst_QPixmap : public QObject @@ -62,6 +65,9 @@ private slots: void transformed(); void mask_data(); void mask(); + + void fromImageReader_data(); + void fromImageReader(); }; Q_DECLARE_METATYPE(QImage::Format) @@ -248,6 +254,62 @@ void tst_QPixmap::mask() } } +void tst_QPixmap::fromImageReader_data() +{ + const QString tempDir = QDir::tempPath(); + QTest::addColumn("filename"); + + QImage image(2000, 2000, QImage::Format_ARGB32); + image.fill(0); + { + // Generate an image with opaque and transparent pixels + // with an interesting distribution. + QPainter painter(&image); + + QRadialGradient radialGrad(QPointF(1000, 1000), 1000); + radialGrad.setColorAt(0, QColor(255, 0, 0, 255)); + radialGrad.setColorAt(0.5, QColor(0, 255, 0, 255)); + radialGrad.setColorAt(0.9, QColor(0, 0, 255, 100)); + radialGrad.setColorAt(1, QColor(0, 0, 0, 0)); + + painter.fillRect(image.rect(), radialGrad); + } + image.save("test.png"); + + // RGB32 + const QString rgb32Path = tempDir + QString::fromLatin1("/rgb32.jpg"); + image.save(rgb32Path); + QTest::newRow("gradient RGB32") << rgb32Path; + + // ARGB32 + const QString argb32Path = tempDir + QString::fromLatin1("/argb32.png"); + image.save(argb32Path); + QTest::newRow("gradient ARGB32") << argb32Path; + + // Indexed 8 + const QString indexed8Path = tempDir + QString::fromLatin1("/indexed8.gif"); + image.save(indexed8Path); + QTest::newRow("gradient indexed8") << indexed8Path; + +} + +void tst_QPixmap::fromImageReader() +{ + QFETCH(QString, filename); + // warmup + { + QImageReader imageReader(filename); + QPixmap::fromImageReader(&imageReader); + } + + QBENCHMARK { + QImageReader imageReader(filename); + QPixmap::fromImageReader(&imageReader); + } + QFile::remove(filename); +} + + QTEST_MAIN(tst_QPixmap) #include "tst_qpixmap.moc" -- cgit v0.12 From 1b598281b5071dff6b1c1510fcb4d41a300c47a4 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Wed, 7 Jul 2010 13:02:31 +0200 Subject: Add partial update deployment rules to QtNetwork Partial update allows you to build a qtnetwork.sis which can be installed on top of a matching qt.sis, but contains only the qtnetwork.dll file. This is faster to install, so it's useful when developing qtnetwork. Reviewed-by: Simon Hausmann --- src/network/network.pro | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/network/network.pro b/src/network/network.pro index 7ed7d3a..5e33080 100644 --- a/src/network/network.pro +++ b/src/network/network.pro @@ -28,4 +28,19 @@ QMAKE_LIBS += $$QMAKE_LIBS_NETWORK symbian { TARGET.UID3=0x2001B2DE LIBS += -lesock -linsock -lcertstore -lefsrv -lctframework + + # Partial upgrade SIS file + vendorinfo = \ + "; Localised Vendor name" \ + "%{\"Nokia, Qt\"}" \ + " " \ + "; Unique Vendor name" \ + ":\"Nokia, Qt\"" \ + " " + pu_header = "; Partial upgrade package for testing QtGui changes without reinstalling everything" \ + "$${LITERAL_HASH}{\"Qt network\"}, (0x2001E61C), $${QT_MAJOR_VERSION},$${QT_MINOR_VERSION},$${QT_PATCH_VERSION}, TYPE=PU" + partial_upgrade.pkg_prerules = pu_header vendorinfo + partial_upgrade.sources = $$QMAKE_LIBDIR_QT/QtNetwork.dll + partial_upgrade.path = c:/sys/bin + DEPLOYMENT = partial_upgrade $$DEPLOYMENT } -- cgit v0.12 From cb406a116bf2237c743ac05882fb06927c70359c Mon Sep 17 00:00:00 2001 From: mae Date: Tue, 6 Jul 2010 15:41:49 +0200 Subject: Added QDeclarativeSpringAnimation The QDeclarativeSpringAnimation is a replacement for QDeclarativeSpringFollow. The idea is to remove the Follows quickly. Follows used to have an inSync property. In order to provide an alternative mechanism, the commit also fixes the running property for animations which are controlled by a behavior. Previously running would always return false and never change. Now running does change and indicates that the animation is running indeed. --- doc/src/declarative/qml-intro.qdoc | 14 +- .../ui-components/dialcontrol/content/Dial.qml | 19 +- src/declarative/util/qdeclarativeanimation.cpp | 10 + src/declarative/util/qdeclarativeanimation_p.h | 1 + src/declarative/util/qdeclarativebehavior.cpp | 27 +- src/declarative/util/qdeclarativebehavior_p.h | 3 + .../util/qdeclarativespringanimation.cpp | 435 +++++++++++++++++++++ .../util/qdeclarativespringanimation_p.h | 126 ++++++ src/declarative/util/qdeclarativeutilmodule.cpp | 2 + src/declarative/util/util.pri | 2 + 10 files changed, 622 insertions(+), 17 deletions(-) create mode 100644 src/declarative/util/qdeclarativespringanimation.cpp create mode 100644 src/declarative/util/qdeclarativespringanimation_p.h diff --git a/doc/src/declarative/qml-intro.qdoc b/doc/src/declarative/qml-intro.qdoc index 21ce2dd..fbab001 100644 --- a/doc/src/declarative/qml-intro.qdoc +++ b/doc/src/declarative/qml-intro.qdoc @@ -923,16 +923,18 @@ the rotation of the needle image. Notice this piece of code in Dial where the change in \c value modifies the position of the needle. \code - SpringFollow on angle { - spring: 1.4 - damping: .15 - to: Math.min(Math.max(-130, root.value*2.6 - 130), 133) + angle: Math.min(Math.max(-130, root.value*2.6 - 130), 133) + Behavior on angle { + SpringAnimation { + spring: 1.4 + damping: .15 + } } \endcode This is part of the \c needleRotation that rotates the needle and causes the -rotation of its shadow. \l SpringFollow is an element that modifies the value -of that rotation angle \e to and mimics the oscillatory behavior of a spring, +rotation of its shadow. \l SpringAnimation is an element that modifies the value +of that rotation \e angle and mimics the oscillatory behavior of a spring, with the appropriate \e spring constant to control the acceleration and the \e damping to control how quickly the effect dies away. diff --git a/examples/declarative/ui-components/dialcontrol/content/Dial.qml b/examples/declarative/ui-components/dialcontrol/content/Dial.qml index 2b421bf..b5074a64 100644 --- a/examples/declarative/ui-components/dialcontrol/content/Dial.qml +++ b/examples/declarative/ui-components/dialcontrol/content/Dial.qml @@ -50,11 +50,11 @@ Item { //! [needle_shadow] Image { - x: 93 + x: 96 y: 35 source: "needle_shadow.png" transform: Rotation { - origin.x: 11; origin.y: 67 + origin.x: 9; origin.y: 67 angle: needleRotation.angle } } @@ -62,17 +62,18 @@ Item { //! [needle] Image { id: needle - x: 95; y: 33 + x: 98; y: 33 smooth: true source: "needle.png" transform: Rotation { id: needleRotation - origin.x: 7; origin.y: 65 - angle: -130 - SpringFollow on angle { - spring: 1.4 - damping: .15 - to: Math.min(Math.max(-130, root.value*2.6 - 130), 133) + origin.x: 5; origin.y: 65 + angle: Math.min(Math.max(-130, root.value*2.6 - 130), 133) + Behavior on angle { + SpringAnimation { + spring: 1.4 + damping: .15 + } } } } diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index add27f3..6559bd5 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -142,6 +142,16 @@ bool QDeclarativeAbstractAnimation::isRunning() const return d->running; } +// the behavior connects the animation to this slot +void QDeclarativeAbstractAnimation::behaviorControlRunningChanged(bool running) +{ + Q_D(QDeclarativeAbstractAnimation); + if (d->disableUserControl && d->running != running) { + d->running = running; + emit runningChanged(running); + } +} + //commence is called to start an animation when it is used as a //simple animation, and not as part of a transition void QDeclarativeAbstractAnimationPrivate::commence() diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h index 3f8fbdd..2279b0e 100644 --- a/src/declarative/util/qdeclarativeanimation_p.h +++ b/src/declarative/util/qdeclarativeanimation_p.h @@ -134,6 +134,7 @@ public: private Q_SLOTS: void timelineComplete(); void componentFinalized(); + void behaviorControlRunningChanged(bool running); private: virtual void setTarget(const QDeclarativeProperty &); diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 047993e..4480e75 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -58,7 +58,8 @@ class QDeclarativeBehaviorPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QDeclarativeBehavior) public: - QDeclarativeBehaviorPrivate() : animation(0), enabled(true), finalized(false) {} + QDeclarativeBehaviorPrivate() : animation(0), enabled(true), finalized(false) + , blockRunningChanged(false) {} QDeclarativeProperty property; QVariant currentValue; @@ -66,6 +67,7 @@ public: QDeclarativeGuard animation; bool enabled; bool finalized; + bool blockRunningChanged; }; /*! @@ -132,9 +134,26 @@ void QDeclarativeBehavior::setAnimation(QDeclarativeAbstractAnimation *animation if (d->animation) { d->animation->setDefaultTarget(d->property); d->animation->setDisableUserControl(); + connect(d->animation->qtAnimation(), + SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)), + this, + SLOT(qtAnimationStateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); + connect(this, + SIGNAL(qtAnimationRunningChanged(bool)), + d->animation, + SLOT(behaviorControlRunningChanged(bool))); } } + +void QDeclarativeBehavior::qtAnimationStateChanged(QAbstractAnimation::State newState,QAbstractAnimation::State) +{ + Q_D(QDeclarativeBehavior); + if (!d->blockRunningChanged) + emit qtAnimationRunningChanged(newState == QAbstractAnimation::Running); +} + + /*! \qmlproperty bool Behavior::enabled Whether the Behavior will be triggered when the property it is tracking changes. @@ -173,8 +192,11 @@ void QDeclarativeBehavior::write(const QVariant &value) d->currentValue = d->property.read(); d->targetValue = value; - if (d->animation->qtAnimation()->duration() != -1) + if (d->animation->qtAnimation()->duration() != -1 + && d->animation->qtAnimation()->state() != QAbstractAnimation::Stopped) { + d->blockRunningChanged = true; d->animation->qtAnimation()->stop(); + } QDeclarativeStateOperation::ActionList actions; QDeclarativeAction action; @@ -186,6 +208,7 @@ void QDeclarativeBehavior::write(const QVariant &value) QList after; d->animation->transition(actions, after, QDeclarativeAbstractAnimation::Forward); d->animation->qtAnimation()->start(); + d->blockRunningChanged = false; if (!after.contains(d->property)) QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); } diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h index 6c10eec..a3132d9 100644 --- a/src/declarative/util/qdeclarativebehavior_p.h +++ b/src/declarative/util/qdeclarativebehavior_p.h @@ -47,6 +47,7 @@ #include #include #include +#include QT_BEGIN_HEADER @@ -82,9 +83,11 @@ public: Q_SIGNALS: void enabledChanged(); + void qtAnimationRunningChanged(bool running); private Q_SLOTS: void componentFinalized(); + void qtAnimationStateChanged(QAbstractAnimation::State,QAbstractAnimation::State); }; QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativespringanimation.cpp b/src/declarative/util/qdeclarativespringanimation.cpp new file mode 100644 index 0000000..314b82b --- /dev/null +++ b/src/declarative/util/qdeclarativespringanimation.cpp @@ -0,0 +1,435 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "private/qdeclarativespringanimation_p.h" + +#include "private/qdeclarativeanimation_p_p.h" +#include + +#include + +#include + +#include +#include + +QT_BEGIN_NAMESPACE + + + +class QDeclarativeSpringAnimationPrivate : public QDeclarativeAbstractAnimationPrivate +{ + Q_DECLARE_PUBLIC(QDeclarativeSpringAnimation) +public: + QDeclarativeSpringAnimationPrivate() + : currentValue(0), to(0), from(0), maxVelocity(0), lastTime(0) + , mass(1.0), spring(0.), damping(0.), velocity(0), epsilon(0.01) + , modulus(0.0), useMass(false), haveModulus(false), enabled(true) + , fromDefined(false), toDefined(false) + , mode(Track), clock(this) {} + + qreal currentValue; + qreal to; + qreal from; + qreal maxVelocity; + qreal velocityms; + int lastTime; + qreal mass; + qreal spring; + qreal damping; + qreal velocity; + qreal epsilon; + qreal modulus; + + bool useMass : 1; + bool haveModulus : 1; + bool enabled : 1; + bool fromDefined : 1; + bool toDefined : 1; + + enum Mode { + Track, + Velocity, + Spring + }; + Mode mode; + + void tick(int); + void updateMode(); + + QTickAnimationProxy clock; +}; + +void QDeclarativeSpringAnimationPrivate::tick(int time) +{ + if (mode == Track) { + clock.stop(); + return; + } + + int elapsed = time - lastTime; + if (!elapsed) + return; + qreal srcVal = to; + + bool stop = false; + + if (haveModulus) { + currentValue = fmod(currentValue, modulus); + srcVal = fmod(srcVal, modulus); + } + if (mode == Spring) { + if (elapsed < 16) // capped at 62fps. + return; + // Real men solve the spring DEs using RK4. + // We'll do something much simpler which gives a result that looks fine. + int count = elapsed / 16; + for (int i = 0; i < count; ++i) { + qreal diff = srcVal - currentValue; + if (haveModulus && qAbs(diff) > modulus / 2) { + if (diff < 0) + diff += modulus; + else + diff -= modulus; + } + if (useMass) + velocity = velocity + (spring * diff - damping * velocity) / mass; + else + velocity = velocity + spring * diff - damping * velocity; + if (maxVelocity > 0.) { + // limit velocity + if (velocity > maxVelocity) + velocity = maxVelocity; + else if (velocity < -maxVelocity) + velocity = -maxVelocity; + } + currentValue += velocity * 16.0 / 1000.0; + if (haveModulus) { + currentValue = fmod(currentValue, modulus); + if (currentValue < 0.0) + currentValue += modulus; + } + } + if (qAbs(velocity) < epsilon && qAbs(srcVal - currentValue) < epsilon) { + velocity = 0.0; + currentValue = srcVal; + stop = true; + } + lastTime = time - (elapsed - count * 16); + } else { + qreal moveBy = elapsed * velocityms; + qreal diff = srcVal - currentValue; + if (haveModulus && qAbs(diff) > modulus / 2) { + if (diff < 0) + diff += modulus; + else + diff -= modulus; + } + if (diff > 0) { + currentValue += moveBy; + if (haveModulus) + currentValue = fmod(currentValue, modulus); + if (currentValue > to) { + currentValue = to; + stop = true; + } + } else { + currentValue -= moveBy; + if (haveModulus && currentValue < 0.0) + currentValue = fmod(currentValue, modulus) + modulus; + if (currentValue < to) { + currentValue = to; + stop = true; + } + } + lastTime = time; + } + + QDeclarativePropertyPrivate::write(defaultProperty, currentValue, + QDeclarativePropertyPrivate::BypassInterceptor | + QDeclarativePropertyPrivate::DontRemoveBinding); + + if (stop) + clock.stop(); +} + +void QDeclarativeSpringAnimationPrivate::updateMode() +{ + if (spring == 0. && maxVelocity == 0.) + mode = Track; + else if (spring > 0.) + mode = Spring; + else + mode = Velocity; +} + +/*! + \qmlclass SpringAnimation QDeclarativeSpringAnimation + \since 4.7 +*/ + +QDeclarativeSpringAnimation::QDeclarativeSpringAnimation(QObject *parent) +: QDeclarativeAbstractAnimation(*(new QDeclarativeSpringAnimationPrivate),parent) +{ +} + +QDeclarativeSpringAnimation::~QDeclarativeSpringAnimation() +{ +} + +void QDeclarativeSpringAnimation::setTarget(const QDeclarativeProperty &property) +{ + Q_D(QDeclarativeSpringAnimation); + d->defaultProperty = property; + d->currentValue = property.read().toReal(); + if (!d->avoidPropertyValueSourceStart) { + setRunning(true); + } +} + +qreal QDeclarativeSpringAnimation::to() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->toDefined ? d->to : 0; +} + +/*! + \qmlproperty real SpringFollow::to +*/ + +void QDeclarativeSpringAnimation::setTo(qreal value) +{ + Q_D(QDeclarativeSpringAnimation); + if (d->to == value) + return; + + d->to = value; + d->toDefined = true; + d->lastTime = 0; + emit toChanged(value); +} + +qreal QDeclarativeSpringAnimation::from() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->fromDefined ? d->from : 0; +} + +/*! + \qmlproperty real SpringFollow::from +*/ + +void QDeclarativeSpringAnimation::setFrom(qreal value) +{ + Q_D(QDeclarativeSpringAnimation); + if (d->from == value) + return; + + d->currentValue = d->from = value; + d->fromDefined = true; + d->lastTime = 0; + emit fromChanged(value); +} + + +/*! + \qmlproperty real SpringAnimation::velocity + This property holds the maximum velocity allowed when tracking the source. +*/ + +qreal QDeclarativeSpringAnimation::velocity() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->maxVelocity; +} + +void QDeclarativeSpringAnimation::setVelocity(qreal velocity) +{ + Q_D(QDeclarativeSpringAnimation); + d->maxVelocity = velocity; + d->velocityms = velocity / 1000.0; + d->updateMode(); +} + +/*! + \qmlproperty real SpringAnimation::spring + This property holds the spring constant + + The spring constant describes how strongly the target is pulled towards the + source. Setting spring to 0 turns off spring tracking. Useful values 0 - 5.0 + + When a spring constant is set and the velocity property is greater than 0, + velocity limits the maximum speed. +*/ +qreal QDeclarativeSpringAnimation::spring() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->spring; +} + +void QDeclarativeSpringAnimation::setSpring(qreal spring) +{ + Q_D(QDeclarativeSpringAnimation); + d->spring = spring; + d->updateMode(); +} + +/*! + \qmlproperty real SpringAnimation::damping + This property holds the spring damping constant + + The damping constant describes how quickly a sprung follower comes to rest. + Useful range is 0 - 1.0 +*/ +qreal QDeclarativeSpringAnimation::damping() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->damping; +} + +void QDeclarativeSpringAnimation::setDamping(qreal damping) +{ + Q_D(QDeclarativeSpringAnimation); + if (damping > 1.) + damping = 1.; + + d->damping = damping; +} + + +/*! + \qmlproperty real SpringAnimation::epsilon + This property holds the spring epsilon + + The epsilon is the rate and amount of change in the value which is close enough + to 0 to be considered equal to zero. This will depend on the usage of the value. + For pixel positions, 0.25 would suffice. For scale, 0.005 will suffice. + + The default is 0.01. Tuning this value can provide small performance improvements. +*/ +qreal QDeclarativeSpringAnimation::epsilon() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->epsilon; +} + +void QDeclarativeSpringAnimation::setEpsilon(qreal epsilon) +{ + Q_D(QDeclarativeSpringAnimation); + d->epsilon = epsilon; +} + +/*! + \qmlproperty real SpringAnimation::modulus + This property holds the modulus value. + + Setting a \a modulus forces the target value to "wrap around" at the modulus. + For example, setting the modulus to 360 will cause a value of 370 to wrap around to 10. +*/ +qreal QDeclarativeSpringAnimation::modulus() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->modulus; +} + +void QDeclarativeSpringAnimation::setModulus(qreal modulus) +{ + Q_D(QDeclarativeSpringAnimation); + if (d->modulus != modulus) { + d->haveModulus = modulus != 0.0; + d->modulus = modulus; + emit modulusChanged(); + } +} + +/*! + \qmlproperty real SpringAnimation::mass + This property holds the "mass" of the property being moved. + + mass is 1.0 by default. Setting a different mass changes the dynamics of + a \l spring follow. +*/ +qreal QDeclarativeSpringAnimation::mass() const +{ + Q_D(const QDeclarativeSpringAnimation); + return d->mass; +} + +void QDeclarativeSpringAnimation::setMass(qreal mass) +{ + Q_D(QDeclarativeSpringAnimation); + if (d->mass != mass && mass > 0.0) { + d->useMass = mass != 1.0; + d->mass = mass; + emit massChanged(); + } +} + +void QDeclarativeSpringAnimation::transition(QDeclarativeStateActions &actions, + QDeclarativeProperties &modified, + TransitionDirection direction) +{ + Q_D(QDeclarativeSpringAnimation); + Q_UNUSED(direction); + + if (d->clock.state() != QAbstractAnimation::Running) + d->lastTime = 0; + + if (!actions.isEmpty()) { + for (int i = 0; i < actions.size(); ++i) { + if (!d->toDefined) + d->to = actions.at(i).toValue.toReal(); + if (!d->fromDefined) + d->currentValue = actions.at(i).fromValue.toReal(); + if (d->mode != QDeclarativeSpringAnimationPrivate::Track) + modified << d->defaultProperty; + } + } +} + + +QAbstractAnimation *QDeclarativeSpringAnimation::qtAnimation() +{ + Q_D(QDeclarativeSpringAnimation); + return &d->clock; +} + +QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativespringanimation_p.h b/src/declarative/util/qdeclarativespringanimation_p.h new file mode 100644 index 0000000..6f574ef --- /dev/null +++ b/src/declarative/util/qdeclarativespringanimation_p.h @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDECLARATIVESPRINGANIMATION_H +#define QDECLARATIVESPRINGANIMATION_H + +#include +#include "private/qdeclarativeanimation_p.h" + +#include + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Declarative) + +class QDeclarativeSpringAnimationPrivate; +class Q_AUTOTEST_EXPORT QDeclarativeSpringAnimation : public QDeclarativeAbstractAnimation +{ + Q_OBJECT + Q_DECLARE_PRIVATE(QDeclarativeSpringAnimation) + Q_INTERFACES(QDeclarativePropertyValueSource) + + Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) + Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged) + Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity) + Q_PROPERTY(qreal spring READ spring WRITE setSpring) + Q_PROPERTY(qreal damping READ damping WRITE setDamping) + Q_PROPERTY(qreal epsilon READ epsilon WRITE setEpsilon) + Q_PROPERTY(qreal modulus READ modulus WRITE setModulus NOTIFY modulusChanged) + Q_PROPERTY(qreal mass READ mass WRITE setMass NOTIFY massChanged) + +public: + QDeclarativeSpringAnimation(QObject *parent=0); + ~QDeclarativeSpringAnimation(); + + virtual void setTarget(const QDeclarativeProperty &); + + qreal to() const; + void setTo(qreal value); + + qreal from() const; + void setFrom(qreal value); + + qreal velocity() const; + void setVelocity(qreal velocity); + + qreal spring() const; + void setSpring(qreal spring); + + qreal damping() const; + void setDamping(qreal damping); + + qreal epsilon() const; + void setEpsilon(qreal epsilon); + + qreal mass() const; + void setMass(qreal modulus); + + qreal modulus() const; + void setModulus(qreal modulus); + + bool enabled() const; + void setEnabled(bool enabled); + + virtual void transition(QDeclarativeStateActions &actions, + QDeclarativeProperties &modified, + TransitionDirection direction); + +protected: + virtual QAbstractAnimation *qtAnimation(); + +Q_SIGNALS: + void toChanged(qreal); + void fromChanged(qreal); + void modulusChanged(); + void massChanged(); + void syncChanged(); +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QDeclarativeSpringAnimation) + +QT_END_HEADER + +#endif // QDECLARATIVESPRINGANIMATION_H diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 3cf07a7..74fdac6 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -57,6 +57,7 @@ #include "private/qdeclarativepropertychanges_p.h" #include "qdeclarativepropertymap.h" #include "private/qdeclarativespringfollow_p.h" +#include "private/qdeclarativespringanimation_p.h" #include "private/qdeclarativestategroup_p.h" #include "private/qdeclarativestateoperations_p.h" #include "private/qdeclarativestate_p.h" @@ -98,6 +99,7 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType("Qt",4,7,"ScriptAction"); qmlRegisterType("Qt",4,7,"SequentialAnimation"); qmlRegisterType("Qt",4,7,"SpringFollow"); + qmlRegisterType("Qt",4,7,"SpringAnimation"); qmlRegisterType("Qt",4,7,"StateChangeScript"); qmlRegisterType("Qt",4,7,"StateGroup"); qmlRegisterType("Qt",4,7,"State"); diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri index 04cfc68..0cbcbd7 100644 --- a/src/declarative/util/util.pri +++ b/src/declarative/util/util.pri @@ -8,6 +8,7 @@ SOURCES += \ $$PWD/qdeclarativeanimation.cpp \ $$PWD/qdeclarativesystempalette.cpp \ $$PWD/qdeclarativespringfollow.cpp \ + $$PWD/qdeclarativespringanimation.cpp \ $$PWD/qdeclarativesmoothedanimation.cpp \ $$PWD/qdeclarativesmoothedfollow.cpp \ $$PWD/qdeclarativestate.cpp\ @@ -39,6 +40,7 @@ HEADERS += \ $$PWD/qdeclarativeanimation_p_p.h \ $$PWD/qdeclarativesystempalette_p.h \ $$PWD/qdeclarativespringfollow_p.h \ + $$PWD/qdeclarativespringanimation_p.h \ $$PWD/qdeclarativesmoothedanimation_p.h \ $$PWD/qdeclarativesmoothedfollow_p.h \ $$PWD/qdeclarativesmoothedanimation_p_p.h \ -- cgit v0.12 From 4ec4ba7bde9ac321640c3e0c7b186f0b044423b7 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 2 Jul 2010 14:59:47 +0200 Subject: QML: Let the debugger now the name of embedded functions within a QML function if you have stuff like Rectangle { function foo() {... } } We let QtScript, and hence the debugger know the function name. Reviewed-by: Roberto Raggi --- src/declarative/qml/qdeclarativecompiler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index e3ce70e..23307c9 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -2449,7 +2449,7 @@ bool QDeclarativeCompiler::buildDynamicMeta(QDeclarativeParser::Object *obj, Dyn for (int ii = 0; ii < obj->dynamicSlots.count(); ++ii) { Object::DynamicSlot &s = obj->dynamicSlots[ii]; QByteArray sig(s.name + '('); - QString funcScript(QLatin1String("(function(")); + QString funcScript(QLatin1String("(function ") + s.name + QLatin1Char('(')); for (int jj = 0; jj < s.parameterNames.count(); ++jj) { if (jj) { -- cgit v0.12 From 584309d3d42f3118efade8f499a3f223665f3d86 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 8 Jun 2010 11:30:05 +0100 Subject: Prevent crash when video is played without a VideoWidget The Phonon API allows video to be played via a Phonon::MediaObject, even if no Phonon::VideoWidget has been connected to it. This patch prevents the Phonon MMF backend crashing in this scenario due to dereferencing a null pointer. Reviewed-by: Thierry Bastian --- src/3rdparty/phonon/mmf/abstractvideoplayer.cpp | 10 ++++++++-- src/3rdparty/phonon/mmf/videoplayer_dsa.cpp | 7 ++++++- src/3rdparty/phonon/mmf/videoplayer_surface.cpp | 5 ++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp index 2e0ab1c..ecfce9e 100644 --- a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp +++ b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp @@ -211,7 +211,8 @@ void MMF::AbstractVideoPlayer::aspectRatioChanged() TRACE_CONTEXT(AbstractVideoPlayer::aspectRatioChanged, EVideoInternal); TRACE_ENTRY("state %d aspectRatio %d", state()); - updateScaleFactors(m_videoOutput->videoWindowSize()); + if (m_videoOutput) + updateScaleFactors(m_videoOutput->videoWindowSize()); TRACE_EXIT_0(); } @@ -221,7 +222,8 @@ void MMF::AbstractVideoPlayer::scaleModeChanged() TRACE_CONTEXT(AbstractVideoPlayer::scaleModeChanged, EVideoInternal); TRACE_ENTRY("state %d", state()); - updateScaleFactors(m_videoOutput->videoWindowSize()); + if (m_videoOutput) + updateScaleFactors(m_videoOutput->videoWindowSize()); TRACE_EXIT_0(); } @@ -357,6 +359,8 @@ void MMF::AbstractVideoPlayer::videoOutputChanged() void MMF::AbstractVideoPlayer::initVideoOutput() { + Q_ASSERT(m_videoOutput); + bool connected = connect( m_videoOutput, SIGNAL(videoWindowChanged()), this, SLOT(videoWindowChanged()) @@ -400,6 +404,8 @@ QSize scaleToAspect(const QSize &srcRect, int aspectWidth, int aspectHeight) void MMF::AbstractVideoPlayer::updateScaleFactors(const QSize &windowSize, bool apply) { + Q_ASSERT(m_videoOutput); + if (m_videoFrameSize.isValid()) { QRect videoRect; diff --git a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp index 1925471..f0255b1 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp @@ -61,6 +61,8 @@ DsaVideoPlayer::~DsaVideoPlayer() void MMF::DsaVideoPlayer::videoWindowScreenRectChanged() { + Q_ASSERT(m_videoOutput); + QRect windowRect = static_cast(m_videoOutput)->videoWindowScreenRect(); // Clip to physical window size @@ -130,6 +132,8 @@ void MMF::DsaVideoPlayer::createPlayer() void MMF::DsaVideoPlayer::initVideoOutput() { + Q_ASSERT(m_videoOutput); + bool connected = connect( m_videoOutput, SIGNAL(videoWindowScreenRectChanged()), this, SLOT(videoWindowScreenRectChanged()) @@ -156,7 +160,8 @@ void MMF::DsaVideoPlayer::initVideoOutput() void MMF::DsaVideoPlayer::prepareCompleted() { - videoWindowScreenRectChanged(); + if (m_videoOutput) + videoWindowScreenRectChanged(); } void MMF::DsaVideoPlayer::handleVideoWindowChanged() diff --git a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp index fda7342..5d8db26 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp @@ -59,7 +59,8 @@ SurfaceVideoPlayer::~SurfaceVideoPlayer() void MMF::SurfaceVideoPlayer::videoWindowSizeChanged() { - updateScaleFactors(m_videoOutput->videoWindowSize()); + if (m_videoOutput) + updateScaleFactors(m_videoOutput->videoWindowSize()); } @@ -80,6 +81,8 @@ void MMF::SurfaceVideoPlayer::createPlayer() void MMF::SurfaceVideoPlayer::initVideoOutput() { + Q_ASSERT(m_videoOutput); + bool connected = connect( m_videoOutput, SIGNAL(videoWindowSizeChanged()), this, SLOT(videoWindowSizeChanged()) -- cgit v0.12 From 56a2b6315c44d10f2ca4c76729a53ad9dbed37f9 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 8 Jun 2010 14:56:31 +0100 Subject: Enable bufferStatus signal during video clip loading on NGA platforms CVideoPlayerUtility::RegisterForVideoLoadingNotification() was only called in the DSA, not the NGA, variant of the Phonon MMF backend. Task-number: QTBUG-11378 Reviewed-by: Thierry Bastian --- src/3rdparty/phonon/mmf/abstractvideoplayer.cpp | 2 ++ src/3rdparty/phonon/mmf/videoplayer_dsa.cpp | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp index ecfce9e..c45ed98 100644 --- a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp +++ b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp @@ -66,6 +66,8 @@ void MMF::AbstractVideoPlayer::construct() createPlayer(); + m_player->RegisterForVideoLoadingNotification(*this); + TRACE_EXIT_0(); } diff --git a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp index f0255b1..deb9774 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp @@ -126,8 +126,6 @@ void MMF::DsaVideoPlayer::createPlayer() // CVideoPlayerUtility::NewL starts DSA m_dsaActive = true; - - m_player->RegisterForVideoLoadingNotification(*this); } void MMF::DsaVideoPlayer::initVideoOutput() -- cgit v0.12 From a1c7b42e8b67e935fe30310af49524a25fa631fc Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 8 Jun 2010 14:37:21 +0100 Subject: Close media clip before creating new player object Failure to Close() an existing MMF player utility object before creating a new one - which happens in the MMF backend's implementation of Phonon::MediaObject::setCurrentSource() - causes intialization of the newly-created utility to fail later on. Task-number: QTBUG-11377 Reviewed-by: Thierry Bastian --- src/3rdparty/phonon/mmf/abstractmediaplayer.h | 1 - src/3rdparty/phonon/mmf/abstractplayer.h | 1 + src/3rdparty/phonon/mmf/dummyplayer.cpp | 4 ++++ src/3rdparty/phonon/mmf/dummyplayer.h | 1 + src/3rdparty/phonon/mmf/mediaobject.cpp | 3 +++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/3rdparty/phonon/mmf/abstractmediaplayer.h b/src/3rdparty/phonon/mmf/abstractmediaplayer.h index 23a8233..7d28caf 100644 --- a/src/3rdparty/phonon/mmf/abstractmediaplayer.h +++ b/src/3rdparty/phonon/mmf/abstractmediaplayer.h @@ -71,7 +71,6 @@ protected: virtual int openFile(RFile& file) = 0; virtual int openUrl(const QString& url) = 0; virtual int bufferStatus() const = 0; - virtual void close() = 0; void updateMetaData(); virtual int numberOfMetaDataEntries() const = 0; diff --git a/src/3rdparty/phonon/mmf/abstractplayer.h b/src/3rdparty/phonon/mmf/abstractplayer.h index ab892f5..30d5243 100644 --- a/src/3rdparty/phonon/mmf/abstractplayer.h +++ b/src/3rdparty/phonon/mmf/abstractplayer.h @@ -55,6 +55,7 @@ public: AbstractPlayer(const AbstractPlayer *player); virtual void open(const Phonon::MediaSource&, RFile&) = 0; + virtual void close() = 0; // MediaObjectInterface (implemented) qint32 tickInterval() const; diff --git a/src/3rdparty/phonon/mmf/dummyplayer.cpp b/src/3rdparty/phonon/mmf/dummyplayer.cpp index 6970088..d39ef76 100644 --- a/src/3rdparty/phonon/mmf/dummyplayer.cpp +++ b/src/3rdparty/phonon/mmf/dummyplayer.cpp @@ -97,6 +97,10 @@ void MMF::DummyPlayer::open(const Phonon::MediaSource &, RFile &) } +void MMF::DummyPlayer::close() +{ + +} //----------------------------------------------------------------------------- // AbstractPlayer diff --git a/src/3rdparty/phonon/mmf/dummyplayer.h b/src/3rdparty/phonon/mmf/dummyplayer.h index 6841b5d..9d45696 100644 --- a/src/3rdparty/phonon/mmf/dummyplayer.h +++ b/src/3rdparty/phonon/mmf/dummyplayer.h @@ -58,6 +58,7 @@ public: // AbstractPlayer virtual void open(const Phonon::MediaSource&, RFile&); + virtual void close(); virtual void doSetTickInterval(qint32 interval); }; } diff --git a/src/3rdparty/phonon/mmf/mediaobject.cpp b/src/3rdparty/phonon/mmf/mediaobject.cpp index e1b921b..d264377 100644 --- a/src/3rdparty/phonon/mmf/mediaobject.cpp +++ b/src/3rdparty/phonon/mmf/mediaobject.cpp @@ -281,6 +281,9 @@ void MMF::MediaObject::createPlayer(const MediaSource &source) break; } + if (oldPlayer) + oldPlayer->close(); + AbstractPlayer* newPlayer = 0; // Construct newPlayer using oldPlayer (if not 0) in order to copy -- cgit v0.12 From 12f56ae9006b75e37365022065b786830b4a3038 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Tue, 8 Jun 2010 16:06:37 +0100 Subject: Fixed crash which occurs when switching between video clips When Phonon::MediaObject::setCurrentSource() is called when the MediaObject is connected to a Phonon::VideoWidget, the MMF::AbstractVideoOutput pointer is propagated inside the backend from the first MMF::AbstractVideoPlayer to the second. If the VideoWidget is subsquently re-sized, the code path enters the ScaleFactors branch of the MMF::SurfaceVideoPlayer::handleParametersChanged function. At this point, m_displayWindow is still set to the inital null value, and the assertion therefore fails. This change ensures that m_displayWindow is updated before attempting to apply the scale factor change. Task-number: QTBUG-11377 Reviewed-by: Thierry Bastian --- src/3rdparty/phonon/mmf/videoplayer_surface.cpp | 42 +++++++++++++++++-------- src/3rdparty/phonon/mmf/videoplayer_surface.h | 3 ++ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp index 5d8db26..343370c 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp @@ -118,23 +118,14 @@ void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters if (player) { int err = KErrNone; if (parameters & WindowHandle) { - if (m_displayWindow) - player->RemoveDisplayWindow(*m_displayWindow); - - RWindow *window = static_cast(m_window); - if (window) { - window->SetBackgroundColor(TRgb(0, 0, 0, 255)); - TRAP(err, player->AddDisplayWindowL(m_wsSession, m_screenDevice, *window, rect, rect)); - if (KErrNone != err) { - setError(tr("Video display error"), err); - window = 0; - } - } - m_displayWindow = window; + removeDisplayWindow(); + addDisplayWindow(rect); } if (KErrNone == err) { if (parameters & ScaleFactors) { + if (!m_displayWindow) + addDisplayWindow(rect); Q_ASSERT(m_displayWindow); TRAP(err, player->SetVideoExtentL(*m_displayWindow, rect)); if (KErrNone == err) @@ -148,5 +139,30 @@ void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters } } +void MMF::SurfaceVideoPlayer::addDisplayWindow(const TRect &rect) +{ + Q_ASSERT(!m_displayWindow); + RWindow *window = static_cast(m_window); + if (window) { + window->SetBackgroundColor(TRgb(0, 0, 0, 255)); + CVideoPlayerUtility2 *player = static_cast(m_player.data()); + Q_ASSERT(player); + TRAPD(err, player->AddDisplayWindowL(m_wsSession, m_screenDevice, *window, rect, rect)); + if (KErrNone == err) + m_displayWindow = window; + else + setError(tr("Video display error"), err); + } +} + +void MMF::SurfaceVideoPlayer::removeDisplayWindow() +{ + CVideoPlayerUtility2 *player = static_cast(m_player.data()); + if (player && m_displayWindow) { + player->RemoveDisplayWindow(*m_displayWindow); + m_displayWindow = 0; + } +} + QT_END_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/videoplayer_surface.h b/src/3rdparty/phonon/mmf/videoplayer_surface.h index c05da9c..8572fdc 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_surface.h +++ b/src/3rdparty/phonon/mmf/videoplayer_surface.h @@ -62,6 +62,9 @@ private: void handleVideoWindowChanged(); void handleParametersChanged(VideoParameters parameters); + void addDisplayWindow(const TRect &rect); + void removeDisplayWindow(); + private: // Window handle which has been passed to the MMF via // CVideoPlayerUtility2::SetDisplayWindowL -- cgit v0.12 From 1c1094a432fc3b88c86c8af37a80a560571fb2fe Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Thu, 17 Jun 2010 09:42:52 +0100 Subject: MMF Phonon backend: call winId() from VideoWidget constructor This is to be consistent with the backends for other platforms, which also call QWidget::winId() on the VideoWidget (or one of its children) during construction. Reviewed-by: Thierry Bastian --- src/3rdparty/phonon/mmf/abstractvideooutput.cpp | 3 ++- src/3rdparty/phonon/mmf/abstractvideoplayer.cpp | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp index a8aabfd..2d221ed 100644 --- a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp +++ b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp @@ -60,7 +60,8 @@ MMF::AbstractVideoOutput::AbstractVideoOutput(QWidget *parent) , m_aspectRatio(DefaultAspectRatio) , m_scaleMode(DefaultScaleMode) { - + // Ensure that this widget has a native window handle + winId(); } MMF::AbstractVideoOutput::~AbstractVideoOutput() diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp index c45ed98..9ea4d18 100644 --- a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp +++ b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp @@ -384,9 +384,6 @@ void MMF::AbstractVideoPlayer::initVideoOutput() // Suppress warnings in release builds Q_UNUSED(connected); - // Do these after all connections are complete, to ensure - // that any signals generated get to their destinations. - m_videoOutput->winId(); m_videoOutput->setVideoSize(m_videoFrameSize); } -- cgit v0.12 From 43f67922b2d58b31d9baf48e3d9f177388f90faf Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Wed, 7 Jul 2010 18:12:46 +0100 Subject: Added trace statements to Phonon MMF backend Reviewed-by: trustme --- src/3rdparty/phonon/mmf/videoplayer_surface.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp index 343370c..f380e69 100644 --- a/src/3rdparty/phonon/mmf/videoplayer_surface.cpp +++ b/src/3rdparty/phonon/mmf/videoplayer_surface.cpp @@ -107,6 +107,9 @@ void MMF::SurfaceVideoPlayer::handleVideoWindowChanged() void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters) { + TRACE_CONTEXT(SurfaceVideoPlayer::handleParametersChanged, EVideoApi); + TRACE_ENTRY("parameters 0x%x", parameters.operator int()); + TRect rect; if (m_videoOutput) { m_videoOutput->dump(); @@ -137,12 +140,20 @@ void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters } } } + + TRACE_EXIT_0(); } void MMF::SurfaceVideoPlayer::addDisplayWindow(const TRect &rect) { + TRACE_CONTEXT(SurfaceVideoPlayer::addDisplayWindow, EVideoApi); + TRACE_ENTRY("rect %d %d - %d %d", rect.iTl.iX, rect.iTl.iY, rect.iBr.iX, rect.iBr.iY); + Q_ASSERT(!m_displayWindow); RWindow *window = static_cast(m_window); + + TRACE("window 0x%08x", window); + if (window) { window->SetBackgroundColor(TRgb(0, 0, 0, 255)); CVideoPlayerUtility2 *player = static_cast(m_player.data()); @@ -152,11 +163,17 @@ void MMF::SurfaceVideoPlayer::addDisplayWindow(const TRect &rect) m_displayWindow = window; else setError(tr("Video display error"), err); + TRACE("err %d", err); } + + TRACE_EXIT_0(); } void MMF::SurfaceVideoPlayer::removeDisplayWindow() { + TRACE_CONTEXT(SurfaceVideoPlayer::removeDisplayWindow, EVideoApi); + TRACE("player 0x%08x window 0x%08x", m_player.data(), m_displayWindow); + CVideoPlayerUtility2 *player = static_cast(m_player.data()); if (player && m_displayWindow) { player->RemoveDisplayWindow(*m_displayWindow); -- cgit v0.12 From aa7de4f45660b5e1c470bf876606f846e120dd50 Mon Sep 17 00:00:00 2001 From: Gareth Stockwell Date: Wed, 7 Jul 2010 18:43:04 +0100 Subject: Use lower case for including system header files All platform includes are now lower case, i.e. '#include ' rather than '#include '. Note that Qt includes are still camel case, e.g. '#include ' Task-number: QTBUG-6528 Reviewed-by: trustme --- src/3rdparty/phonon/mmf/abstractaudioeffect.h | 2 +- src/3rdparty/phonon/mmf/audioequalizer.cpp | 2 +- src/3rdparty/phonon/mmf/bassboost.cpp | 2 +- src/3rdparty/phonon/mmf/environmentalreverb.cpp | 2 +- src/3rdparty/phonon/mmf/loudness.cpp | 2 +- src/3rdparty/phonon/mmf/stereowidening.cpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/3rdparty/phonon/mmf/abstractaudioeffect.h b/src/3rdparty/phonon/mmf/abstractaudioeffect.h index 70adcf6..8879636 100644 --- a/src/3rdparty/phonon/mmf/abstractaudioeffect.h +++ b/src/3rdparty/phonon/mmf/abstractaudioeffect.h @@ -21,7 +21,7 @@ along with this library. If not, see . #include -#include +#include #include diff --git a/src/3rdparty/phonon/mmf/audioequalizer.cpp b/src/3rdparty/phonon/mmf/audioequalizer.cpp index 1d2bbd4..28433f6 100644 --- a/src/3rdparty/phonon/mmf/audioequalizer.cpp +++ b/src/3rdparty/phonon/mmf/audioequalizer.cpp @@ -16,7 +16,7 @@ along with this library. If not, see . */ -#include +#include #include "audioequalizer.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/bassboost.cpp b/src/3rdparty/phonon/mmf/bassboost.cpp index 67076f6..81d9208 100644 --- a/src/3rdparty/phonon/mmf/bassboost.cpp +++ b/src/3rdparty/phonon/mmf/bassboost.cpp @@ -16,7 +16,7 @@ along with this library. If not, see . */ -#include +#include #include "bassboost.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/environmentalreverb.cpp b/src/3rdparty/phonon/mmf/environmentalreverb.cpp index d4f5223..c500385 100644 --- a/src/3rdparty/phonon/mmf/environmentalreverb.cpp +++ b/src/3rdparty/phonon/mmf/environmentalreverb.cpp @@ -16,7 +16,7 @@ along with this library. If not, see . */ -#include +#include #include "environmentalreverb.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/loudness.cpp b/src/3rdparty/phonon/mmf/loudness.cpp index ca05ab0..22d7518 100644 --- a/src/3rdparty/phonon/mmf/loudness.cpp +++ b/src/3rdparty/phonon/mmf/loudness.cpp @@ -16,7 +16,7 @@ along with this library. If not, see . */ -#include +#include #include "loudness.h" QT_BEGIN_NAMESPACE diff --git a/src/3rdparty/phonon/mmf/stereowidening.cpp b/src/3rdparty/phonon/mmf/stereowidening.cpp index f90651b..e452160 100644 --- a/src/3rdparty/phonon/mmf/stereowidening.cpp +++ b/src/3rdparty/phonon/mmf/stereowidening.cpp @@ -16,7 +16,7 @@ along with this library. If not, see . */ -#include +#include #include "stereowidening.h" QT_BEGIN_NAMESPACE -- cgit v0.12 From bd9e495a025ff8d282d54e8909771c8760ebdb3f Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Thu, 8 Jul 2010 10:41:16 +1000 Subject: Fix Symbian build --- tools/qml/qml.pri | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/qml/qml.pri b/tools/qml/qml.pri index 0d01f70..fcd0c33 100644 --- a/tools/qml/qml.pri +++ b/tools/qml/qml.pri @@ -25,6 +25,8 @@ maemo5 { $$PWD/proxysettings_maemo5.ui } symbian:!contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { SOURCES += $$PWD/deviceorientation_symbian.cpp + FORMS = $$PWD/recopts.ui \ + $$PWD/proxysettings.ui } else { SOURCES += $$PWD/deviceorientation.cpp FORMS = $$PWD/recopts.ui \ -- cgit v0.12 From adb496b69a49b2c20eca601fca95839199516962 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 8 Jul 2010 12:47:17 +1000 Subject: Micro optimization in QML date/time formatting functions. --- src/declarative/qml/qdeclarativeengine.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 8bf7450..c5ebe7a 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1260,11 +1260,12 @@ QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptE QDate date = ctxt->argument(0).toDateTime().date(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; if (argCount == 2) { - if (ctxt->argument(1).isString()) { - QString format = ctxt->argument(1).toString(); + QScriptValue formatArg = ctxt->argument(1); + if (formatArg.isString()) { + QString format = formatArg.toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); - } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); + } else if (formatArg.isNumber()) { + enumFormat = Qt::DateFormat(formatArg.toUInt32()); } else { return ctxt->throwError(QLatin1String("Qt.formatDate(): Invalid date format")); } @@ -1287,11 +1288,12 @@ QScriptValue QDeclarativeEnginePrivate::formatTime(QScriptContext*ctxt, QScriptE QTime date = ctxt->argument(0).toDateTime().time(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; if (argCount == 2) { - if (ctxt->argument(1).isString()) { - QString format = ctxt->argument(1).toString(); + QScriptValue formatArg = ctxt->argument(1); + if (formatArg.isString()) { + QString format = formatArg.toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); - } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); + } else if (formatArg.isNumber()) { + enumFormat = Qt::DateFormat(formatArg.toUInt32()); } else { return ctxt->throwError(QLatin1String("Qt.formatTime(): Invalid time format")); } @@ -1377,11 +1379,12 @@ QScriptValue QDeclarativeEnginePrivate::formatDateTime(QScriptContext*ctxt, QScr QDateTime date = ctxt->argument(0).toDateTime(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; if (argCount == 2) { - if (ctxt->argument(1).isString()) { - QString format = ctxt->argument(1).toString(); + QScriptValue formatArg = ctxt->argument(1); + if (formatArg.isString()) { + QString format = formatArg.toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); - } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); + } else if (formatArg.isNumber()) { + enumFormat = Qt::DateFormat(formatArg.toUInt32()); } else { return ctxt->throwError(QLatin1String("Qt.formatDateTime(): Invalid datetime format")); } -- cgit v0.12 From 76a1804b0fff9ffd092a551defe448d3e9d4346e Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 8 Jul 2010 13:09:07 +1000 Subject: Allow the debugger to modify method bodies QTBUG-11933 --- src/declarative/debugger/qdeclarativedebug.cpp | 36 ++++++++------ src/declarative/debugger/qdeclarativedebug_p.h | 19 ++------ src/declarative/qml/qdeclarativeenginedebug.cpp | 55 +++++++++++++++++++-- src/declarative/qml/qdeclarativeenginedebug_p.h | 1 + src/declarative/qml/qdeclarativevmemetaobject.cpp | 30 ++++++++++++ src/declarative/qml/qdeclarativevmemetaobject_p.h | 2 + .../qdeclarativedebug/tst_qdeclarativedebug.cpp | 56 ++++++++++++++++++++-- 7 files changed, 160 insertions(+), 39 deletions(-) diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativedebug.cpp index e4a991b..0c0cf2e 100644 --- a/src/declarative/debugger/qdeclarativedebug.cpp +++ b/src/declarative/debugger/qdeclarativedebug.cpp @@ -562,31 +562,37 @@ QDeclarativeDebugExpressionQuery *QDeclarativeEngineDebug::queryExpressionResult return query; } -QDeclarativeDebugExpressionQuery *QDeclarativeEngineDebug::setBindingForObject(int objectDebugId, - const QString &propertyName, - const QVariant &bindingExpression, - bool isLiteralValue, - QObject *parent) +bool QDeclarativeEngineDebug::setBindingForObject(int objectDebugId, const QString &propertyName, + const QVariant &bindingExpression, + bool isLiteralValue) { Q_D(QDeclarativeEngineDebug); - QDeclarativeDebugExpressionQuery *query = new QDeclarativeDebugExpressionQuery(parent); if (d->client->isConnected() && objectDebugId != -1) { - query->m_client = this; - query->m_expr = bindingExpression; - int queryId = d->getId(); - query->m_queryId = queryId; - d->expressionQuery.insert(queryId, query); - QByteArray message; QDataStream ds(&message, QIODevice::WriteOnly); - ds << QByteArray("SET_BINDING") << queryId << objectDebugId << propertyName << bindingExpression << isLiteralValue; + ds << QByteArray("SET_BINDING") << objectDebugId << propertyName << bindingExpression << isLiteralValue; d->client->sendMessage(message); + return true; } else { - query->m_state = QDeclarativeDebugQuery::Error; + return false; } +} - return query; +bool QDeclarativeEngineDebug::setMethodBody(int objectDebugId, const QString &methodName, + const QString &methodBody) +{ + Q_D(QDeclarativeEngineDebug); + + if (d->client->isConnected() && objectDebugId != -1) { + QByteArray message; + QDataStream ds(&message, QIODevice::WriteOnly); + ds << QByteArray("SET_METHOD_BODY") << objectDebugId << methodName << methodBody; + d->client->sendMessage(message); + return true; + } else { + return false; + } } QDeclarativeDebugWatch::QDeclarativeDebugWatch(QObject *parent) diff --git a/src/declarative/debugger/qdeclarativedebug_p.h b/src/declarative/debugger/qdeclarativedebug_p.h index 007cbd7..9c38184 100644 --- a/src/declarative/debugger/qdeclarativedebug_p.h +++ b/src/declarative/debugger/qdeclarativedebug_p.h @@ -94,11 +94,10 @@ public: QDeclarativeDebugExpressionQuery *queryExpressionResult(int objectDebugId, const QString &expr, QObject *parent = 0); - QDeclarativeDebugExpressionQuery *setBindingForObject(int objectDebugId, - const QString &propertyName, - const QVariant &bindingExpression, - bool isLiteralValue, - QObject *parent = 0); + bool setBindingForObject(int objectDebugId, const QString &propertyName, + const QVariant &bindingExpression, bool isLiteralValue); + bool setMethodBody(int objectDebugId, const QString &methodName, const QString &methodBody); + private: Q_DECLARE_PRIVATE(QDeclarativeEngineDebug) }; @@ -202,11 +201,6 @@ public: private: friend class QDeclarativeEngineDebugPrivate; - QDeclarativeDebugExpressionQuery *setBindingForObject(int objectDebugId, - const QString &propertyName, - const QVariant &bindingExpression, - bool isLiteralValue, - QObject *parent); QUrl m_url; int m_lineNumber; int m_columnNumber; @@ -224,11 +218,6 @@ public: QString name() const; private: - QDeclarativeDebugExpressionQuery *setBindingForObject(int objectDebugId, - const QString &propertyName, - const QVariant &bindingExpression, - bool isLiteralValue, - QObject *parent); friend class QDeclarativeEngineDebugPrivate; int m_debugId; QString m_name; diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index d765649..acd7ab6 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -50,6 +50,8 @@ #include "private/qdeclarativecontext_p.h" #include "private/qdeclarativewatcher_p.h" #include "private/qdeclarativevaluetype_p.h" +#include "private/qdeclarativevmemetaobject_p.h" +#include "private/qdeclarativeexpression_p.h" #include #include @@ -453,20 +455,25 @@ void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) sendMessage(reply); } else if (type == "SET_BINDING") { - int queryId; int objectId; QString propertyName; QVariant expr; bool isLiteralValue; - ds >> queryId >> objectId >> propertyName >> expr >> isLiteralValue; + ds >> objectId >> propertyName >> expr >> isLiteralValue; setBinding(objectId, propertyName, expr, isLiteralValue); + } else if (type == "SET_METHOD_BODY") { + int objectId; + QString methodName; + QString methodBody; + ds >> objectId >> methodName >> methodBody; + setMethodBody(objectId, methodName, methodBody); } } void QDeclarativeEngineDebugServer::setBinding(int objectId, - const QString &propertyName, - const QVariant &expression, - bool isLiteralValue) + const QString &propertyName, + const QVariant &expression, + bool isLiteralValue) { QObject *object = objectForId(objectId); QDeclarativeContext *context = qmlContext(object); @@ -493,7 +500,45 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId, } } } +} + +void QDeclarativeEngineDebugServer::setMethodBody(int objectId, const QString &method, const QString &body) +{ + QObject *object = objectForId(objectId); + QDeclarativeContext *context = qmlContext(object); + if (!object || !context || !context->engine()) + return; + QDeclarativeContextData *contextData = QDeclarativeContextData::get(context); + if (!contextData) + return; + + QDeclarativePropertyCache::Data dummy; + QDeclarativePropertyCache::Data *prop = + QDeclarativePropertyCache::property(context->engine(), object, method, dummy); + + if (!prop || !(prop->flags & QDeclarativePropertyCache::Data::IsVMEFunction)) + return; + + QMetaMethod metaMethod = object->metaObject()->method(prop->coreIndex); + QList paramNames = metaMethod.parameterNames(); + + QString paramStr; + for (int ii = 0; ii < paramNames.count(); ++ii) { + if (ii != 0) paramStr.append(QLatin1String(",")); + paramStr.append(QString::fromUtf8(paramNames.at(ii))); + } + + QString jsfunction = QLatin1String("(function ") + method + QLatin1String("(") + paramStr + + QLatin1String(") {"); + jsfunction += body; + jsfunction += QLatin1String("\n})"); + + QDeclarativeVMEMetaObject *vmeMetaObject = + static_cast(QObjectPrivate::get(object)->metaObject); + Q_ASSERT(vmeMetaObject); // the fact we found the property above should guarentee this + int lineNumber = vmeMetaObject->vmeMethodLineNumber(prop->coreIndex); + vmeMetaObject->setVmeMethod(prop->coreIndex, QDeclarativeExpressionPrivate::evalInObjectScope(contextData, object, jsfunction, contextData->url.toString(), lineNumber, 0)); } void QDeclarativeEngineDebugServer::propertyChanged(int id, int objectId, const QMetaProperty &property, const QVariant &value) diff --git a/src/declarative/qml/qdeclarativeenginedebug_p.h b/src/declarative/qml/qdeclarativeenginedebug_p.h index b3c23bd..ce6df0d 100644 --- a/src/declarative/qml/qdeclarativeenginedebug_p.h +++ b/src/declarative/qml/qdeclarativeenginedebug_p.h @@ -108,6 +108,7 @@ private: QDeclarativeObjectProperty propertyData(QObject *, int); QVariant valueContents(const QVariant &defaultValue) const; void setBinding(int objectId, const QString &propertyName, const QVariant &expression, bool isLiteralValue); + void setMethodBody(int objectId, const QString &method, const QString &body); static QList m_engines; QDeclarativeWatcher *m_watch; diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp index 7aea7cb..689ed92 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject.cpp +++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp @@ -751,6 +751,22 @@ void QDeclarativeVMEMetaObject::registerInterceptor(int index, int valueIndex, Q interceptors.insert(index, qMakePair(valueIndex, interceptor)); } +int QDeclarativeVMEMetaObject::vmeMethodLineNumber(int index) +{ + if (index < methodOffset) { + Q_ASSERT(parent); + return static_cast(parent)->vmeMethodLineNumber(index); + } + + int plainSignals = metaData->signalCount + metaData->propertyCount + metaData->aliasCount; + Q_ASSERT(index >= (methodOffset + plainSignals) && index < (methodOffset + plainSignals + metaData->methodCount)); + + int rawIndex = index - methodOffset - plainSignals; + + QDeclarativeVMEMetaData::MethodData *data = metaData->methodData() + rawIndex; + return data->lineNumber; +} + QScriptValue QDeclarativeVMEMetaObject::vmeMethod(int index) { if (index < methodOffset) { @@ -762,6 +778,20 @@ QScriptValue QDeclarativeVMEMetaObject::vmeMethod(int index) return method(index - methodOffset - plainSignals); } +void QDeclarativeVMEMetaObject::setVmeMethod(int index, const QScriptValue &value) +{ + if (index < methodOffset) { + Q_ASSERT(parent); + return static_cast(parent)->setVmeMethod(index, value); + } + int plainSignals = metaData->signalCount + metaData->propertyCount + metaData->aliasCount; + Q_ASSERT(index >= (methodOffset + plainSignals) && index < (methodOffset + plainSignals + metaData->methodCount)); + + if (!methods) + methods = new QScriptValue[metaData->methodCount]; + methods[index - methodOffset - plainSignals] = value; +} + QScriptValue QDeclarativeVMEMetaObject::vmeProperty(int index) { if (index < propOffset) { diff --git a/src/declarative/qml/qdeclarativevmemetaobject_p.h b/src/declarative/qml/qdeclarativevmemetaobject_p.h index 4fc3269..20ca80b 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject_p.h +++ b/src/declarative/qml/qdeclarativevmemetaobject_p.h @@ -121,6 +121,8 @@ public: void registerInterceptor(int index, int valueIndex, QDeclarativePropertyValueInterceptor *interceptor); QScriptValue vmeMethod(int index); + int vmeMethodLineNumber(int index); + void setVmeMethod(int index, const QScriptValue &); QScriptValue vmeProperty(int index); void setVMEProperty(int index, const QScriptValue &); diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index dcd1a85..4a945f3 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -71,7 +71,7 @@ class tst_QDeclarativeDebug : public QObject Q_OBJECT private: - QDeclarativeDebugObjectReference findRootObject(); + QDeclarativeDebugObjectReference findRootObject(int context = 0); QDeclarativeDebugPropertyReference findProperty(const QList &props, const QString &name) const; void waitForQuery(QDeclarativeDebugQuery *query); @@ -111,9 +111,11 @@ private slots: void tst_QDeclarativeDebugObjectReference(); void tst_QDeclarativeDebugContextReference(); void tst_QDeclarativeDebugPropertyReference(); + + void setMethodBody(); }; -QDeclarativeDebugObjectReference tst_QDeclarativeDebug::findRootObject() +QDeclarativeDebugObjectReference tst_QDeclarativeDebug::findRootObject(int context) { QDeclarativeDebugEnginesQuery *q_engines = m_dbg->queryAvailableEngines(this); waitForQuery(q_engines); @@ -125,7 +127,7 @@ QDeclarativeDebugObjectReference tst_QDeclarativeDebug::findRootObject() if (q_context->rootContext().objects().count() == 0) return QDeclarativeDebugObjectReference(); - QDeclarativeDebugObjectQuery *q_obj = m_dbg->queryObject(q_context->rootContext().objects()[0], this); + QDeclarativeDebugObjectQuery *q_obj = m_dbg->queryObject(q_context->rootContext().objects()[context], this); waitForQuery(q_obj); QDeclarativeDebugObjectReference result = q_obj->object(); @@ -290,10 +292,19 @@ void tst_QDeclarativeDebug::initTestCase() "onEntered: { console.log('hello') }" "}" "}"; + // add second component to test multiple root contexts qml << "import Qt 4.7\n" "Item {}"; + // and a third to test methods + qml << "import Qt 4.7\n" + "Item {" + "function myMethodNoArgs() { return 3; }\n" + "function myMethod(a) { return a + 9; }\n" + "function myMethodIndirect() { myMethod(3); }\n" + "}"; + for (int i=0; isetMethodBody(obj.debugId(), "myMethodNoArgs", "return 7")); + QTest::qWait(100); + + QVERIFY(QMetaObject::invokeMethod(root, "myMethodNoArgs", Qt::DirectConnection, + Q_RETURN_ARG(QVariant, rv))); + QVERIFY(rv == QVariant(qreal(7))); + } + + // With args + { + QVariant rv; + QVERIFY(QMetaObject::invokeMethod(root, "myMethod", Qt::DirectConnection, + Q_RETURN_ARG(QVariant, rv), Q_ARG(QVariant, QVariant(19)))); + QVERIFY(rv == QVariant(qreal(28))); + + QVERIFY(m_dbg->setMethodBody(obj.debugId(), "myMethod", "return a + 7")); + QTest::qWait(100); + + QVERIFY(QMetaObject::invokeMethod(root, "myMethod", Qt::DirectConnection, + Q_RETURN_ARG(QVariant, rv), Q_ARG(QVariant, QVariant(19)))); + QVERIFY(rv == QVariant(qreal(26))); + } +} + void tst_QDeclarativeDebug::watch_property() { QDeclarativeDebugObjectReference obj = findRootObject(); @@ -581,7 +629,7 @@ void tst_QDeclarativeDebug::queryRootContexts() QCOMPARE(context.debugId(), QDeclarativeDebugService::idForObject(actualContext)); QCOMPARE(context.name(), actualContext->objectName()); - QCOMPARE(context.objects().count(), 2); // 2 qml component objects created for context in main() + QCOMPARE(context.objects().count(), 3); // 3 qml component objects created for context in main() // root context query sends only root object data - it doesn't fill in // the children or property info -- cgit v0.12 From a258456bcb35ec4211751a702ea94a1881d82a07 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 8 Jul 2010 13:19:22 +1000 Subject: Extend QDeclarativeImageProvider to support QPixmap loading and synchronous loading of QImages. (QPixmaps can only be created in the main thread so they will always be loaded synchronously). This changes request() to requestImage() and adds requestPixmap() for pixmap support. Task-number: QTBUG-11989 --- doc/src/declarative/pics/imageprovider.png | Bin 0 -> 420 bytes doc/src/examples/qml-examples.qdoc | 6 +- doc/src/images/qml-imageprovider-example.png | Bin 0 -> 2259 bytes .../imageprovider/imageprovider-example.qml | 28 +-- .../cppextensions/imageprovider/imageprovider.cpp | 73 ++++---- src/declarative/qml/qdeclarativeengine.cpp | 39 ++-- src/declarative/qml/qdeclarativeengine_p.h | 3 + src/declarative/qml/qdeclarativeimageprovider.cpp | 164 +++++++++++++++-- src/declarative/qml/qdeclarativeimageprovider.h | 18 +- src/declarative/util/qdeclarativepixmapcache.cpp | 85 +++++++-- .../qdeclarativeimageprovider/data/exists.png | Bin 2738 -> 0 bytes .../qdeclarativeimageprovider/data/exists1.png | Bin 2738 -> 0 bytes .../qdeclarativeimageprovider/data/exists2.png | Bin 2738 -> 0 bytes .../tst_qdeclarativeimageprovider.cpp | 204 +++++++++++++++++---- 14 files changed, 473 insertions(+), 147 deletions(-) create mode 100644 doc/src/declarative/pics/imageprovider.png create mode 100644 doc/src/images/qml-imageprovider-example.png delete mode 100644 tests/auto/declarative/qdeclarativeimageprovider/data/exists.png delete mode 100644 tests/auto/declarative/qdeclarativeimageprovider/data/exists1.png delete mode 100644 tests/auto/declarative/qdeclarativeimageprovider/data/exists2.png diff --git a/doc/src/declarative/pics/imageprovider.png b/doc/src/declarative/pics/imageprovider.png new file mode 100644 index 0000000..422103c Binary files /dev/null and b/doc/src/declarative/pics/imageprovider.png differ diff --git a/doc/src/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc index dec5441..4ad11d9 100644 --- a/doc/src/examples/qml-examples.qdoc +++ b/doc/src/examples/qml-examples.qdoc @@ -214,8 +214,10 @@ \title C++ Extensions: Image Provider \example declarative/cppextensions/imageprovider - This examples shows how to use QDeclarativeImageProvider to serve images asynchronously - into a QML item. + This examples shows how to use QDeclarativeImageProvider to serve images + to QML image elements. + + \image qml-imageprovider-example.png */ /*! diff --git a/doc/src/images/qml-imageprovider-example.png b/doc/src/images/qml-imageprovider-example.png new file mode 100644 index 0000000..e82548a Binary files /dev/null and b/doc/src/images/qml-imageprovider-example.png differ diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml b/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml index 5890c91..1ef97fa 100644 --- a/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml +++ b/examples/declarative/cppextensions/imageprovider/imageprovider-example.qml @@ -37,29 +37,13 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ - import Qt 4.7 -import "ImageProviderCore" -//![0] -ListView { - width: 100; height: 100 - anchors.fill: parent - - model: myModel +import "ImageProviderCore" // import the plugin that registers the color image provider - delegate: Component { - Item { - width: 100 - height: 50 - Text { - text: "Loading..." - anchors.centerIn: parent - } - Image { - source: modelData - sourceSize: "50x25" - } - } - } +//![0] +Column { + Image { source: "image://colors/yellow" } + Image { source: "image://colors/red" } } //![0] + diff --git a/examples/declarative/cppextensions/imageprovider/imageprovider.cpp b/examples/declarative/cppextensions/imageprovider/imageprovider.cpp index 0281b4a..995192a 100644 --- a/examples/declarative/cppextensions/imageprovider/imageprovider.cpp +++ b/examples/declarative/cppextensions/imageprovider/imageprovider.cpp @@ -42,7 +42,6 @@ #include #include -#include #include #include #include @@ -50,62 +49,57 @@ #include #include -/* - This example illustrates using a QDeclarativeImageProvider to serve - images asynchronously. -*/ - //![0] class ColorImageProvider : public QDeclarativeImageProvider { public: - // This is run in a low priority thread. - QImage request(const QString &id, QSize *size, const QSize &req_size) + ColorImageProvider() + : QDeclarativeImageProvider(Pixmap) { - if (size) *size = QSize(100,50); - QImage image( - req_size.width() > 0 ? req_size.width() : 100, - req_size.height() > 0 ? req_size.height() : 50, - QImage::Format_RGB32); - image.fill(QColor(id).rgba()); - QPainter p(&image); - QFont f = p.font(); - f.setPixelSize(30); - p.setFont(f); - p.setPen(Qt::black); - if (req_size.isValid()) - p.scale(req_size.width()/100.0, req_size.height()/50.0); - p.drawText(QRectF(0,0,100,50),Qt::AlignCenter,id); - return image; + } + + QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) + { + int width = 100; + int height = 50; + + if (size) + *size = QSize(width, height); + QPixmap pixmap(requestedSize.width() > 0 ? requestedSize.width() : width, + requestedSize.height() > 0 ? requestedSize.height() : height); + pixmap.fill(QColor(id).rgba()); +//![0] + + // write the color name + QPainter painter(&pixmap); + QFont f = painter.font(); + f.setPixelSize(20); + painter.setFont(f); + painter.setPen(Qt::black); + if (requestedSize.isValid()) + painter.scale(requestedSize.width() / width, requestedSize.height() / height); + painter.drawText(QRectF(0, 0, width, height), Qt::AlignCenter, id); + +//![1] + return pixmap; } }; +//![1] class ImageProviderExtensionPlugin : public QDeclarativeExtensionPlugin { Q_OBJECT public: - void registerTypes(const char *uri) { + void registerTypes(const char *uri) + { Q_UNUSED(uri); - } - void initializeEngine(QDeclarativeEngine *engine, const char *uri) { + void initializeEngine(QDeclarativeEngine *engine, const char *uri) + { Q_UNUSED(uri); - engine->addImageProvider("colors", new ColorImageProvider); - - QStringList dataList; - dataList.append("image://colors/red"); - dataList.append("image://colors/green"); - dataList.append("image://colors/blue"); - dataList.append("image://colors/brown"); - dataList.append("image://colors/orange"); - dataList.append("image://colors/purple"); - dataList.append("image://colors/yellow"); - - QDeclarativeContext *ctxt = engine->rootContext(); - ctxt->setContextProperty("myModel", QVariant::fromValue(dataList)); } }; @@ -113,5 +107,4 @@ public: #include "imageprovider.moc" Q_EXPORT_PLUGIN(ImageProviderExtensionPlugin); -//![0] diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index c5ebe7a..2e37af7 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -621,24 +621,16 @@ QNetworkAccessManager *QDeclarativeEngine::networkAccessManager() const /*! Sets the \a provider to use for images requested via the \e - image: url scheme, with host \a providerId. + image: url scheme, with host \a providerId. The QDeclarativeEngine + takes ownership of \a provider. - QDeclarativeImageProvider allows images to be provided to QML - asynchronously. The image request will be run in a low priority - thread. This allows potentially costly image loading to be done in - the background, without affecting the performance of the UI. + Image providers enable support for pixmap and threaded image + requests. See the QDeclarativeImageProvider documentation for details on + implementing and using image providers. Note that images loaded from a QDeclarativeImageProvider are cached by QPixmapCache, similar to any image loaded by QML. - The QDeclarativeEngine assumes ownership of the provider. - - This example creates a provider with id \e colors: - - \snippet examples/declarative/cppextensions/imageprovider/imageprovider.cpp 0 - - \snippet examples/declarative/cppextensions/imageprovider/imageprovider-example.qml 0 - \sa removeImageProvider() */ void QDeclarativeEngine::addImageProvider(const QString &providerId, QDeclarativeImageProvider *provider) @@ -672,16 +664,35 @@ void QDeclarativeEngine::removeImageProvider(const QString &providerId) delete d->imageProviders.take(providerId); } +QDeclarativeImageProvider::ImageType QDeclarativeEnginePrivate::getImageProviderType(const QUrl &url) +{ + QMutexLocker locker(&mutex); + QDeclarativeImageProvider *provider = imageProviders.value(url.host()); + if (provider) + return provider->imageType(); + return static_cast(-1); +} + QImage QDeclarativeEnginePrivate::getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size) { QMutexLocker locker(&mutex); QImage image; QDeclarativeImageProvider *provider = imageProviders.value(url.host()); if (provider) - image = provider->request(url.path().mid(1), size, req_size); + image = provider->requestImage(url.path().mid(1), size, req_size); return image; } +QPixmap QDeclarativeEnginePrivate::getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size) +{ + QMutexLocker locker(&mutex); + QPixmap pixmap; + QDeclarativeImageProvider *provider = imageProviders.value(url.host()); + if (provider) + pixmap = provider->requestPixmap(url.path().mid(1), size, req_size); + return pixmap; +} + /*! Return the base URL for this engine. The base URL is only used to resolve components when a relative URL is passed to the diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index cfa9d73..f457b53 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -64,6 +64,7 @@ #include "qdeclarativecontext.h" #include "private/qdeclarativecontext_p.h" #include "qdeclarativeexpression.h" +#include "qdeclarativeimageprovider.h" #include "private/qdeclarativeproperty_p.h" #include "private/qdeclarativepropertycache_p.h" #include "private/qdeclarativeobjectscriptclass_p.h" @@ -233,7 +234,9 @@ public: mutable QDeclarativeNetworkAccessManagerFactory *networkAccessManagerFactory; QHash imageProviders; + QDeclarativeImageProvider::ImageType getImageProviderType(const QUrl &url); QImage getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size); + QPixmap getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size); mutable QMutex mutex; diff --git a/src/declarative/qml/qdeclarativeimageprovider.cpp b/src/declarative/qml/qdeclarativeimageprovider.cpp index f4a8588..f38da4e 100644 --- a/src/declarative/qml/qdeclarativeimageprovider.cpp +++ b/src/declarative/qml/qdeclarativeimageprovider.cpp @@ -43,35 +43,142 @@ QT_BEGIN_NAMESPACE +class QDeclarativeImageProviderPrivate +{ +public: + QDeclarativeImageProvider::ImageType type; +}; + /*! \class QDeclarativeImageProvider \since 4.7 - \brief The QDeclarativeImageProvider class provides an interface for threaded image requests in QML. + \brief The QDeclarativeImageProvider class provides an interface for supporting pixmaps and threaded image requests in QML. - QDeclarativeImageProvider can be used by a QDeclarativeEngine to provide images to QML asynchronously. - The image request will be run in a low priority thread, allowing potentially costly image - loading to be done in the background, without affecting the performance of the UI. + QDeclarativeImageProvider is used to provide advanced image loading features + in QML applications. It allows images in QML to be: - See the QDeclarativeEngine::addImageProvider() documentation for an - example of how a custom QDeclarativeImageProvider can be constructed and used. + \list + \o Loaded using QPixmaps rather than actual image files + \o Loaded asynchronously in a separate thread, if imageType() is \l ImageType::Image + \endlist - \note the request() method may be called by multiple threads, so ensure the - implementation of this method is reentrant. + To specify that an image should be loaded by an image provider, use the + \bold {"image:"} scheme for the URL source of the image, followed by the + identifiers of the image provider and the requested image. For example: + + \qml + Image { source: "image://myimageprovider/image.png" } + \endqml + + This specifies that the image should be loaded by the image provider named + "myimageprovider", and the image to be loaded is named "image.png". The QML engine + invokes the appropriate image provider according to the providers that have + been registered through QDeclarativeEngine::addImageProvider(). + + + \section2 An example + + Here are two images. Their \c source values indicate they should be loaded by + an image provider named "colors", and the images to be loaded are "yellow" + and "red", respectively: + + \snippet examples/declarative/cppextensions/imageprovider/imageprovider-example.qml 0 + + When these images are loaded by QML, it looks for a matching image provider + and calls its requestImage() or requestPixmap() method (depending on its + imageType()) to load the image. The method is called with the \c id + parameter set to "yellow" for the first image, and "red" for the second. + + Here is an image provider implementation that can load the images + requested by the above QML. This implementation dynamically + generates QPixmap images that are filled with the requested color: + + \snippet examples/declarative/cppextensions/imageprovider/imageprovider.cpp 0 + \codeline + \snippet examples/declarative/cppextensions/imageprovider/imageprovider.cpp 1 + + To make this provider accessible to QML, it is registered with the QML engine + with a "colors" identifier: + + \code + int main(int argc, char *argv[]) + { + ... + + QDeclarativeEngine engine; + engine->addImageProvider(QLatin1String("colors"), new ColorPixmapProvider); + + ... + } + \endcode + + Now the images can be succesfully loaded in QML: + + \image imageprovider.png + + A complete example is available in Qt's + \l {declarative/cppextensions/imageprovider}{examples/declarative/cppextensions/imageprovider} + directory. Note the example registers the provider via a \l{QDeclarativeExtensionPlugin}{plugin} + instead of registering it in the application \c main() function as shown above. + + + \section2 Asynchronous image loading + + Image providers that support QImage loading automatically include support + for asychronous loading of images. To enable asynchronous loading for an + \l Image source, set \l Image::asynchronous to \c true. When this is enabled, + the image request to the provider is run in a low priority thread, + allowing image loading to be executed in the background, and reducing the + performance impact on the user interface. + + Asynchronous loading is not supported for image providers that provide + QPixmap rather than QImage values, as pixmaps can only be created in the + main thread. In this case, if \l {Image::}{asynchronous} is set to + \c true, the value is ignored and the image is loaded + synchronously. + + \sa QDeclarativeEngine::addImageProvider() +*/ + +/*! + \enum QDeclarativeImageProvider::ImageType + + Defines the type of image supported by this image provider. - \sa QDeclarativeEngine::addImageProvider(), {declarative/cppextensions/imageprovider}{ImageProvider example} + \value Image The Image Provider provides QImage images. The + requestImage() method will be called for all image requests. + \value Pixmap The Image Provider provides QPixmap images. The + requestPixmap() method will be called for all image requests. */ /*! - Destroys the image provider. - */ + Creates an image provider that will provide images of the given \a type. +*/ +QDeclarativeImageProvider::QDeclarativeImageProvider(ImageType type) + : d(new QDeclarativeImageProviderPrivate) +{ + d->type = type; +} + +/*! + \internal +*/ QDeclarativeImageProvider::~QDeclarativeImageProvider() { + delete d; } /*! - \fn QImage QDeclarativeImageProvider::request(const QString &id, QSize *size, const QSize& requestedSize) + Returns the image type supported by this provider. +*/ +QDeclarativeImageProvider::ImageType QDeclarativeImageProvider::imageType() const +{ + return d->type; +} - Implement this method to return the image with \a id. +/*! + Implement this method to return the image with \a id. The default + implementation returns an empty image. If \a requestedSize is a valid size, the image returned should be of that size. @@ -80,5 +187,36 @@ QDeclarativeImageProvider::~QDeclarativeImageProvider() \note this method may be called by multiple threads, so ensure the implementation of this method is reentrant. */ +QImage QDeclarativeImageProvider::requestImage(const QString &id, QSize *size, const QSize& requestedSize) +{ + Q_UNUSED(id); + Q_UNUSED(size); + Q_UNUSED(requestedSize); + if (d->type == Image) + qWarning("ImageProvider supports Image type but has not implemented requestImage()"); + return QImage(); +} + +/*! + Implement this method to return the pixmap with \a id. The default + implementation returns an empty pixmap. + + If \a requestedSize is a valid size, the image returned should be of that size. + + In all cases, \a size must be set to the original size of the image. + + \note this method may be called by multiple threads, so ensure the + implementation of this method is reentrant. +*/ +QPixmap QDeclarativeImageProvider::requestPixmap(const QString &id, QSize *size, const QSize& requestedSize) +{ + Q_UNUSED(id); + Q_UNUSED(size); + Q_UNUSED(requestedSize); + if (d->type == Pixmap) + qWarning("ImageProvider supports Pixmap type but has not implemented requestPixmap()"); + return QPixmap(); +} QT_END_NAMESPACE + diff --git a/src/declarative/qml/qdeclarativeimageprovider.h b/src/declarative/qml/qdeclarativeimageprovider.h index cc9c9af..5a72943 100644 --- a/src/declarative/qml/qdeclarativeimageprovider.h +++ b/src/declarative/qml/qdeclarativeimageprovider.h @@ -43,6 +43,7 @@ #define QDECLARATIVEIMAGEPROVIDER_H #include +#include QT_BEGIN_HEADER @@ -50,11 +51,26 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) +class QDeclarativeImageProviderPrivate; + class Q_DECLARATIVE_EXPORT QDeclarativeImageProvider { public: + enum ImageType { + Image, + Pixmap + }; + + QDeclarativeImageProvider(ImageType type); virtual ~QDeclarativeImageProvider(); - virtual QImage request(const QString &id, QSize *size, const QSize& requestedSize) = 0; + + ImageType imageType() const; + + virtual QImage requestImage(const QString &id, QSize *size, const QSize& requestedSize); + virtual QPixmap requestPixmap(const QString &id, QSize *size, const QSize& requestedSize); + +private: + QDeclarativeImageProviderPrivate *d; }; QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index fdc2455..3f496b3 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -736,6 +736,58 @@ void QDeclarativePixmapData::removeFromCache() } } +static QDeclarativePixmapData* createPixmapDataSync(QDeclarativeEngine *engine, const QUrl &url, const QSize &requestSize, bool *ok) +{ + if (url.scheme() == QLatin1String("image")) { + QSize readSize; + QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine); + QDeclarativeImageProvider::ImageType imageType = ep->getImageProviderType(url); + + switch (imageType) { + case QDeclarativeImageProvider::Image: + { + QImage image = ep->getImageFromProvider(url, &readSize, requestSize); + if (!image.isNull()) { + *ok = true; + return new QDeclarativePixmapData(url, QPixmap::fromImage(image), readSize, requestSize); + } + } + case QDeclarativeImageProvider::Pixmap: + { + QPixmap pixmap = ep->getPixmapFromProvider(url, &readSize, requestSize); + if (!pixmap.isNull()) { + *ok = true; + return new QDeclarativePixmapData(url, pixmap, readSize, requestSize); + } + } + } + + // no matching provider, or provider has bad image type, or provider returned null image + return new QDeclarativePixmapData(url, requestSize, + QDeclarativePixmap::tr("Failed to get image from provider: %1").arg(url.toString())); + } + + QString localFile = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(url); + if (localFile.isEmpty()) + return 0; + + QFile f(localFile); + QSize readSize; + QString errorString; + + if (f.open(QIODevice::ReadOnly)) { + QImage image; + if (readImage(url, &f, &image, &errorString, &readSize, requestSize)) { + *ok = true; + return new QDeclarativePixmapData(url, QPixmap::fromImage(image), readSize, requestSize); + } + } else { + errorString = QDeclarativePixmap::tr("Cannot open: %1").arg(url.toString()); + } + return new QDeclarativePixmapData(url, requestSize, errorString); +} + + struct QDeclarativePixmapNull { QUrl url; QPixmap pixmap; @@ -893,27 +945,24 @@ void QDeclarativePixmap::load(QDeclarativeEngine *engine, const QUrl &url, const QHash::Iterator iter = store->m_cache.find(key); if (iter == store->m_cache.end()) { - if (!async) { - QString localFile = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(url); - if (!localFile.isEmpty()) { - QFile f(localFile); - QSize readSize; - QString errorString; - - if (f.open(QIODevice::ReadOnly)) { - QImage image; - if (readImage(url, &f, &image, &errorString, &readSize, requestSize)) { - d = new QDeclarativePixmapData(url, QPixmap::fromImage(image), readSize, requestSize); - d->addToCache(); - return; - } - } else { - errorString = tr("Cannot open: %1").arg(url.toString()); - } + if (async) { + if (url.scheme() == QLatin1String("image") + && QDeclarativeEnginePrivate::get(engine)->getImageProviderType(url) == QDeclarativeImageProvider::Pixmap) { + qWarning().nospace() << "Pixmaps must be loaded synchronously, ignoring asynchronous property for Image with source: " + << url.toString(); + async = false; + } + } - d = new QDeclarativePixmapData(url, requestSize, errorString); + if (!async) { + bool ok = false; + d = createPixmapDataSync(engine, url, requestSize, &ok); + if (ok) { + d->addToCache(); return; } + if (d) // loadable, but encountered error while loading + return; } if (!engine) diff --git a/tests/auto/declarative/qdeclarativeimageprovider/data/exists.png b/tests/auto/declarative/qdeclarativeimageprovider/data/exists.png deleted file mode 100644 index 399bd0b..0000000 Binary files a/tests/auto/declarative/qdeclarativeimageprovider/data/exists.png and /dev/null differ diff --git a/tests/auto/declarative/qdeclarativeimageprovider/data/exists1.png b/tests/auto/declarative/qdeclarativeimageprovider/data/exists1.png deleted file mode 100644 index 399bd0b..0000000 Binary files a/tests/auto/declarative/qdeclarativeimageprovider/data/exists1.png and /dev/null differ diff --git a/tests/auto/declarative/qdeclarativeimageprovider/data/exists2.png b/tests/auto/declarative/qdeclarativeimageprovider/data/exists2.png deleted file mode 100644 index 399bd0b..0000000 Binary files a/tests/auto/declarative/qdeclarativeimageprovider/data/exists2.png and /dev/null differ diff --git a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp index 4185790..9d62f22 100644 --- a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp +++ b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp @@ -61,6 +61,8 @@ QVERIFY((expr)); \ } while (false) +Q_DECLARE_METATYPE(QDeclarativeImageProvider*); + class tst_qdeclarativeimageprovider : public QObject { @@ -71,43 +73,103 @@ public: } private slots: - void imageSource(); - void imageSource_data(); + void requestImage_sync_data(); + void requestImage_sync(); + void requestImage_async_data(); + void requestImage_async(); + + void requestPixmap_sync_data(); + void requestPixmap_sync(); + void requestPixmap_async(); + + void removeProvider_data(); void removeProvider(); private: - QDeclarativeEngine engine; + QString newImageFileName() const; + void fillRequestTestsData(const QString &id); + void runTest(bool async, QDeclarativeImageProvider *provider); }; -class TestProvider : public QDeclarativeImageProvider + +class TestQImageProvider : public QDeclarativeImageProvider { public: - QImage request(const QString &id, QSize *size, const QSize& requested_size) { - QImageReader io(SRCDIR "/data/" + id); - if (size) *size = io.size(); - if (requested_size.isValid()) - io.setScaledSize(requested_size); - return io.read(); + TestQImageProvider() + : QDeclarativeImageProvider(Image) + { + } + + QImage requestImage(const QString &id, QSize *size, const QSize& requestedSize) + { + if (id == QLatin1String("no-such-file.png")) + return QImage(); + + int width = 100; + int height = 100; + QImage image(width, height, QImage::Format_RGB32); + if (size) + *size = QSize(width, height); + if (requestedSize.isValid()) + image = image.scaled(requestedSize); + return image; } }; +Q_DECLARE_METATYPE(TestQImageProvider*); -void tst_qdeclarativeimageprovider::imageSource_data() + +class TestQPixmapProvider : public QDeclarativeImageProvider +{ +public: + TestQPixmapProvider() + : QDeclarativeImageProvider(Pixmap) + { + } + + QPixmap requestPixmap(const QString &id, QSize *size, const QSize& requestedSize) + { + if (id == QLatin1String("no-such-file.png")) + return QPixmap(); + + int width = 100; + int height = 100; + QPixmap image(width, height); + if (size) + *size = QSize(width, height); + if (requestedSize.isValid()) + image = image.scaled(requestedSize); + return image; + } +}; +Q_DECLARE_METATYPE(TestQPixmapProvider*); + + +QString tst_qdeclarativeimageprovider::newImageFileName() const +{ + // need to generate new filenames each time or else images are loaded + // from cache and we won't get loading status changes when testing + // async loading + static int count = 0; + return QString("image://test/image-%1.png").arg(count++); +} + +void tst_qdeclarativeimageprovider::fillRequestTestsData(const QString &id) { QTest::addColumn("source"); QTest::addColumn("properties"); QTest::addColumn("size"); QTest::addColumn("error"); - QTest::newRow("exists") << "image://test/exists.png" << "" << QSize(100,100) << ""; - QTest::newRow("scaled") << "image://test/exists.png" << "sourceSize: \"80x30\"" << QSize(80,30) << ""; - QTest::newRow("missing") << "image://test/no-such-file.png" << "" << QSize() + QTest::newRow(QTest::toString(id + " exists")) << newImageFileName() << "" << QSize(100,100) << ""; + QTest::newRow(QTest::toString(id + " scaled")) << newImageFileName() << "sourceSize: \"80x30\"" << QSize(80,30) << ""; + + QTest::newRow(QTest::toString(id + " missing")) << "image://test/no-such-file.png" << "" << QSize() << "file::2:1: QML Image: Failed to get image from provider: image://test/no-such-file.png"; - QTest::newRow("unknown provider") << "image://bogus/exists.png" << "" << QSize() + QTest::newRow(QTest::toString(id + " unknown provider")) << "image://bogus/exists.png" << "" << QSize() << "file::2:1: QML Image: Failed to get image from provider: image://bogus/exists.png"; - } - -void tst_qdeclarativeimageprovider::imageSource() + +void tst_qdeclarativeimageprovider::runTest(bool async, QDeclarativeImageProvider *provider) { QFETCH(QString, source); QFETCH(QString, properties); @@ -117,21 +179,29 @@ void tst_qdeclarativeimageprovider::imageSource() if (!error.isEmpty()) QTest::ignoreMessage(QtWarningMsg, error.toUtf8()); - engine.addImageProvider("test", new TestProvider); + QDeclarativeEngine engine; + + engine.addImageProvider("test", provider); QVERIFY(engine.imageProvider("test") != 0); - QString componentStr = "import Qt 4.7\nImage { source: \"" + source + "\"; " + properties + " }"; + QString componentStr = "import Qt 4.7\nImage { source: \"" + source + "\"; " + + (async ? "asynchronous: true; " : "") + + properties + " }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - TRY_WAIT(obj->status() == QDeclarativeImage::Loading); + if (async) + TRY_WAIT(obj->status() == QDeclarativeImage::Loading); QCOMPARE(obj->source(), QUrl(source)); if (error.isEmpty()) { - TRY_WAIT(obj->status() == QDeclarativeImage::Ready); + if (async) + TRY_WAIT(obj->status() == QDeclarativeImage::Ready); + else + QVERIFY(obj->status() == QDeclarativeImage::Ready); QCOMPARE(obj->width(), 100.0); QCOMPARE(obj->height(), 100.0); QCOMPARE(obj->pixmap().width(), size.width()); @@ -139,40 +209,100 @@ void tst_qdeclarativeimageprovider::imageSource() QCOMPARE(obj->fillMode(), QDeclarativeImage::Stretch); QCOMPARE(obj->progress(), 1.0); } else { - TRY_WAIT(obj->status() == QDeclarativeImage::Error); + if (async) + TRY_WAIT(obj->status() == QDeclarativeImage::Error); + else + QVERIFY(obj->status() == QDeclarativeImage::Error); } delete obj; } +void tst_qdeclarativeimageprovider::requestImage_sync_data() +{ + fillRequestTestsData("qimage|sync"); +} + +void tst_qdeclarativeimageprovider::requestImage_sync() +{ + runTest(false, new TestQImageProvider); +} + +void tst_qdeclarativeimageprovider::requestImage_async_data() +{ + fillRequestTestsData("qimage|async"); +} + +void tst_qdeclarativeimageprovider::requestImage_async() +{ + runTest(true, new TestQImageProvider); +} + +void tst_qdeclarativeimageprovider::requestPixmap_sync_data() +{ + fillRequestTestsData("qpixmap"); +} + +void tst_qdeclarativeimageprovider::requestPixmap_sync() +{ + runTest(false, new TestQPixmapProvider); +} + +void tst_qdeclarativeimageprovider::requestPixmap_async() +{ + QDeclarativeEngine engine; + QDeclarativeImageProvider *provider = new TestQPixmapProvider; + + engine.addImageProvider("test", provider); + QVERIFY(engine.imageProvider("test") != 0); + + QTest::ignoreMessage(QtWarningMsg, + "Pixmaps must be loaded synchronously, ignoring asynchronous property for Image with source: \"image://test/pixmap-async-test.png\""); + + QString componentStr = "import Qt 4.7\nImage { asynchronous: true; source: \"image://test/pixmap-async-test.png\" }"; + QDeclarativeComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeImage *obj = qobject_cast(component.create()); + QVERIFY(obj != 0); + + delete obj; +} + +void tst_qdeclarativeimageprovider::removeProvider_data() +{ + QTest::addColumn("provider"); + + QTest::newRow("qimage") << static_cast(new TestQImageProvider); + QTest::newRow("qpixmap") << static_cast(new TestQPixmapProvider); +} + void tst_qdeclarativeimageprovider::removeProvider() { - engine.addImageProvider("test2", new TestProvider); - QVERIFY(engine.imageProvider("test2") != 0); + QFETCH(QDeclarativeImageProvider*, provider); + + QDeclarativeEngine engine; + + engine.addImageProvider("test", provider); + QVERIFY(engine.imageProvider("test") != 0); // add provider, confirm it works - QString componentStr = "import Qt 4.7\nImage { source: \"image://test2/exists1.png\" }"; + QString componentStr = "import Qt 4.7\nImage { source: \"" + newImageFileName() + "\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast(component.create()); QVERIFY(obj != 0); - TRY_WAIT(obj->status() == QDeclarativeImage::Loading); - TRY_WAIT(obj->status() == QDeclarativeImage::Ready); - - QCOMPARE(obj->width(), 100.0); + QCOMPARE(obj->status(), QDeclarativeImage::Ready); // remove the provider and confirm - QString error("file::2:1: QML Image: Failed to get image from provider: image://test2/exists2.png"); - + QString fileName = newImageFileName(); + QString error("file::2:1: QML Image: Failed to get image from provider: " + fileName); QTest::ignoreMessage(QtWarningMsg, error.toUtf8()); - engine.removeImageProvider("test2"); - - obj->setSource(QUrl("image://test2/exists2.png")); + engine.removeImageProvider("test"); - TRY_WAIT(obj->status() == QDeclarativeImage::Loading); - TRY_WAIT(obj->status() == QDeclarativeImage::Error); + obj->setSource(QUrl(fileName)); + QCOMPARE(obj->status(), QDeclarativeImage::Error); delete obj; } -- cgit v0.12 From e231da119daec62c0aa2cee055c539154a0f935d Mon Sep 17 00:00:00 2001 From: Charles Yin Date: Thu, 8 Jul 2010 14:25:53 +1000 Subject: Fixes the sqlite driver bug QTBUG-11904 (pointer aliasing) Applying upstream sqlite patch from: http://www.sqlite.org/src/info/d6ae275122 Task-number: QTBUG-11904 Reviewed-by: Michael Goddard --- src/3rdparty/sqlite/sqlite3.c | 47 +++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/3rdparty/sqlite/sqlite3.c b/src/3rdparty/sqlite/sqlite3.c index 46d3dfc..27a8d18 100644 --- a/src/3rdparty/sqlite/sqlite3.c +++ b/src/3rdparty/sqlite/sqlite3.c @@ -48449,11 +48449,15 @@ SQLITE_PRIVATE void sqlite3VdbeIOTraceSql(Vdbe *p){ #endif /* !SQLITE_OMIT_TRACE && SQLITE_ENABLE_IOTRACE */ /* -** Allocate space from a fixed size buffer. Make *pp point to the -** allocated space. (Note: pp is a char* rather than a void** to -** work around the pointer aliasing rules of C.) *pp should initially -** be zero. If *pp is not zero, that means that the space has already -** been allocated and this routine is a noop. +** Allocate space from a fixed size buffer and return a pointer to +** that space. If insufficient space is available, return NULL. +** +** The pBuf parameter is the initial value of a pointer which will +** receive the new memory. pBuf is normally NULL. If pBuf is not +** NULL, it means that memory space has already been allocated and that +** this routine should not allocate any new memory. When pBuf is not +** NULL simply return pBuf. Only allocate new memory space when pBuf +** is NULL. ** ** nByte is the number of bytes of space needed. ** @@ -48464,23 +48468,23 @@ SQLITE_PRIVATE void sqlite3VdbeIOTraceSql(Vdbe *p){ ** to allocate. If there is insufficient space in *ppFrom to satisfy the ** request, then increment *pnByte by the amount of the request. */ -static void allocSpace( - char *pp, /* IN/OUT: Set *pp to point to allocated buffer */ +static void *allocSpace( + void *pBuf, /* Where return pointer will be stored */ int nByte, /* Number of bytes to allocate */ u8 **ppFrom, /* IN/OUT: Allocate from *ppFrom */ u8 *pEnd, /* Pointer to 1 byte past the end of *ppFrom buffer */ int *pnByte /* If allocation cannot be made, increment *pnByte */ ){ assert( EIGHT_BYTE_ALIGNMENT(*ppFrom) ); - if( (*(void**)pp)==0 ){ - nByte = ROUND8(nByte); - if( &(*ppFrom)[nByte] <= pEnd ){ - *(void**)pp = (void *)*ppFrom; - *ppFrom += nByte; - }else{ - *pnByte += nByte; - } + if( pBuf ) return pBuf; + nByte = ROUND8(nByte); + if( &(*ppFrom)[nByte] <= pEnd ){ + pBuf = (void*)*ppFrom; + *ppFrom += nByte; + }else{ + *pnByte += nByte; } + return pBuf; } /* @@ -48553,13 +48557,12 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady( do { nByte = 0; - allocSpace((char*)&p->aMem, nMem*sizeof(Mem), &zCsr, zEnd, &nByte); - allocSpace((char*)&p->aVar, nVar*sizeof(Mem), &zCsr, zEnd, &nByte); - allocSpace((char*)&p->apArg, nArg*sizeof(Mem*), &zCsr, zEnd, &nByte); - allocSpace((char*)&p->azVar, nVar*sizeof(char*), &zCsr, zEnd, &nByte); - allocSpace((char*)&p->apCsr, - nCursor*sizeof(VdbeCursor*), &zCsr, zEnd, &nByte - ); + p->aMem = allocSpace(p->aMem, nMem*sizeof(Mem), &zCsr, zEnd, &nByte); + p->aVar = allocSpace(p->aVar, nVar*sizeof(Mem), &zCsr, zEnd, &nByte); + p->apArg = allocSpace(p->apArg, nArg*sizeof(Mem*), &zCsr, zEnd, &nByte); + p->azVar = allocSpace(p->azVar, nVar*sizeof(char*), &zCsr, zEnd, &nByte); + p->apCsr = allocSpace(p->apCsr, nCursor*sizeof(VdbeCursor*), + &zCsr, zEnd, &nByte); if( nByte ){ p->pFree = sqlite3DbMallocZero(db, nByte); } -- cgit v0.12 From cec6d01d17e39af6e8a139156a3b51fd45558a50 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 8 Jul 2010 15:04:48 +1000 Subject: Don't double delete cancelled pixmap cache requests QTBUG-11954 --- src/declarative/util/qdeclarativepixmapcache.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index 3f496b3..f729ced 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -358,7 +358,9 @@ void QDeclarativePixmapReader::networkRequestDone() } } // send completion event to the QDeclarativePixmapReply - job->postReply(error, errorString, readSize, image); + mutex.lock(); + if (!cancelled.contains(job)) job->postReply(error, errorString, readSize, image); + mutex.unlock(); } reply->deleteLater(); @@ -438,7 +440,9 @@ void QDeclarativePixmapReader::processJob(QDeclarativePixmapReply *runningJob) errorStr = QDeclarativePixmap::tr("Failed to get image from provider: %1").arg(url.toString()); } - runningJob->postReply(errorCode, errorStr, readSize, image); + mutex.lock(); + if (!cancelled.contains(runningJob)) runningJob->postReply(errorCode, errorStr, readSize, image); + mutex.unlock(); } else { QString lf = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(url); if (!lf.isEmpty()) { @@ -455,7 +459,9 @@ void QDeclarativePixmapReader::processJob(QDeclarativePixmapReply *runningJob) errorStr = QDeclarativePixmap::tr("Cannot open: %1").arg(url.toString()); errorCode = QDeclarativePixmapReply::Loading; } - runningJob->postReply(errorCode, errorStr, readSize, image); + mutex.lock(); + if (!cancelled.contains(runningJob)) runningJob->postReply(errorCode, errorStr, readSize, image); + mutex.unlock(); } else { // Network resource QNetworkRequest req(url); -- cgit v0.12 From c3ee63fd9a1428718ca2f2a32e81a3f977878fad Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 8 Jul 2010 15:19:41 +1000 Subject: Update QmlChanges.txt --- src/declarative/QmlChanges.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 91442c1..125b939 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -35,6 +35,10 @@ The QDeclarativeExpression constructor has changed from to QDeclarativeExpression(context, scope, expression, parent = 0) +QDeclarativeImageProvider::request() has been renamed to +QDeclarativeImageProvider::image() and the class can now provide +both qimages and qpixmaps, and qimages can be served synchronously + QML Viewer ------------ The standalone qml executable has been renamed back to Qml Viewer. Runtime warnings -- cgit v0.12 From 33b664eabe5d9621d71e5bf3bfcc46ea385a399c Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 8 Jul 2010 15:30:58 +1000 Subject: Remove Image::pixmap property. QML applications should use QDeclarativeImageProvider to provide pixmaps instead. Task-number: QTBUG-11980 --- src/declarative/QmlChanges.txt | 7 +++-- .../graphicsitems/qdeclarativeimage.cpp | 10 ------- .../graphicsitems/qdeclarativeimage_p.h | 2 -- .../qdeclarativeimage/tst_qdeclarativeimage.cpp | 31 ---------------------- 4 files changed, 5 insertions(+), 45 deletions(-) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 125b939..259d9a9 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -16,8 +16,11 @@ Component: - errorsString() renamed to errorString() ListView: - ListView.prevSection property changed to ListView.previousSection - -TextInput xToPosition -> positionAt (to match TextEdit.positionAt) +TextInput: + - xToPosition -> positionAt (to match TextEdit.positionAt) +Image: + - pixmap property removed, use QDeclarativeImageProvider to serve pixmaps + instead QList models no longer provide properties in model object. The properties are now updated when the object changes. An object's property diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index 666ff3f..34d33f5 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -116,15 +116,6 @@ QDeclarativeImage::~QDeclarativeImage() { } -/*! - \qmlproperty QPixmap Image::pixmap - - This property holds the QPixmap image to display. - - This is useful for displaying images provided by a C++ implementation, - for example, a model may provide a data role of type QPixmap. -*/ - QPixmap QDeclarativeImage::pixmap() const { Q_D(const QDeclarativeImage); @@ -524,7 +515,6 @@ void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWi void QDeclarativeImage::pixmapChange() { updatePaintedGeometry(); - emit pixmapChanged(); } QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h index a4f4475..c8bb30b 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage_p.h +++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h @@ -57,7 +57,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeImage : public QDeclarativeImageBase Q_OBJECT Q_ENUMS(FillMode) - Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap NOTIFY pixmapChanged DESIGNABLE false) Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged) Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedGeometryChanged) Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedGeometryChanged) @@ -79,7 +78,6 @@ public: void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); Q_SIGNALS: - void pixmapChanged(); void fillModeChanged(); void paintedGeometryChanged(); diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp index df029f5..38fd458 100644 --- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp +++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp @@ -88,7 +88,6 @@ private slots: void resized(); void preserveAspectRatio(); void smooth(); - void pixmap(); void svg(); void big(); void tiling_QTBUG_6716(); @@ -261,36 +260,6 @@ void tst_qdeclarativeimage::smooth() delete obj; } -void tst_qdeclarativeimage::pixmap() -{ - QString componentStr = "import Qt 4.7\nImage { pixmap: testPixmap }"; - - QPixmap pixmap; - QDeclarativeContext *ctxt = engine.rootContext(); - ctxt->setContextProperty("testPixmap", pixmap); - - QDeclarativeComponent component(&engine); - component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); - - QDeclarativeImage *obj = qobject_cast(component.create()); - QVERIFY(obj != 0); - QCOMPARE(obj->source(), QUrl()); - QVERIFY(obj->status() == QDeclarativeImage::Null); - QCOMPARE(obj->width(), 0.); - QCOMPARE(obj->height(), 0.); - QCOMPARE(obj->fillMode(), QDeclarativeImage::Stretch); - QCOMPARE(obj->progress(), 0.0); - QVERIFY(obj->pixmap().isNull()); - - pixmap = QPixmap(SRCDIR "/data/colors.png"); - ctxt->setContextProperty("testPixmap", pixmap); - QCOMPARE(obj->width(), 120.); - QCOMPARE(obj->height(), 120.); - QVERIFY(obj->status() == QDeclarativeImage::Ready); - - delete obj; -} - void tst_qdeclarativeimage::svg() { QString src = QUrl::fromLocalFile(SRCDIR "/data/heart.svg").toString(); -- cgit v0.12 From a2ee0cfd799f563f292e6b40ca460e05819fd0fd Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Thu, 8 Jul 2010 15:33:37 +1000 Subject: Don't show warning for attempts to load pixmaps asynchronously (should be handled by image providers, elements shouldn't have to know about the capabilities) --- src/declarative/util/qdeclarativepixmapcache.cpp | 3 +-- .../qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index f729ced..00dd922 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -952,10 +952,9 @@ void QDeclarativePixmap::load(QDeclarativeEngine *engine, const QUrl &url, const if (iter == store->m_cache.end()) { if (async) { + // pixmaps can only be loaded synchronously if (url.scheme() == QLatin1String("image") && QDeclarativeEnginePrivate::get(engine)->getImageProviderType(url) == QDeclarativeImageProvider::Pixmap) { - qWarning().nospace() << "Pixmaps must be loaded synchronously, ignoring asynchronous property for Image with source: " - << url.toString(); async = false; } } diff --git a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp index 9d62f22..e0b46f0 100644 --- a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp +++ b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp @@ -256,9 +256,7 @@ void tst_qdeclarativeimageprovider::requestPixmap_async() engine.addImageProvider("test", provider); QVERIFY(engine.imageProvider("test") != 0); - QTest::ignoreMessage(QtWarningMsg, - "Pixmaps must be loaded synchronously, ignoring asynchronous property for Image with source: \"image://test/pixmap-async-test.png\""); - + // pixmaps are loaded synchronously regardless of 'asynchronous' value QString componentStr = "import Qt 4.7\nImage { asynchronous: true; source: \"image://test/pixmap-async-test.png\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); -- cgit v0.12 From 054049046e89d6e18d800f4728d4927354b640c6 Mon Sep 17 00:00:00 2001 From: Aaron McCarthy Date: Thu, 8 Jul 2010 15:44:49 +1000 Subject: Quiet qmake warnings during configure. Configure runs qmake on all .pro files in the source tree. Wrapping symbian only code in symbian scopes prevents warnings about unset EPOCROOT on other platforms. Task-number: QTBUG-11996 --- src/plugins/bearer/symbian/3_2/3_2.pro | 16 +++++++++------- src/plugins/bearer/symbian/symbian_3/symbian_3.pro | 22 ++++++++++++---------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/plugins/bearer/symbian/3_2/3_2.pro b/src/plugins/bearer/symbian/3_2/3_2.pro index 3404dde..6f3ecaf 100644 --- a/src/plugins/bearer/symbian/3_2/3_2.pro +++ b/src/plugins/bearer/symbian/3_2/3_2.pro @@ -1,12 +1,14 @@ include(../symbian.pri) -exists($${EPOCROOT}epoc32/release/winscw/udeb/cmmanager.lib)| \ -exists($${EPOCROOT}epoc32/release/armv5/lib/cmmanager.lib) { - DEFINES += SNAP_FUNCTIONALITY_AVAILABLE - LIBS += -lcmmanager -} else { - # Fall back to 3_1 implementation on platforms that do not have cmmanager - LIBS += -lapengine +symbian { + exists($${EPOCROOT}epoc32/release/winscw/udeb/cmmanager.lib)| \ + exists($${EPOCROOT}epoc32/release/armv5/lib/cmmanager.lib) { + DEFINES += SNAP_FUNCTIONALITY_AVAILABLE + LIBS += -lcmmanager + } else { + # Fall back to 3_1 implementation on platforms that do not have cmmanager + LIBS += -lapengine + } } TARGET = $${TARGET}_3_2 diff --git a/src/plugins/bearer/symbian/symbian_3/symbian_3.pro b/src/plugins/bearer/symbian/symbian_3/symbian_3.pro index 804986a..25f18f2 100644 --- a/src/plugins/bearer/symbian/symbian_3/symbian_3.pro +++ b/src/plugins/bearer/symbian/symbian_3/symbian_3.pro @@ -1,17 +1,19 @@ include(../symbian.pri) -exists($${EPOCROOT}epoc32/release/winscw/udeb/cmmanager.lib)| \ -exists($${EPOCROOT}epoc32/release/armv5/lib/cmmanager.lib) { - DEFINES += SNAP_FUNCTIONALITY_AVAILABLE - LIBS += -lcmmanager +symbian { + exists($${EPOCROOT}epoc32/release/winscw/udeb/cmmanager.lib)| \ + exists($${EPOCROOT}epoc32/release/armv5/lib/cmmanager.lib) { + DEFINES += SNAP_FUNCTIONALITY_AVAILABLE + LIBS += -lcmmanager - exists($$MW_LAYER_PUBLIC_EXPORT_PATH(extendedconnpref.h)) { - DEFINES += OCC_FUNCTIONALITY_AVAILABLE - LIBS += -lextendedconnpref + exists($$MW_LAYER_PUBLIC_EXPORT_PATH(extendedconnpref.h)) { + DEFINES += OCC_FUNCTIONALITY_AVAILABLE + LIBS += -lextendedconnpref + } + } else { + # Fall back to 3_1 implementation on platforms that do not have cmmanager + LIBS += -lapengine } -} else { - # Fall back to 3_1 implementation on platforms that do not have cmmanager - LIBS += -lapengine } TARGET.UID3 = 0x20021319 -- cgit v0.12 From 5cd72b07d202b487ca42486dfefc99ba2fff0045 Mon Sep 17 00:00:00 2001 From: mae Date: Thu, 8 Jul 2010 07:57:58 +0200 Subject: Optimization: change signal/slot to function call --- src/declarative/util/qdeclarativeanimation.cpp | 4 ++-- src/declarative/util/qdeclarativeanimation_p.h | 6 ++++-- src/declarative/util/qdeclarativebehavior.cpp | 6 +----- src/declarative/util/qdeclarativebehavior_p.h | 1 - 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index 6559bd5..bdb9510 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -142,8 +142,8 @@ bool QDeclarativeAbstractAnimation::isRunning() const return d->running; } -// the behavior connects the animation to this slot -void QDeclarativeAbstractAnimation::behaviorControlRunningChanged(bool running) +// the behavior calls this function +void QDeclarativeAbstractAnimation::notifyRunningChanged(bool running) { Q_D(QDeclarativeAbstractAnimation); if (d->disableUserControl && d->running != running) { diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h index 2279b0e..59bd465 100644 --- a/src/declarative/util/qdeclarativeanimation_p.h +++ b/src/declarative/util/qdeclarativeanimation_p.h @@ -134,10 +134,12 @@ public: private Q_SLOTS: void timelineComplete(); void componentFinalized(); - void behaviorControlRunningChanged(bool running); - private: virtual void setTarget(const QDeclarativeProperty &); + void notifyRunningChanged(bool running); + friend class QDeclarativeBehavior; + + }; class QDeclarativePauseAnimationPrivate; diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp index 4480e75..2bb28c3 100644 --- a/src/declarative/util/qdeclarativebehavior.cpp +++ b/src/declarative/util/qdeclarativebehavior.cpp @@ -138,10 +138,6 @@ void QDeclarativeBehavior::setAnimation(QDeclarativeAbstractAnimation *animation SIGNAL(stateChanged(QAbstractAnimation::State,QAbstractAnimation::State)), this, SLOT(qtAnimationStateChanged(QAbstractAnimation::State,QAbstractAnimation::State))); - connect(this, - SIGNAL(qtAnimationRunningChanged(bool)), - d->animation, - SLOT(behaviorControlRunningChanged(bool))); } } @@ -150,7 +146,7 @@ void QDeclarativeBehavior::qtAnimationStateChanged(QAbstractAnimation::State new { Q_D(QDeclarativeBehavior); if (!d->blockRunningChanged) - emit qtAnimationRunningChanged(newState == QAbstractAnimation::Running); + d->animation->notifyRunningChanged(newState == QAbstractAnimation::Running); } diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h index a3132d9..9801fb2 100644 --- a/src/declarative/util/qdeclarativebehavior_p.h +++ b/src/declarative/util/qdeclarativebehavior_p.h @@ -83,7 +83,6 @@ public: Q_SIGNALS: void enabledChanged(); - void qtAnimationRunningChanged(bool running); private Q_SLOTS: void componentFinalized(); -- cgit v0.12 From 0ba1b4d05629643131c0c7461b2a483d8a56ed39 Mon Sep 17 00:00:00 2001 From: mae Date: Thu, 8 Jul 2010 08:41:45 +0200 Subject: Fix exponential behavior of QTextCursor::removeSelectedText This is an improved version of 62db6c18c7f1f60819783ed5e1340e9fc09e072e --- src/gui/text/qtextdocument_p.cpp | 18 +++++++++++++++--- src/gui/text/qtextdocument_p.h | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 9bcf8b4..54bf36b 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -205,6 +205,7 @@ QTextDocumentPrivate::QTextDocumentPrivate() undoEnabled = true; inContentsChange = false; + blockCursorAdjustment = false; defaultTextOption.setTabStop(80); // same as in qtextengine.cpp defaultTextOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); @@ -669,7 +670,14 @@ void QTextDocumentPrivate::remove(int pos, int length, QTextUndoCommand::Operati { if (length == 0) return; + blockCursorAdjustment = true; move(pos, -1, length, op); + blockCursorAdjustment = false; + foreach (QTextCursorPrivate *curs, cursors) { + if (curs->adjustPosition(pos, -length, op) == QTextCursorPrivate::CursorMoved) { + curs->changed = true; + } + } } void QTextDocumentPrivate::setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode) @@ -1268,9 +1276,13 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr if (!editBlock) ++revision; - foreach (QTextCursorPrivate *curs, cursors) { - if (curs->adjustPosition(from, addedOrRemoved, op) == QTextCursorPrivate::CursorMoved) { - curs->changed = true; + if (blockCursorAdjustment) { + ; // postpone, will be called again from QTextDocumentPrivate::remove() + } else { + foreach (QTextCursorPrivate *curs, cursors) { + if (curs->adjustPosition(from, addedOrRemoved, op) == QTextCursorPrivate::CursorMoved) { + curs->changed = true; + } } } diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h index b9d5f5a..b46d01c 100644 --- a/src/gui/text/qtextdocument_p.h +++ b/src/gui/text/qtextdocument_p.h @@ -345,6 +345,7 @@ public: int maximumBlockCount; uint needsEnsureMaximumBlockCount : 1; uint inContentsChange : 1; + uint blockCursorAdjustment : 1; QSizeF pageSize; QString title; QString url; -- cgit v0.12 From ebf175b3d68e28cd808204adaba1ec8942ac5a8f Mon Sep 17 00:00:00 2001 From: Benjamin Poulain Date: Thu, 8 Jul 2010 10:49:31 +0200 Subject: The forward declaration should have been in the namespace for QImageData Reviewed-by: Olivier Goffart --- src/gui/image/qimage_p.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h index da535aa..c687448 100644 --- a/src/gui/image/qimage_p.h +++ b/src/gui/image/qimage_p.h @@ -61,10 +61,10 @@ #include #endif -class QImageWriter; - QT_BEGIN_NAMESPACE +class QImageWriter; + struct Q_GUI_EXPORT QImageData { // internal image data QImageData(); ~QImageData(); -- cgit v0.12 From abd49d1d146b73a124b5e650f1b254da992ed3a4 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Thu, 8 Jul 2010 19:24:02 +1000 Subject: Update QtDeclarative def files --- src/s60installs/bwins/QtDeclarativeu.def | 9 ++++++++- src/s60installs/eabi/QtDeclarativeu.def | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def index 80ba423..e96f83f 100644 --- a/src/s60installs/bwins/QtDeclarativeu.def +++ b/src/s60installs/bwins/QtDeclarativeu.def @@ -751,7 +751,7 @@ EXPORTS ?paint@QDeclarativeItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 750 NONAME ; void QDeclarativeItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *) ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 751 NONAME ; class QPacketAutoSend QPacketProtocol::send(void) ?countChanged@QDeclarativeListModel@@IAEXXZ @ 752 NONAME ; void QDeclarativeListModel::countChanged(void) - ?setBindingForObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@ABVQVariant@@_NPAVQObject@@@Z @ 753 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool, class QObject *) + ?setBindingForObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@ABVQVariant@@_NPAVQObject@@@Z @ 753 NONAME ABSENT ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool, class QObject *) ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 754 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *) ??_EQDeclarativeBinding@@UAE@I@Z @ 755 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int) ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 756 NONAME ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const @@ -1668,4 +1668,11 @@ EXPORTS ??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1667 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &, class QSize const &) ?url@QDeclarativePixmap@@QBEABVQUrl@@XZ @ 1668 NONAME ; class QUrl const & QDeclarativePixmap::url(void) const ?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@_N@Z @ 1669 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &, bool) + ?imageType@QDeclarativeImageProvider@@QBE?AW4ImageType@1@XZ @ 1670 NONAME ; enum QDeclarativeImageProvider::ImageType QDeclarativeImageProvider::imageType(void) const + ?qtAnimationStateChanged@QDeclarativeBehavior@@AAEXW4State@QAbstractAnimation@@0@Z @ 1671 NONAME ; void QDeclarativeBehavior::qtAnimationStateChanged(enum QAbstractAnimation::State, enum QAbstractAnimation::State) + ?requestImage@QDeclarativeImageProvider@@UAE?AVQImage@@ABVQString@@PAVQSize@@ABV4@@Z @ 1672 NONAME ; class QImage QDeclarativeImageProvider::requestImage(class QString const &, class QSize *, class QSize const &) + ?requestPixmap@QDeclarativeImageProvider@@UAE?AVQPixmap@@ABVQString@@PAVQSize@@ABV4@@Z @ 1673 NONAME ; class QPixmap QDeclarativeImageProvider::requestPixmap(class QString const &, class QSize *, class QSize const &) + ?setBindingForObject@QDeclarativeEngineDebug@@QAE_NHABVQString@@ABVQVariant@@_N@Z @ 1674 NONAME ; bool QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool) + ??0QDeclarativeImageProvider@@QAE@W4ImageType@0@@Z @ 1675 NONAME ; QDeclarativeImageProvider::QDeclarativeImageProvider(enum QDeclarativeImageProvider::ImageType) + ?setMethodBody@QDeclarativeEngineDebug@@QAE_NHABVQString@@0@Z @ 1676 NONAME ; bool QDeclarativeEngineDebug::setMethodBody(int, class QString const &, class QString const &) diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index 8c59b18..083e07f 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -691,7 +691,7 @@ EXPORTS _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 690 NONAME DATA 16 _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 691 NONAME _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 692 NONAME - _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantbP7QObject @ 693 NONAME + _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantbP7QObject @ 693 NONAME ABSENT _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 694 NONAME _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 695 NONAME _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 696 NONAME @@ -1698,4 +1698,12 @@ EXPORTS _ZNK18QDeclarativePixmap7isErrorEv @ 1697 NONAME _ZNK18QDeclarativePixmap7isReadyEv @ 1698 NONAME _ZNK18QDeclarativePixmap9isLoadingEv @ 1699 NONAME + _ZN20QDeclarativeBehavior23qtAnimationStateChangedEN18QAbstractAnimation5StateES1_ @ 1700 NONAME + _ZN23QDeclarativeEngineDebug13setMethodBodyEiRK7QStringS2_ @ 1701 NONAME + _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantb @ 1702 NONAME + _ZN25QDeclarativeImageProvider12requestImageERK7QStringP5QSizeRKS3_ @ 1703 NONAME + _ZN25QDeclarativeImageProvider13requestPixmapERK7QStringP5QSizeRKS3_ @ 1704 NONAME + _ZN25QDeclarativeImageProviderC1ENS_9ImageTypeE @ 1705 NONAME + _ZN25QDeclarativeImageProviderC2ENS_9ImageTypeE @ 1706 NONAME + _ZNK25QDeclarativeImageProvider9imageTypeEv @ 1707 NONAME -- cgit v0.12 From 9f0d39135141e9f048d4cb3647a9e50f3d3db5a1 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Wed, 7 Jul 2010 17:55:04 +0200 Subject: Set QThreads to be process critical automatically on Symbian OS On Symbian OS, a thread is non critical by default - this means if it crashes the process does not automatically terminate, rather it is allowed to handle the crash by itself. Only the main thread is critical by default. Since this is not the behaviour on other platforms, application developers are unlikely to have considered this case - and would need to write symbian specific code to catch the crash. For such advanced users, they can reset the critical flag on the thread once they get control in QThread::run(). By default, a crash in any thread created via the QThread API will now crash the process. Reviewed-by: Iain --- src/corelib/thread/qthread_unix.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index 6b34b5f..d193b2e 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -247,6 +247,14 @@ void *QThreadPrivate::start(void *arg) data->symbian_thread_handle = RThread(); TThreadId threadId = data->symbian_thread_handle.Id(); data->symbian_thread_handle.Open(threadId); + // On symbian, threads other than the main thread are non critical by default + // This means a worker thread can crash without crashing the application - to + // use this feature, we would need to use RThread::Logon in the main thread + // to catch abnormal thread exit and emit the finished signal. + // For the sake of cross platform consistency, we set the thread as process critical + // - advanced users who want the symbian behaviour can change the critical + // attribute of the thread again once the app gains control in run() + User::SetCritical(User::EProcessCritical); #endif pthread_once(¤t_thread_data_once, create_current_thread_data_key); -- cgit v0.12 From 4f8ec542b123399574d2e509fa99f4bd66a34e25 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 8 Jul 2010 11:42:59 +0200 Subject: Add exception barrier to QCertificateRetriever::RunL() This translates stl exceptions into Symbian OS Leaves, to prevent an assertion failure in the active scheduler. Reviewed-by: mread --- src/network/ssl/qsslsocket_openssl.cpp | 11 ++++++++--- src/network/ssl/qsslsocket_openssl_p.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index d7088ee..1d794ae 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -199,7 +199,7 @@ QSslCipher QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(SSL_CIPHER *ciph ciph.d->protocol = QSsl::SslV2; else if (protoString == QLatin1String("TLSv1")) ciph.d->protocol = QSsl::TlsV1; - + if (descriptionList.at(2).startsWith(QLatin1String("Kx="))) ciph.d->keyExchangeMethod = descriptionList.at(2).mid(3); if (descriptionList.at(3).startsWith(QLatin1String("Au="))) @@ -367,7 +367,7 @@ init_context: // Set verification depth. if (configuration.peerVerifyDepth != 0) q_SSL_CTX_set_verify_depth(ctx, configuration.peerVerifyDepth); - + // Create and initialize SSL session if (!(ssl = q_SSL_new(ctx))) { // ### Bad error code @@ -616,6 +616,11 @@ void QCertificateRetriever::retrieveNextCertificate() void QCertificateRetriever::RunL() { + QT_TRYCATCH_LEAVING(run()); +} + +void QCertificateRetriever::run() +{ switch (state) { case Initializing: list(); @@ -818,7 +823,7 @@ void QSslSocketBackendPrivate::transmit() bool transmitting; do { transmitting = false; - + // If the connection is secure, we can transfer data from the write // buffer (in plain text) to the write BIO through SSL_write. if (connectionEncrypted && !writeBuffer.isEmpty()) { diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h index e41320d..987dfae 100644 --- a/src/network/ssl/qsslsocket_openssl_p.h +++ b/src/network/ssl/qsslsocket_openssl_p.h @@ -161,6 +161,7 @@ private: virtual void RunL(); virtual void DoCancel(); + void run(); void list(); void retrieveNextCertificate(); -- cgit v0.12 From 6d5655089fa4e2231a1a8edc98ecbb6b29e344e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 5 Jul 2010 17:38:51 +0200 Subject: Add three new style-hints to QFont to match CSS' generic font families The defaults were chosen to match major web browsers. See: http://xhva.net/log/?p=160 Reviewed-by: Simon Hausmann --- src/gui/text/qfont.cpp | 9 +++++++++ src/gui/text/qfont.h | 5 ++++- src/gui/text/qfont_mac.cpp | 6 ++++++ src/gui/text/qfont_qws.cpp | 1 + src/gui/text/qfont_win.cpp | 5 +++++ src/gui/text/qfont_x11.cpp | 9 +++++++++ 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp index c229242..3fe98e1 100644 --- a/src/gui/text/qfont.cpp +++ b/src/gui/text/qfont.cpp @@ -1266,6 +1266,15 @@ QFont::StyleHint QFont::styleHint() const \value OldEnglish the font matcher prefers decorative fonts. \value Decorative is a synonym for \c OldEnglish. + \value Monospace the font matcher prefers fonts that map to the + CSS generic font-family 'monospace'. + + \value Fantasy the font matcher prefers fonts that map to the + CSS generic font-family 'fantasy'. + + \value Cursive the font matcher prefers fonts that map to the + CSS generic font-family 'cursive'. + \value System the font matcher prefers system fonts. */ diff --git a/src/gui/text/qfont.h b/src/gui/text/qfont.h index 6f62424..2cc41e1 100644 --- a/src/gui/text/qfont.h +++ b/src/gui/text/qfont.h @@ -72,7 +72,10 @@ public: Courier, TypeWriter = Courier, OldEnglish, Decorative = OldEnglish, System, - AnyStyle + AnyStyle, + Cursive, + Monospace, + Fantasy }; enum StyleStrategy { diff --git a/src/gui/text/qfont_mac.cpp b/src/gui/text/qfont_mac.cpp index 93985ab..0bc8ca2 100644 --- a/src/gui/text/qfont_mac.cpp +++ b/src/gui/text/qfont_mac.cpp @@ -136,8 +136,14 @@ QString QFont::defaultFamily() const return QString::fromLatin1("Times New Roman"); case QFont::Courier: return QString::fromLatin1("Courier New"); + case QFont::Monospace: + return QString::fromLatin1("Courier"); case QFont::Decorative: return QString::fromLatin1("Bookman Old Style"); + case QFont::Cursive: + return QString::fromLatin1("Apple Chancery"); + case QFont::Fantasy: + return QString::fromLatin1("Papyrus"); case QFont::Helvetica: case QFont::System: default: diff --git a/src/gui/text/qfont_qws.cpp b/src/gui/text/qfont_qws.cpp index 51af1e1..72f8c37 100644 --- a/src/gui/text/qfont_qws.cpp +++ b/src/gui/text/qfont_qws.cpp @@ -108,6 +108,7 @@ QString QFont::defaultFamily() const case QFont::Times: return QString::fromLatin1("times"); case QFont::Courier: + case QFont::Monospace: return QString::fromLatin1("courier"); case QFont::Decorative: return QString::fromLatin1("old english"); diff --git a/src/gui/text/qfont_win.cpp b/src/gui/text/qfont_win.cpp index a9610f7..fa45ae1 100644 --- a/src/gui/text/qfont_win.cpp +++ b/src/gui/text/qfont_win.cpp @@ -148,9 +148,14 @@ QString QFont::defaultFamily() const case QFont::Times: return QString::fromLatin1("Times New Roman"); case QFont::Courier: + case QFont::Monospace: return QString::fromLatin1("Courier New"); case QFont::Decorative: return QString::fromLatin1("Bookman Old Style"); + case QFont::Cursive: + return QString::fromLatin1("Comic Sans MS"); + case QFont::Fantasy: + return QString::fromLatin1("Impact"); case QFont::Helvetica: return QString::fromLatin1("Arial"); case QFont::System: diff --git a/src/gui/text/qfont_x11.cpp b/src/gui/text/qfont_x11.cpp index 39127dc..92e2326 100644 --- a/src/gui/text/qfont_x11.cpp +++ b/src/gui/text/qfont_x11.cpp @@ -281,6 +281,15 @@ QString QFont::defaultFamily() const case QFont::Courier: return QString::fromLatin1("Courier"); + case QFont::Monospace: + return QString::fromLatin1("Courier New"); + + case QFont::Cursive: + return QString::fromLatin1("Comic Sans MS"); + + case QFont::Fantasy: + return QString::fromLatin1("Impact"); + case QFont::Decorative: return QString::fromLatin1("Old English"); -- cgit v0.12 From 2ab84f72671013380d397afe2bb407823446516c Mon Sep 17 00:00:00 2001 From: Andreas Aardal Hanssen Date: Thu, 8 Jul 2010 10:43:50 +0200 Subject: Fix subfocus when reparenting panels. When reparenting an item into another, QGraphicsItem will fix the subfocus chain by first removing subfocus from the previous ancestors, and then optionally restoring the subfocus chain to the new ancestors of the reparented item. This allows item trees to be created and assigned a specific focus item before even added to a scene. The QGraphicsItemPrivate::setSubFocus function did not take into account that the root item might be in a different panel than the reparented item, which is the case when reparenting one panel into another. If so, setSubFocus must not mess up the new ancestor panel's sub focus chain. Otherwise (former behavior), the new ancestor panel's focusItem will point to the reparented panel's focus item. This in turn breaks an invariant; one panel's focusItem can never point to an item in another panel. The bundled test case shows this point: Create two panels that each have one child that sets focus. The first panel is added to the scene just to prepare, and verify that it's activated as expected, and its focus child immediately gains input focus. Then we create a second panel, which also has a focus child (but it doesn't have focus as its panel is not active). When we reparent the new panel onto the old one, we expect the new panel to be activated, and the child focus item to gain input focus. However, we also expect the parent panel's focus item to remain intact, so that when we hide the child panel, and the parent panel is reactivated, its original focus item regains focus. Former behavior was that the parent's focus item still pointed to the child panel focus item. This change only has effect when reparenting to or from a panel. Merge-request: 735 Reviewed-by: Yoann Lopes --- src/gui/graphicsview/qgraphicsitem.cpp | 3 ++ tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 49 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 51dc543..848de2c 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -5510,6 +5510,9 @@ void QGraphicsItemPrivate::setSubFocus(QGraphicsItem *rootItem) // Update focus child chain. Stop at panels, or if this item // is hidden, stop at the first item with a visible parent. QGraphicsItem *parent = rootItem ? rootItem : q_ptr; + if (parent->panel() != q_ptr->panel()) + return; + do { // Clear any existing ancestor's subFocusItem. if (parent != q_ptr && parent->d_ptr->subFocusItem) { diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 31a6845..1ae3ecf 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -422,6 +422,7 @@ private slots: void setGraphicsEffect(); void panel(); void addPanelToActiveScene(); + void panelWithFocusItem(); void activate(); void setActivePanelOnInactiveScene(); void activationOnShowHide(); @@ -8416,6 +8417,54 @@ void tst_QGraphicsItem::panel() QVERIFY(!panel1->isActive()); } +void tst_QGraphicsItem::panelWithFocusItem() +{ + QGraphicsScene scene; + QEvent activate(QEvent::WindowActivate); + QApplication::sendEvent(&scene, &activate); + + QGraphicsRectItem *parentPanel = new QGraphicsRectItem; + QGraphicsRectItem *parentPanelFocusItem = new QGraphicsRectItem(parentPanel); + parentPanel->setFlag(QGraphicsItem::ItemIsPanel); + parentPanelFocusItem->setFlag(QGraphicsItem::ItemIsFocusable); + parentPanelFocusItem->setFocus(); + scene.addItem(parentPanel); + + QVERIFY(parentPanel->isActive()); + QVERIFY(parentPanelFocusItem->hasFocus()); + QCOMPARE(parentPanel->focusItem(), (QGraphicsItem *)parentPanelFocusItem); + QCOMPARE(parentPanelFocusItem->focusItem(), (QGraphicsItem *)parentPanelFocusItem); + + QGraphicsRectItem *childPanel = new QGraphicsRectItem; + QGraphicsRectItem *childPanelFocusItem = new QGraphicsRectItem(childPanel); + childPanel->setFlag(QGraphicsItem::ItemIsPanel); + childPanelFocusItem->setFlag(QGraphicsItem::ItemIsFocusable); + childPanelFocusItem->setFocus(); + + QVERIFY(!childPanelFocusItem->hasFocus()); + QCOMPARE(childPanel->focusItem(), (QGraphicsItem *)childPanelFocusItem); + QCOMPARE(childPanelFocusItem->focusItem(), (QGraphicsItem *)childPanelFocusItem); + + childPanel->setParentItem(parentPanel); + + QVERIFY(!parentPanel->isActive()); + QVERIFY(!parentPanelFocusItem->hasFocus()); + QCOMPARE(parentPanel->focusItem(), (QGraphicsItem *)parentPanelFocusItem); + QCOMPARE(parentPanelFocusItem->focusItem(), (QGraphicsItem *)parentPanelFocusItem); + + QVERIFY(childPanel->isActive()); + QVERIFY(childPanelFocusItem->hasFocus()); + QCOMPARE(childPanel->focusItem(), (QGraphicsItem *)childPanelFocusItem); + QCOMPARE(childPanelFocusItem->focusItem(), (QGraphicsItem *)childPanelFocusItem); + + childPanel->hide(); + + QVERIFY(parentPanel->isActive()); + QVERIFY(parentPanelFocusItem->hasFocus()); + QCOMPARE(parentPanel->focusItem(), (QGraphicsItem *)parentPanelFocusItem); + QCOMPARE(parentPanelFocusItem->focusItem(), (QGraphicsItem *)parentPanelFocusItem); +} + void tst_QGraphicsItem::addPanelToActiveScene() { QGraphicsScene scene; -- cgit v0.12 From 627d62c17b29cf5a99252aeff965b4f848d4d171 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 8 Jul 2010 13:40:29 +0200 Subject: Merge tools/runonphone/symbianutils from qtcreator src/shared/symbianutils commit bca434a706c6eb28fe713ea10c857c35e3835f62 Author: Friedemann Kleint Date: Wed Jul 7 14:00:54 2010 +0200 Trk/Launcher: Add infrastructure for reporting crashes. currently used for runonphone only. Initial-patch-by: Shane Kearns commit 9bb67101c5daa42f879f2fcf884277c5fd23bed4 Author: Friedemann Kleint Date: Mon Jul 5 17:14:45 2010 +0200 Trk[TCF]: Proper exit handling commit 52b33a7503866654077b572c1f8005dfc19ed5a6 Author: Friedemann Kleint Date: Wed Jun 30 17:14:57 2010 +0200 Debugger[Trk]: Prepare thread handling. Store threads and cache registers per thread in Snapshot. As Trk does not generate Thread creation/deletion events. try to add threads on the fly if a stop in a new thread id is reported. Remove them in continue. Continue all threads in classic Trk. Pass on state (crash reason) to ThreadData and model. Factor out common code of both adapters to Snapshot/Symbian classes. commit 66e01e881d7cb865338a6a7949f9a085883387c9 Author: Friedemann Kleint Date: Mon Jun 28 16:32:53 2010 +0200 Debugger[TCF-Trk]: Send RemoveExecutables command. commit beba423a16fd0e6e836cd8c26ca30e5167ca56db Author: Friedemann Kleint Date: Fri Jun 25 15:06:30 2010 +0200 Debugger[Trk]: Added TCF experimental adapter. Added adapter to work with TCF over WLAN. Factor out common code for Symbian from TrkAdapter. Improve message logging in TrkGdbAdapter, some cleanup. Added new TcfTrkGdbAdapter based on TcfTrkDevice in symbianutils based on JSON, using QTcpSocket. To be started via special @tcf@ argument. Rubber-stamped-by: hjk create mode 100644 src/shared/symbianutils/json.cpp create mode 100644 src/shared/symbianutils/json.h create mode 100644 src/shared/symbianutils/tcftrkdevice.cpp create mode 100644 src/shared/symbianutils/tcftrkdevice.h create mode 100644 src/shared/symbianutils/tcftrkmessage.cpp create mode 100644 src/shared/symbianutils/tcftrkmessage.h commit 5d5f647f3d9b7a28c605af41a23819b7a24a5814 Author: Tobias Hunger Date: Thu Jun 10 13:12:12 2010 +0200 Fix preprocessor directives * The standard says all preprocessor directives have to start at column 0. commit 6972715a397e8e9a495191a459dcf6db4b75f7a7 Author: Robert Loehning Date: Mon Jun 7 14:58:24 2010 +0200 Symbian/trk: Fixed handling of partial frames Initial-patch-by: Shane Kearns commit a47e06eec946dd2dbb986e614a3c292b91182b95 Author: Robert Loehning Date: Mon Jun 7 14:47:40 2010 +0200 Symbian/trk: Don't try to dereference references commit b6ee94fb5ff652ba22b272a064c2be541b4bcf56 Author: Robert Loehning Date: Mon Jun 7 11:50:38 2010 +0200 Symbian/Trk: Don't try to download a file without respective flag set. Task-number: QTCREATORBUG-1567 Reviewed-by: Friedemann Kleint --- tools/runonphone/symbianutils/json.cpp | 478 ++++++++++++ tools/runonphone/symbianutils/json.h | 137 ++++ tools/runonphone/symbianutils/launcher.cpp | 180 ++++- tools/runonphone/symbianutils/launcher.h | 12 + tools/runonphone/symbianutils/symbianutils.pri | 12 +- tools/runonphone/symbianutils/tcftrkdevice.cpp | 917 ++++++++++++++++++++++++ tools/runonphone/symbianutils/tcftrkdevice.h | 283 ++++++++ tools/runonphone/symbianutils/tcftrkmessage.cpp | 550 ++++++++++++++ tools/runonphone/symbianutils/tcftrkmessage.h | 284 ++++++++ tools/runonphone/symbianutils/trkdevice.cpp | 5 +- tools/runonphone/symbianutils/trkutils.cpp | 143 +++- tools/runonphone/symbianutils/trkutils.h | 31 +- tools/runonphone/symbianutils/trkutils_p.h | 2 +- 13 files changed, 2980 insertions(+), 54 deletions(-) create mode 100644 tools/runonphone/symbianutils/json.cpp create mode 100644 tools/runonphone/symbianutils/json.h create mode 100644 tools/runonphone/symbianutils/tcftrkdevice.cpp create mode 100644 tools/runonphone/symbianutils/tcftrkdevice.h create mode 100644 tools/runonphone/symbianutils/tcftrkmessage.cpp create mode 100644 tools/runonphone/symbianutils/tcftrkmessage.h diff --git a/tools/runonphone/symbianutils/json.cpp b/tools/runonphone/symbianutils/json.cpp new file mode 100644 index 0000000..4171125 --- /dev/null +++ b/tools/runonphone/symbianutils/json.cpp @@ -0,0 +1,478 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "json.h" + +#ifdef TODO_USE_CREATOR +#include +#endif // TODO_USE_CREATOR + +#include +#include +#include +#include + +#include + +//#define DEBUG_JASON +#ifdef DEBUG_JASON +#define JDEBUG(s) qDebug() << s +#else +#define JDEBUG(s) +#endif + +namespace tcftrk { + +static void skipSpaces(const char *&from, const char *to) +{ + while (from != to && isspace(*from)) + ++from; +} + +QTextStream &operator<<(QTextStream &os, const JsonValue &mi) +{ + return os << mi.toString(); +} + +void JsonValue::parsePair(const char *&from, const char *to) +{ + skipSpaces(from, to); + JDEBUG("parsePair: " << QByteArray(from, to - from)); + m_name = parseCString(from, to); + skipSpaces(from, to); + while (from < to && *from != ':') { + JDEBUG("not a colon" << *from); + ++from; + } + ++from; + parseValue(from, to); + skipSpaces(from, to); +} + +QByteArray JsonValue::parseNumber(const char *&from, const char *to) +{ + QByteArray result; + if (from < to && *from == '-') // Leading '-'. + result.append(*from++); + while (from < to && *from >= '0' && *from <= '9') + result.append(*from++); + return result; +} + +QByteArray JsonValue::parseCString(const char *&from, const char *to) +{ + QByteArray result; + JDEBUG("parseCString: " << QByteArray(from, to - from)); + if (*from != '"') { + qDebug() << "JSON Parse Error, double quote expected"; + ++from; // So we don't hang + return QByteArray(); + } + const char *ptr = from; + ++ptr; + while (ptr < to) { + if (*ptr == '"') { + ++ptr; + result = QByteArray(from + 1, ptr - from - 2); + break; + } + if (*ptr == '\\') { + ++ptr; + if (ptr == to) { + qDebug() << "JSON Parse Error, unterminated backslash escape"; + from = ptr; // So we don't hang + return QByteArray(); + } + } + ++ptr; + } + from = ptr; + + int idx = result.indexOf('\\'); + if (idx >= 0) { + char *dst = result.data() + idx; + const char *src = dst + 1, *end = result.data() + result.length(); + do { + char c = *src++; + switch (c) { + case 'a': *dst++ = '\a'; break; + case 'b': *dst++ = '\b'; break; + case 'f': *dst++ = '\f'; break; + case 'n': *dst++ = '\n'; break; + case 'r': *dst++ = '\r'; break; + case 't': *dst++ = '\t'; break; + case 'v': *dst++ = '\v'; break; + case '"': *dst++ = '"'; break; + case '\\': *dst++ = '\\'; break; + default: + { + int chars = 0; + uchar prod = 0; + forever { + if (c < '0' || c > '7') { + --src; + break; + } + prod = prod * 8 + c - '0'; + if (++chars == 3 || src == end) + break; + c = *src++; + } + if (!chars) { + qDebug() << "JSON Parse Error, unrecognized backslash escape"; + return QByteArray(); + } + *dst++ = prod; + } + } + while (src != end) { + char c = *src++; + if (c == '\\') + break; + *dst++ = c; + } + } while (src != end); + *dst = 0; + result.truncate(dst - result.data()); + } + + JDEBUG("parseCString, got " << result); + return result; +} + + + +void JsonValue::parseValue(const char *&from, const char *to) +{ + JDEBUG("parseValue: " << QByteArray(from, to - from)); + switch (*from) { + case '{': + parseObject(from, to); + break; + case 't': + if (to - from >= 4 && qstrncmp(from, "true", 4) == 0) { + m_data = QByteArray(from, 4); + from += m_data.size(); + m_type = Boolean; + } + break; + case 'f': + if (to - from >= 5 && qstrncmp(from, "false", 5) == 0) { + m_data = QByteArray(from, 5); + from += m_data.size(); + m_type = Boolean; + } + break; + case 'n': + if (to - from >= 4 && qstrncmp(from, "null", 4) == 0) { + m_data = QByteArray(from, 4); + from += m_data.size(); + m_type = NullObject; + } + break; + case '[': + parseArray(from, to); + break; + case '"': + m_type = String; + m_data = parseCString(from, to); + break; + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case '-': + m_type = Number; + m_data = parseNumber(from, to); + default: + break; + } +} + +void JsonValue::parseObject(const char *&from, const char *to) +{ + JDEBUG("parseObject: " << QByteArray(from, to - from)); +#ifdef TODO_USE_CREATOR + QTC_ASSERT(*from == '{', /**/); +#endif + ++from; + m_type = Object; + while (from < to) { + if (*from == '}') { + ++from; + break; + } + JsonValue child; + child.parsePair(from, to); + if (!child.isValid()) + return; + m_children += child; + if (*from == ',') + ++from; + } +} + +void JsonValue::parseArray(const char *&from, const char *to) +{ + JDEBUG("parseArray: " << QByteArray(from, to - from)); +#ifdef TODO_USE_CREATOR + QTC_ASSERT(*from == '[', /**/); +#endif + ++from; + m_type = Array; + while (from < to) { + if (*from == ']') { + ++from; + break; + } + JsonValue child; + child.parseValue(from, to); + if (child.isValid()) + m_children += child; + if (*from == ',') + ++from; + } +} + +void JsonValue::setStreamOutput(const QByteArray &name, const QByteArray &content) +{ + if (content.isEmpty()) + return; + JsonValue child; + child.m_type = String; + child.m_name = name; + child.m_data = content; + m_children += child; + if (m_type == Invalid) + m_type = Object; +} + +static QByteArray ind(int indent) +{ + return QByteArray(2 * indent, ' '); +} + +void JsonValue::dumpChildren(QByteArray * str, bool multiline, int indent) const +{ + for (int i = 0; i < m_children.size(); ++i) { + if (i != 0) { + *str += ','; + if (multiline) + *str += '\n'; + } + if (multiline) + *str += ind(indent); + *str += m_children.at(i).toString(multiline, indent); + } +} + +class MyString : public QString { +public: + ushort at(int i) const { return constData()[i].unicode(); } +}; + +template +inline ST escapeCStringTpl(const ST &ba) +{ + ST ret; + ret.reserve(ba.length() * 2); + for (int i = 0; i < ba.length(); ++i) { + CT c = ba.at(i); + switch (c) { + case '\\': ret += "\\\\"; break; + case '\a': ret += "\\a"; break; + case '\b': ret += "\\b"; break; + case '\f': ret += "\\f"; break; + case '\n': ret += "\\n"; break; + case '\r': ret += "\\r"; break; + case '\t': ret += "\\t"; break; + case '\v': ret += "\\v"; break; + case '"': ret += "\\\""; break; + default: + if (c < 32 || c == 127) { + ret += '\\'; + ret += '0' + (c >> 6); + ret += '0' + ((c >> 3) & 7); + ret += '0' + (c & 7); + } else { + ret += c; + } + } + } + return ret; +} + +QString JsonValue::escapeCString(const QString &ba) +{ + return escapeCStringTpl(static_cast(ba)); +} + +QByteArray JsonValue::escapeCString(const QByteArray &ba) +{ + return escapeCStringTpl(ba); +} + +QByteArray JsonValue::toString(bool multiline, int indent) const +{ + QByteArray result; + switch (m_type) { + case Invalid: + if (multiline) + result += ind(indent) + "Invalid\n"; + else + result += "Invalid"; + break; + case String: + if (!m_name.isEmpty()) + result += m_name + "="; + result += '"' + escapeCString(m_data) + '"'; + break; + case Number: + if (!m_name.isEmpty()) + result += '"' + m_name + "\":"; + result += m_data; + break; + case Boolean: + case NullObject: + if (!m_name.isEmpty()) + result += '"' + m_name + "\":"; + result += m_data; + break; + case Object: + if (!m_name.isEmpty()) + result += m_name + '='; + if (multiline) { + result += "{\n"; + dumpChildren(&result, multiline, indent + 1); + result += '\n' + ind(indent) + "}"; + } else { + result += "{"; + dumpChildren(&result, multiline, indent + 1); + result += "}"; + } + break; + case Array: + if (!m_name.isEmpty()) + result += m_name + "="; + if (multiline) { + result += "[\n"; + dumpChildren(&result, multiline, indent + 1); + result += '\n' + ind(indent) + "]"; + } else { + result += "["; + dumpChildren(&result, multiline, indent + 1); + result += "]"; + } + break; + } + return result; +} + +void JsonValue::fromString(const QByteArray &ba) +{ + const char *from = ba.constBegin(); + const char *to = ba.constEnd(); + parseValue(from, to); +} + +JsonValue JsonValue::findChild(const char *name) const +{ + for (int i = 0; i < m_children.size(); ++i) + if (m_children.at(i).m_name == name) + return m_children.at(i); + return JsonValue(); +} + +void JsonInputStream::appendCString(const char *s) +{ + m_target.append('"'); + for (const char *p = s; *p; p++) { + if (*p == '"' || *p == '\\') + m_target.append('\\'); + m_target.append(*p); + } + m_target.append('"'); +} + +void JsonInputStream::appendString(const QString &in) +{ + if (in.isEmpty()) { + m_target.append("\"\""); + return; + } + + const QChar doubleQuote('"'); + const QChar backSlash('\\'); + QString rc; + const int inSize = in.size(); + rc.reserve(in.size() + 5); + rc.append(doubleQuote); + for (int i = 0; i < inSize; i++) { + const QChar c = in.at(i); + if (c == doubleQuote || c == backSlash) + rc.append(backSlash); + rc.append(c); + } + rc.append(doubleQuote); + m_target.append(rc.toUtf8()); + return; +} + +JsonInputStream &JsonInputStream::operator<<(const QStringList &in) +{ + m_target.append('['); + const int count = in.size(); + for (int i = 0 ; i < count; i++) { + if (i) + m_target.append(','); + appendString(in.at(i)); + } + m_target.append(']'); + return *this; +} + +JsonInputStream &JsonInputStream::operator<<(const QVector &ba) +{ + m_target.append('['); + const int count = ba.size(); + for (int i = 0 ; i < count; i++) { + if (i) + m_target.append(','); + appendCString(ba.at(i).constData()); + } + m_target.append(']'); + return *this; +} + +JsonInputStream &JsonInputStream::operator<<(bool b) +{ + m_target.append(b ? "true" : "false"); + return *this; +} + +} // namespace tcftrk + diff --git a/tools/runonphone/symbianutils/json.h b/tools/runonphone/symbianutils/json.h new file mode 100644 index 0000000..ef574bd --- /dev/null +++ b/tools/runonphone/symbianutils/json.h @@ -0,0 +1,137 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef SYMBIANUTILS_JSON_H +#define SYMBIANUTILS_JSON_H + +#include "symbianutils_global.h" + +#include +#include +#include + +namespace tcftrk { + +class SYMBIANUTILS_EXPORT JsonValue +{ +public: + JsonValue() : m_type(Invalid) {} + explicit JsonValue(const QByteArray &str) { fromString(str); } + + QByteArray m_name; + QByteArray m_data; + QList m_children; + + enum Type { + Invalid, + String, + Number, + Boolean, + Object, + NullObject, + Array, + }; + + Type m_type; + + inline Type type() const { return m_type; } + inline QByteArray name() const { return m_name; } + inline bool hasName(const char *name) const { return m_name == name; } + + inline bool isValid() const { return m_type != Invalid; } + inline bool isNumber() const { return m_type == Number; } + inline bool isString() const { return m_type == String; } + inline bool isObject() const { return m_type == Object; } + inline bool isArray() const { return m_type == Array; } + + + inline QByteArray data() const { return m_data; } + inline const QList &children() const { return m_children; } + inline int childCount() const { return m_children.size(); } + + const JsonValue &childAt(int index) const { return m_children[index]; } + JsonValue &childAt(int index) { return m_children[index]; } + JsonValue findChild(const char *name) const; + + QByteArray toString(bool multiline = false, int indent = 0) const; + void fromString(const QByteArray &str); + void setStreamOutput(const QByteArray &name, const QByteArray &content); + +private: + static QByteArray parseCString(const char *&from, const char *to); + static QByteArray parseNumber(const char *&from, const char *to); + static QByteArray escapeCString(const QByteArray &ba); + static QString escapeCString(const QString &ba); + void parsePair(const char *&from, const char *to); + void parseValue(const char *&from, const char *to); + void parseObject(const char *&from, const char *to); + void parseArray(const char *&from, const char *to); + + void dumpChildren(QByteArray *str, bool multiline, int indent) const; +}; + +/* Thin wrapper around QByteArray for formatting JSON input. Use as in: + * JsonInputStream(byteArray) << '{' << "bla" << ':' << "blup" << '}'; + * Note that strings get double quotes and JSON-escaping, characters should be + * used for the array/hash delimiters. + * */ +class SYMBIANUTILS_EXPORT JsonInputStream { +public: + explicit JsonInputStream(QByteArray &a) : m_target(a) {} + + JsonInputStream &operator<<(char c) { m_target.append(c); return *this; } + JsonInputStream &operator<<(const char *c) { appendCString(c); return *this; } + JsonInputStream &operator<<(const QByteArray &a) { appendCString(a.constData()); return *this; } + JsonInputStream &operator<<(const QString &c) { appendString(c); return *this; } + + // Format as array + JsonInputStream &operator<<(const QStringList &c); + + // Format as array + JsonInputStream &operator<<(const QVector &ba); + + JsonInputStream &operator<<(bool b); + + JsonInputStream &operator<<(int i) + { m_target.append(QByteArray::number(i)); return *this; } + JsonInputStream &operator<<(unsigned i) + { m_target.append(QByteArray::number(i)); return *this; } + JsonInputStream &operator<<(quint64 i) + { m_target.append(QByteArray::number(i)); return *this; } + +private: + void appendString(const QString &); + void appendCString(const char *c); + + QByteArray &m_target; +}; + +} // namespace tcftrk + +#endif // SYMBIANUTILS_JSON_H diff --git a/tools/runonphone/symbianutils/launcher.cpp b/tools/runonphone/symbianutils/launcher.cpp index ecb067e..ee87480 100644 --- a/tools/runonphone/symbianutils/launcher.cpp +++ b/tools/runonphone/symbianutils/launcher.cpp @@ -58,6 +58,33 @@ namespace trk { +struct CrashReportState { + CrashReportState(); + void clear(); + + typedef uint Thread; + typedef QList Threads; + Threads threads; + + QList registers; + QByteArray stack; + uint sp; + uint fetchingStackPID; + uint fetchingStackTID; +}; + +CrashReportState::CrashReportState() +{ + clear(); +} + +void CrashReportState::clear() +{ + threads.clear(); + stack.clear(); + sp = fetchingStackPID = fetchingStackTID = 0; +} + struct LauncherPrivate { struct CopyState { QString sourceFileName; @@ -86,6 +113,7 @@ struct LauncherPrivate { int m_verbose; Launcher::Actions m_startupActions; bool m_closeDevice; + CrashReportState m_crashReportState; }; LauncherPrivate::LauncherPrivate(const TrkDevicePtr &d) : @@ -202,6 +230,7 @@ void Launcher::setCloseDevice(bool c) bool Launcher::startServer(QString *errorMessage) { errorMessage->clear(); + d->m_crashReportState.clear(); if (d->m_verbose) { QString msg; QTextStream str(&msg); @@ -375,7 +404,7 @@ void Launcher::handleResult(const TrkResult &result) logMessage("TEXT TRACE: " + msg); } } else { - logMessage("APPLICATION OUTPUT: " + result.data); + logMessage("APPLICATION OUTPUT: " + stringFromArray(result.data)); msg = result.data; } msg.replace("\r\n", "\n"); @@ -416,49 +445,54 @@ void Launcher::handleResult(const TrkResult &result) // target->host OS notification case TrkNotifyCreated: { // Notify Created - /* - const char *data = result.data.data(); - byte error = result.data.at(0); - byte type = result.data.at(1); // type: 1 byte; for dll item, this value is 2. - uint pid = extractInt(data + 2); // ProcessID: 4 bytes; - uint tid = extractInt(data + 6); //threadID: 4 bytes - uint codeseg = extractInt(data + 10); //code address: 4 bytes; code base address for the library - uint dataseg = extractInt(data + 14); //data address: 4 bytes; data base address for the library - uint len = extractShort(data + 18); //length: 2 bytes; length of the library name string to follow - QByteArray name = result.data.mid(20, len); // name: library name - - logMessage(prefix + "NOTE: LIBRARY LOAD: " + str); - logMessage(prefix + "TOKEN: " + result.token); - logMessage(prefix + "ERROR: " + int(error)); - logMessage(prefix + "TYPE: " + int(type)); - logMessage(prefix + "PID: " + pid); - logMessage(prefix + "TID: " + tid); - logMessage(prefix + "CODE: " + codeseg); - logMessage(prefix + "DATA: " + dataseg); - logMessage(prefix + "LEN: " + len); - logMessage(prefix + "NAME: " + name); - */ if (result.data.size() < 10) break; + const char *data = result.data.constData(); + const byte error = result.data.at(0); + Q_UNUSED(error) + const byte type = result.data.at(1); // type: 1 byte; for dll item, this value is 2. + const uint tid = extractInt(data + 6); //threadID: 4 bytes + Q_UNUSED(tid) + if (type == kDSOSDLLItem && result.data.size() >=20) { + const Library lib = Library(result); + d->m_session.libraries.push_back(lib); + emit libraryLoaded(lib); + } QByteArray ba; ba.append(result.data.mid(2, 8)); d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE"); - //d->m_device->sendTrkAck(result.token) break; } case TrkNotifyDeleted: { // NotifyDeleted const ushort itemType = (unsigned char)result.data.at(1); - const ushort len = result.data.size() > 12 ? extractShort(result.data.data() + 10) : ushort(0); + const uint pid = result.data.size() >= 6 ? extractShort(result.data.constData() + 2) : 0; + const uint tid = result.data.size() >= 10 ? extractShort(result.data.constData() + 6) : 0; + Q_UNUSED(tid) + const ushort len = result.data.size() > 12 ? extractShort(result.data.constData() + 10) : ushort(0); const QString name = len ? QString::fromAscii(result.data.mid(12, len)) : QString(); logMessage(QString::fromLatin1("%1 %2 UNLOAD: %3"). arg(QString::fromAscii(prefix)).arg(itemType ? QLatin1String("LIB") : QLatin1String("PROCESS")). arg(name)); d->m_device->sendTrkAck(result.token); - if (itemType == 0 // process + if (itemType == kDSOSProcessItem // process && result.data.size() >= 10 && d->m_session.pid == extractInt(result.data.data() + 6)) { - copyFileFromRemote(); + if (d->m_startupActions & ActionDownload) + copyFileFromRemote(); + else + disconnectTrk(); + } + else if (itemType == kDSOSDLLItem && len) { + // Remove libraries of process. + for (QList::iterator it = d->m_session.libraries.begin(); it != d->m_session.libraries.end(); ) { + if ((*it).pid == pid && (*it).name == name) { + emit libraryUnloaded(*it); + it = d->m_session.libraries.erase(it); + } else { + ++it; + } + } } break; } @@ -705,6 +739,15 @@ void Launcher::handleCreateProcess(const TrkResult &result) logMessage(msg); } emit applicationRunning(d->m_session.pid); + //create a "library" entry for the executable which launched the process + Library lib; + lib.pid = d->m_session.pid; + lib.codeseg = d->m_session.codeseg; + lib.dataseg = d->m_session.dataseg; + lib.name = d->m_fileName.toUtf8(); + d->m_session.libraries << lib; + emit libraryLoaded(lib); + QByteArray ba; appendInt(&ba, d->m_session.pid); appendInt(&ba, d->m_session.tid); @@ -856,6 +899,30 @@ QByteArray Launcher::startProcessMessage(const QString &executable, return ba; } +QByteArray Launcher::readMemoryMessage(uint pid, uint tid, uint from, uint len) +{ + QByteArray ba; + ba.reserve(11); + ba.append(char(0x8)); // Options, FIXME: why? + appendShort(&ba, len); + appendInt(&ba, from); + appendInt(&ba, pid); + appendInt(&ba, tid); + return ba; +} + +QByteArray Launcher::readRegistersMessage(uint pid, uint tid) +{ + QByteArray ba; + ba.reserve(15); + ba.append(char(0)); // Register set, only 0 supported + appendShort(&ba, 0); //R0 + appendShort(&ba, 16); // last register CPSR + appendInt(&ba, pid); + appendInt(&ba, tid); + return ba; +} + void Launcher::startInferiorIfNeeded() { emit startingApplication(); @@ -907,4 +974,63 @@ void Launcher::releaseToDeviceManager(Launcher *launcher) sdm->releaseDevice(launcher->trkServerName()); } +void Launcher::getRegistersAndCallStack(uint pid, uint tid) +{ + d->m_device->sendTrkMessage(TrkReadRegisters, + TrkCallback(this, &Launcher::handleReadRegisters), + Launcher::readRegistersMessage(pid, tid)); + d->m_crashReportState.fetchingStackPID = pid; + d->m_crashReportState.fetchingStackTID = tid; +} + +void Launcher::handleReadRegisters(const TrkResult &result) +{ + if(result.errorCode() || result.data.size() < (17*4)) { + terminate(); + return; + } + const char* data = result.data.constData() + 1; + d->m_crashReportState.registers.clear(); + d->m_crashReportState.stack.clear(); + for (int i=0;i<17;i++) { + uint r = extractInt(data); + data += 4; + d->m_crashReportState.registers.append(r); + } + d->m_crashReportState.sp = d->m_crashReportState.registers.at(13); + + const ushort len = 1024 - (d->m_crashReportState.sp % 1024); //read to 1k boundary first + const QByteArray ba = Launcher::readMemoryMessage(d->m_crashReportState.fetchingStackPID, + d->m_crashReportState.fetchingStackTID, + d->m_crashReportState.sp, + len); + d->m_device->sendTrkMessage(TrkReadMemory, TrkCallback(this, &Launcher::handleReadStack), ba); + d->m_crashReportState.sp += len; +} + +void Launcher::handleReadStack(const TrkResult &result) +{ + if (result.errorCode()) { + //error implies memory fault when reaching end of stack + emit registersAndCallStackReadComplete(d->m_crashReportState.registers, d->m_crashReportState.stack); + return; + } + + const uint len = extractShort(result.data.constData() + 1); + d->m_crashReportState.stack.append(result.data.mid(3, len)); + + if (d->m_crashReportState.sp - d->m_crashReportState.registers.at(13) > 0x10000) { + //read enough stack, stop here + emit registersAndCallStackReadComplete(d->m_crashReportState.registers, d->m_crashReportState.stack); + return; + } + //read 1k more + const QByteArray ba = Launcher::readMemoryMessage(d->m_crashReportState.fetchingStackPID, + d->m_crashReportState.fetchingStackTID, + d->m_crashReportState.sp, + 1024); + d->m_device->sendTrkMessage(TrkReadMemory, TrkCallback(this, &Launcher::handleReadStack), ba); + d->m_crashReportState.sp += 1024; +} + } // namespace trk diff --git a/tools/runonphone/symbianutils/launcher.h b/tools/runonphone/symbianutils/launcher.h index 6db69d0..230a122 100644 --- a/tools/runonphone/symbianutils/launcher.h +++ b/tools/runonphone/symbianutils/launcher.h @@ -43,6 +43,7 @@ #define LAUNCHER_H #include "trkdevice.h" +#include "trkutils.h" #include #include @@ -122,6 +123,9 @@ public: // Create Trk message to start a process. static QByteArray startProcessMessage(const QString &executable, const QStringList &arguments); + // Create Trk message to read memory + static QByteArray readMemoryMessage(uint pid, uint tid, uint from, uint len); + static QByteArray readRegistersMessage(uint pid, uint tid); // Parse a TrkNotifyStopped message static bool parseNotifyStopped(const QByteArray &a, uint *pid, uint *tid, uint *address, @@ -149,12 +153,18 @@ signals: void copyProgress(int percent); void stateChanged(int); void processStopped(uint pc, uint pid, uint tid, const QString& reason); + void processResumed(uint pid, uint tid); + void libraryLoaded(const trk::Library &lib); + void libraryUnloaded(const trk::Library &lib); + void registersAndCallStackReadComplete(const QList& registers, const QByteArray& stack); // Emitted by the destructor, for releasing devices of SymbianDeviceManager by name void destroyed(const QString &serverName); public slots: void terminate(); void resumeProcess(uint pid, uint tid); + //can be used to obtain traceback after a breakpoint / exception + void getRegistersAndCallStack(uint pid, uint tid); private slots: void handleResult(const trk::TrkResult &data); @@ -182,6 +192,8 @@ private: void handleStop(const TrkResult &result); void handleSupportMask(const TrkResult &result); void handleTrkVersion(const TrkResult &result); + void handleReadRegisters(const TrkResult &result); + void handleReadStack(const TrkResult &result); void copyFileToRemote(); void copyFileFromRemote(); diff --git a/tools/runonphone/symbianutils/symbianutils.pri b/tools/runonphone/symbianutils/symbianutils.pri index 6309517..f07e494 100644 --- a/tools/runonphone/symbianutils/symbianutils.pri +++ b/tools/runonphone/symbianutils/symbianutils.pri @@ -1,5 +1,7 @@ INCLUDEPATH *= $$PWD +QT += network + # Input HEADERS += $$PWD/symbianutils_global.h \ $$PWD/callback.h \ @@ -9,14 +11,20 @@ HEADERS += $$PWD/symbianutils_global.h \ $$PWD/launcher.h \ $$PWD/bluetoothlistener.h \ $$PWD/communicationstarter.h \ - $$PWD/symbiandevicemanager.h + $$PWD/symbiandevicemanager.h \ + $$PWD/tcftrkdevice.h \ + $$PWD/tcftrkmessage.h \ + $$PWD/json.h SOURCES += $$PWD/trkutils.cpp \ $$PWD/trkdevice.cpp \ $$PWD/launcher.cpp \ $$PWD/bluetoothlistener.cpp \ $$PWD/communicationstarter.cpp \ - $$PWD/symbiandevicemanager.cpp + $$PWD/symbiandevicemanager.cpp \ + $$PWD/tcftrkdevice.cpp \ + $$PWD/tcftrkmessage.cpp \ + $$PWD/json.cpp # Tests/trklauncher is a console application contains(QT, gui) { diff --git a/tools/runonphone/symbianutils/tcftrkdevice.cpp b/tools/runonphone/symbianutils/tcftrkdevice.cpp new file mode 100644 index 0000000..723d5e9 --- /dev/null +++ b/tools/runonphone/symbianutils/tcftrkdevice.cpp @@ -0,0 +1,917 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "tcftrkdevice.h" +#include "json.h" + +#include +#include +#include +#include +#include +#include +#include + +enum { debug = 0 }; + +static const char messageTerminatorC[] = "\003\001"; + +namespace tcftrk { +// ------------- TcfTrkCommandError + +TcfTrkCommandError::TcfTrkCommandError() : timeMS(0), code(0), alternativeCode(0) +{ +} + +void TcfTrkCommandError::clear() +{ + timeMS = 0; + code = alternativeCode = 0; + format.clear(); + alternativeOrganization.clear(); +} + +void TcfTrkCommandError::write(QTextStream &str) const +{ + if (timeMS) { + const QDateTime time(QDate(1970, 1, 1)); + str << time.addMSecs(timeMS).toString(Qt::ISODate) << ": Error code: " << code + << " '" << format << '\''; + if (!alternativeOrganization.isEmpty()) + str << " ('" << alternativeOrganization << "', code: " << alternativeCode << ')'; + } else{ + str << ""; + } +} + +QString TcfTrkCommandError::toString() const +{ + QString rc; + QTextStream str(&rc); + write(str); + return rc; +} + +/* {"Time":1277459762255,"Code":1,"AltCode":-6,"AltOrg":"POSIX","Format":"Unknown error: -6"} */ +bool TcfTrkCommandError::parse(const QVector &values) +{ + // Parse an arbitrary hash (that could as well be a command response) + // and check for error elements. + unsigned errorKeyCount = 0; + clear(); + do { + if (values.isEmpty() || values.front().type() != JsonValue::Object) + break; + foreach (const JsonValue &c, values.front().children()) { + if (c.name() == "Time") { + timeMS = c.data().toULongLong(); + errorKeyCount++; + } else if (c.name() == "Code") { + code = c.data().toInt(); + errorKeyCount++; + } else if (c.name() == "Format") { + format = c.data(); + errorKeyCount++; + } else if (c.name() == "AltCode") { + alternativeCode = c.data().toInt(); + errorKeyCount++; + } else if (c.name() == "AltOrg") { + alternativeOrganization = c.data(); + errorKeyCount++; + } + } + } while (false); + const bool errorFound = errorKeyCount >= 2u; // Should be at least 'Time', 'Code'. + if (!errorFound) + clear(); + if (debug) { + qDebug() << "TcfTrkCommandError::parse: Found error: " << errorFound; + if (!values.isEmpty()) + qDebug() << values.front().toString(); + } + return errorFound; +} + +// ------------ TcfTrkCommandResult + +TcfTrkCommandResult::TcfTrkCommandResult(Type t) : + type(t), service(LocatorService) +{ +} + +TcfTrkCommandResult::TcfTrkCommandResult(char typeChar, Services s, + const QByteArray &r, + const QVector &v, + const QVariant &ck) : + type(FailReply), service(s), request(r), values(v), cookie(ck) +{ + switch (typeChar) { + case 'N': + type = FailReply; + break; + case 'P': + type = ProgressReply; + break; + case 'R': + type = commandError.parse(values) ? CommandErrorReply : SuccessReply; + break; + default: + qWarning("Unknown TCF reply type '%c'", typeChar); + } +} + +QString TcfTrkCommandResult::errorString() const +{ + QString rc; + QTextStream str(&rc); + + switch (type) { + case SuccessReply: + case ProgressReply: + str << ""; + return rc; + case FailReply: + str << "NAK"; + case CommandErrorReply: + commandError.write(str); + break; + } + // Append the failed command for reference + str << " (Command was: '"; + QByteArray printableRequest = request; + printableRequest.replace('\0', '|'); + str << printableRequest << "')"; + return rc; +} + +QString TcfTrkCommandResult::toString() const +{ + QString rc; + QTextStream str(&rc); + str << "Command answer "; + switch (type) { + case SuccessReply: + str << "[success]"; + break; + case CommandErrorReply: + str << "[command error]"; + break; + case FailReply: + str << "[fail (NAK)]"; + break; + case ProgressReply: + str << "[progress]"; + break; + } + str << ", " << values.size() << " values(s) to request: '"; + QByteArray printableRequest = request; + printableRequest.replace('\0', '|'); + str << printableRequest << "' "; + if (cookie.isValid()) + str << " cookie: " << cookie.toString(); + str << '\n'; + for (int i = 0, count = values.size(); i < count; i++) + str << '#' << i << ' ' << values.at(i).toString() << '\n'; + if (type == CommandErrorReply) + str << "Error: " << errorString(); + return rc; +} + +struct TcfTrkSendQueueEntry +{ + typedef TcfTrkDevice::MessageType MessageType; + + explicit TcfTrkSendQueueEntry(MessageType mt, + int tok, + Services s, + const QByteArray &d, + const TcfTrkCallback &cb= TcfTrkCallback(), + const QVariant &ck = QVariant()) : + messageType(mt), service(s), data(d), token(tok), cookie(ck), callback(cb) {} + + MessageType messageType; + Services service; + QByteArray data; + int token; + QVariant cookie; + TcfTrkCallback callback; +}; + +struct TcfTrkDevicePrivate { + typedef TcfTrkDevice::IODevicePtr IODevicePtr; + typedef QHash TokenWrittenMessageMap; + + TcfTrkDevicePrivate(); + + const QByteArray m_messageTerminator; + + IODevicePtr m_device; + unsigned m_verbose; + QByteArray m_readBuffer; + int m_token; + QQueue m_sendQueue; + TokenWrittenMessageMap m_writtenMessages; + QVector m_registerNames; +}; + +TcfTrkDevicePrivate::TcfTrkDevicePrivate() : + m_messageTerminator(messageTerminatorC), + m_verbose(0), m_token(0) +{ +} + +TcfTrkDevice::TcfTrkDevice(QObject *parent) : + QObject(parent), d(new TcfTrkDevicePrivate) +{ +} + +TcfTrkDevice::~TcfTrkDevice() +{ + delete d; +} + +QVector TcfTrkDevice::registerNames() const +{ + return d->m_registerNames; +} + +void TcfTrkDevice::setRegisterNames(const QVector& n) +{ + d->m_registerNames = n; + if (d->m_verbose) { + QString msg; + QTextStream str(&msg); + const int count = n.size(); + str << "Registers (" << count << "): "; + for (int i = 0; i < count; i++) + str << '#' << i << '=' << n.at(i) << ' '; + emitLogMessage(msg); + } +} + +TcfTrkDevice::IODevicePtr TcfTrkDevice::device() const +{ + return d->m_device; +} + +TcfTrkDevice::IODevicePtr TcfTrkDevice::takeDevice() +{ + const IODevicePtr old = d->m_device; + if (!old.isNull()) { + old.data()->disconnect(this); + d->m_device = IODevicePtr(); + } + d->m_readBuffer.clear(); + d->m_token = 0; + d->m_sendQueue.clear(); + return old; +} + +void TcfTrkDevice::setDevice(const IODevicePtr &dp) +{ + if (dp.data() == d->m_device.data()) + return; + if (dp.isNull()) { + emitLogMessage(QLatin1String("Internal error: Attempt to set NULL device.")); + return; + } + takeDevice(); + d->m_device = dp; + connect(dp.data(), SIGNAL(readyRead()), this, SLOT(slotDeviceReadyRead())); + if (QAbstractSocket *s = qobject_cast(dp.data())) { + connect(s, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(slotDeviceError())); + connect(s, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(slotDeviceSocketStateChanged())); + } +} + +void TcfTrkDevice::slotDeviceError() +{ + const QString message = d->m_device->errorString(); + emitLogMessage(message); + emit error(message); +} + +void TcfTrkDevice::slotDeviceSocketStateChanged() +{ + if (const QAbstractSocket *s = qobject_cast(d->m_device.data())) { + const QAbstractSocket::SocketState st = s->state(); + switch (st) { + case QAbstractSocket::UnconnectedState: + emitLogMessage(QLatin1String("Unconnected")); + break; + case QAbstractSocket::HostLookupState: + emitLogMessage(QLatin1String("HostLookupState")); + break; + case QAbstractSocket::ConnectingState: + emitLogMessage(QLatin1String("Connecting")); + break; + case QAbstractSocket::ConnectedState: + emitLogMessage(QLatin1String("Connected")); + break; + case QAbstractSocket::ClosingState: + emitLogMessage(QLatin1String("Closing")); + break; + default: + emitLogMessage(QString::fromLatin1("State %1").arg(st)); + break; + } + } +} + +static inline QString debugMessage(QByteArray message, const char *prefix = 0) +{ + message.replace('\0', '|'); + const QString messageS = QString::fromLatin1(message); + return prefix ? + (QLatin1String(prefix) + messageS) : messageS; +} + +void TcfTrkDevice::slotDeviceReadyRead() +{ + d->m_readBuffer += d->m_device->readAll(); + // Take complete message off front of readbuffer. + do { + const int messageEndPos = d->m_readBuffer.indexOf(d->m_messageTerminator); + if (messageEndPos == -1) + break; + const QByteArray message = d->m_readBuffer.left(messageEndPos); + if (debug) + qDebug("Read:\n%s", qPrintable(formatData(message))); + if (const int errorCode = parseMessage(message)) { + emitLogMessage(QString::fromLatin1("Parse error %1 for: %2").arg(errorCode).arg(debugMessage(message))); + } + d->m_readBuffer.remove(0, messageEndPos + d->m_messageTerminator.size()); + } while (!d->m_readBuffer.isEmpty()); + checkSendQueue(); // Send off further message +} + +// Split \0-terminated message into tokens, skipping the initial type character +static inline QVector splitMessage(const QByteArray &message) +{ + QVector tokens; + tokens.reserve(7); + const int messageSize = message.size(); + for (int pos = 2; pos < messageSize; ) { + const int nextPos = message.indexOf('\0', pos); + if (nextPos == -1) + break; + tokens.push_back(message.mid(pos, nextPos - pos)); + pos = nextPos + 1; + } + return tokens; +} + +int TcfTrkDevice::parseMessage(const QByteArray &message) +{ + if (d->m_verbose) + emitLogMessage(debugMessage(message, "TCF ->")); + // Special JSON parse error message or protocol format error. + // The port is usually closed after receiving it. + // "\3\2{"Time":1276096098255,"Code":3,"Format": "Protocol format error"}" + if (message.startsWith("\003\002")) { + QByteArray text = message.mid(2); + const QString errorMessage = QString::fromLatin1("Parse error received: %1").arg(QString::fromAscii(text)); + emit error(errorMessage); + return 0; + } + if (message.size() < 4 || message.at(1) != '\0') + return 1; + // Split into tokens + const char type = message.at(0); + const QVector tokens = splitMessage(message); + switch (type) { + case 'E': + return parseTcfEvent(tokens); + case 'R': // Command replies + case 'N': + case 'P': + return parseTcfCommandReply(type, tokens); + default: + emitLogMessage(QString::fromLatin1("Unhandled message type: %1").arg(debugMessage(message))); + return 756; + } + return 0; +} + +int TcfTrkDevice::parseTcfCommandReply(char type, const QVector &tokens) +{ + typedef TcfTrkDevicePrivate::TokenWrittenMessageMap::iterator TokenWrittenMessageMapIterator; + // Find the corresponding entry in the written messages hash. + const int tokenCount = tokens.size(); + if (tokenCount < 1) + return 234; + bool tokenOk; + const int token = tokens.at(0).toInt(&tokenOk); + if (!tokenOk) + return 235; + const TokenWrittenMessageMapIterator it = d->m_writtenMessages.find(token); + if (it == d->m_writtenMessages.end()) { + qWarning("TcfTrkDevice: Internal error: token %d not found for '%s'", + token, qPrintable(joinByteArrays(tokens))); + return 236; + } + // No callback: remove entry from map, happy + if (!it.value().callback) { + d->m_writtenMessages.erase(it); + return 0; + } + // Parse values into JSON + QVector values; + values.reserve(tokenCount); + for (int i = 1; i < tokenCount; i++) { + if (!tokens.at(i).isEmpty()) { // Strange: Empty tokens occur. + const JsonValue value(tokens.at(i)); + if (value.isValid()) { + values.push_back(value); + } else { + qWarning("JSON parse error for reply to command token %d: #%d '%s'", + token, i, tokens.at(i).constData()); + d->m_writtenMessages.erase(it); + return -1; + } + } + } + + // Construct result and invoke callback, remove entry from map. + TcfTrkCallback callback = it.value().callback; + TcfTrkCommandResult result(type, it.value().service, it.value().data, + values, it.value().cookie); + d->m_writtenMessages.erase(it); + callback(result); + return 0; +} + +static const char locatorAnswerC[] = "E\0Locator\0Hello\0[\"Locator\"]"; + +int TcfTrkDevice::parseTcfEvent(const QVector &tokens) +{ + // Event: Ignore the periodical heartbeat event, answer 'Hello', + // emit signal for the rest + if (tokens.size() < 3) + return 433; + const Services service = serviceFromName(tokens.at(0).constData()); + if (service == LocatorService && tokens.at(1) == "peerHeartBeat") + return 0; + QVector values; + for (int i = 2; i < tokens.size(); i++) { + const JsonValue value(tokens.at(i)); + if (!value.isValid()) + return 434; + values.push_back(value); + } + // Parse known events, emit signals + QScopedPointer knownEvent(TcfTrkEvent::parseEvent(service, tokens.at(1), values)); + if (!knownEvent.isNull()) { + // Answer hello event. + if (knownEvent->type() == TcfTrkEvent::LocatorHello) + writeMessage(QByteArray(locatorAnswerC, sizeof(locatorAnswerC))); + emit tcfEvent(*knownEvent); + } + emit genericTcfEvent(service, tokens.at(1), values); + + if (debug || d->m_verbose) { + QString msg; + QTextStream str(&msg); + if (knownEvent.isNull()) { + str << "Event: " << tokens.at(0) << ' ' << tokens.at(1) << '\n'; + foreach(const JsonValue &val, values) + str << " " << val.toString() << '\n'; + } else { + str << knownEvent->toString(); + } + emitLogMessage(msg); + } + + return 0; +} + +unsigned TcfTrkDevice::verbose() const +{ + return d->m_verbose; +} + +void TcfTrkDevice::setVerbose(unsigned v) +{ + d->m_verbose = v; +} + +void TcfTrkDevice::emitLogMessage(const QString &m) +{ + if (debug) + qWarning("%s", qPrintable(m)); + emit logMessage(m); +} + +bool TcfTrkDevice::checkOpen() +{ + if (d->m_device.isNull()) { + emitLogMessage(QLatin1String("Internal error: No device set on TcfTrkDevice.")); + return false; + } + if (!d->m_device->isOpen()) { + emitLogMessage(QLatin1String("Internal error: Device not open in TcfTrkDevice.")); + return false; + } + return true; +} + +void TcfTrkDevice::sendTcfTrkMessage(MessageType mt, Services service, const char *command, + const char *commandParameters, int commandParametersLength, + const TcfTrkCallback &callBack, + const QVariant &cookie) + +{ + if (!checkOpen()) + return; + // Format the message + const int token = d->m_token++; + QByteArray data; + data.reserve(30 + commandParametersLength); + data.append('C'); + data.append('\0'); + data.append(QByteArray::number(token)); + data.append('\0'); + data.append(serviceName(service)); + data.append('\0'); + data.append(command); + data.append('\0'); + if (commandParametersLength) + data.append(commandParameters, commandParametersLength); + const TcfTrkSendQueueEntry entry(mt, token, service, data, callBack, cookie); + d->m_sendQueue.enqueue(entry); + checkSendQueue(); +} + +void TcfTrkDevice::sendTcfTrkMessage(MessageType mt, Services service, const char *command, + const QByteArray &commandParameters, + const TcfTrkCallback &callBack, + const QVariant &cookie) +{ + sendTcfTrkMessage(mt, service, command, commandParameters.constData(), commandParameters.size(), + callBack, cookie); +} + +// Enclose in message frame and write. +void TcfTrkDevice::writeMessage(QByteArray data) +{ + if (!checkOpen()) + return; + + if (d->m_verbose) + emitLogMessage(debugMessage(data, "TCF <-")); + + // Ensure \0-termination which easily gets lost in QByteArray CT. + if (!data.endsWith('\0')) + data.append('\0'); + data += d->m_messageTerminator; + + if (debug > 1) + qDebug("Writing:\n%s", qPrintable(formatData(data))); + + d->m_device->write(data); + if (QAbstractSocket *as = qobject_cast(d->m_device.data())) + as->flush(); +} + +void TcfTrkDevice::checkSendQueue() +{ + // Fire off messages or invoke noops until a message with reply is found + // and an entry to writtenMessages is made. + while (d->m_writtenMessages.empty()) { + if (d->m_sendQueue.isEmpty()) + break; + TcfTrkSendQueueEntry entry = d->m_sendQueue.dequeue(); + switch (entry.messageType) { + case MessageWithReply: + d->m_writtenMessages.insert(entry.token, entry); + writeMessage(entry.data); + break; + case MessageWithoutReply: + writeMessage(entry.data); + break; + case NoopMessage: // Invoke the noop-callback for synchronization + if (entry.callback) { + TcfTrkCommandResult noopResult(TcfTrkCommandResult::SuccessReply); + noopResult.cookie = entry.cookie; + entry.callback(noopResult); + } + break; + } + } +} + +// Fix slashes +static inline QString fixFileName(QString in) +{ + in.replace(QLatin1Char('/'), QLatin1Char('\\')); + return in; +} + +// Start a process (consisting of a non-reply setSettings and start). +void TcfTrkDevice::sendProcessStartCommand(const TcfTrkCallback &callBack, + const QString &binaryIn, + unsigned uid, + QStringList arguments, + QString workingDirectory, + bool debugControl, + const QStringList &additionalLibraries, + const QVariant &cookie) +{ + // Obtain the bin directory, expand by c:/sys/bin if missing + const QChar backSlash('\\'); + int slashPos = binaryIn.lastIndexOf(QLatin1Char('/')); + if (slashPos == -1) + slashPos = binaryIn.lastIndexOf(backSlash); + const QString sysBin = QLatin1String("c:/sys/bin"); + const QString binaryFileName = slashPos == -1 ? binaryIn : binaryIn.mid(slashPos + 1); + const QString binaryDirectory = slashPos == -1 ? sysBin : binaryIn.left(slashPos); + const QString binary = fixFileName(binaryDirectory + QLatin1Char('/') + binaryFileName); + + // Fixup: Does argv[0] convention exist on Symbian? + arguments.push_front(binary); + if (workingDirectory.isEmpty()) + workingDirectory = sysBin; + + // Format settings with empty dummy parameter + QByteArray setData; + JsonInputStream setStr(setData); + setStr << "" << '\0' + << '[' << "exeToLaunch" << ',' << "addExecutables" << ',' << "addLibraries" << ']' + << '\0' << '[' + << binary << ',' + << '{' << binaryFileName << ':' << QString::number(uid, 16) << '}' << ',' + << additionalLibraries + << ']'; + sendTcfTrkMessage(MessageWithoutReply, SettingsService, "set", setData); + + QByteArray startData; + JsonInputStream startStr(startData); + startStr << fixFileName(workingDirectory) + << '\0' << binary << '\0' << arguments << '\0' + << QStringList() << '\0' // Env is an array ["PATH=value"] (non-standard) + << debugControl; + sendTcfTrkMessage(MessageWithReply, ProcessesService, "start", startData, callBack, cookie); +} + +void TcfTrkDevice::sendProcessTerminateCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << id; + sendTcfTrkMessage(MessageWithReply, ProcessesService, "terminate", data, callBack, cookie); +} + +void TcfTrkDevice::sendRunControlTerminateCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << id; + sendTcfTrkMessage(MessageWithReply, RunControlService, "terminate", data, callBack, cookie); +} + +// Non-standard: Remove executable from settings +void TcfTrkDevice::sendSettingsRemoveExecutableCommand(const QString &binaryIn, + unsigned uid, + const QStringList &additionalLibraries, + const QVariant &cookie) +{ + QByteArray setData; + JsonInputStream setStr(setData); + setStr << "" << '\0' + << '[' << "removedExecutables" << ',' << "removedLibraries" << ']' + << '\0' << '[' + << '{' << QFileInfo(binaryIn).fileName() << ':' << QString::number(uid, 16) << '}' << ',' + << additionalLibraries + << ']'; + sendTcfTrkMessage(MessageWithoutReply, SettingsService, "set", setData, TcfTrkCallback(), cookie); +} + +void TcfTrkDevice::sendRunControlResumeCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + RunControlResumeMode mode, + unsigned count, + quint64 rangeStart, + quint64 rangeEnd, + const QVariant &cookie) +{ + QByteArray resumeData; + JsonInputStream str(resumeData); + str << id << '\0' << int(mode) << '\0' << count; + switch (mode) { + case RM_STEP_OVER_RANGE: + case RM_STEP_INTO_RANGE: + case RM_REVERSE_STEP_OVER_RANGE: + case RM_REVERSE_STEP_INTO_RANGE: + str << '\0' << '{' << "RANGE_START" << ':' << rangeStart + << ',' << "RANGE_END" << ':' << rangeEnd << '}'; + break; + default: + break; + } + sendTcfTrkMessage(MessageWithReply, RunControlService, "resume", resumeData, callBack, cookie); +} + +void TcfTrkDevice::sendRunControlSuspendCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << id; + sendTcfTrkMessage(MessageWithReply, RunControlService, "suspend", data, callBack, cookie); +} + +void TcfTrkDevice::sendRunControlResumeCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie) +{ + sendRunControlResumeCommand(callBack, id, RM_RESUME, 1, 0, 0, cookie); +} + +void TcfTrkDevice::sendBreakpointsAddCommand(const TcfTrkCallback &callBack, + const Breakpoint &bp, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << bp; + sendTcfTrkMessage(MessageWithReply, BreakpointsService, "add", data, callBack, cookie); +} + +void TcfTrkDevice::sendBreakpointsRemoveCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie) +{ + sendBreakpointsRemoveCommand(callBack, QVector(1, id), cookie); +} + +void TcfTrkDevice::sendBreakpointsRemoveCommand(const TcfTrkCallback &callBack, + const QVector &ids, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << ids; + sendTcfTrkMessage(MessageWithReply, BreakpointsService, "remove", data, callBack, cookie); +} + +void TcfTrkDevice::sendBreakpointsEnableCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + bool enable, + const QVariant &cookie) +{ + sendBreakpointsEnableCommand(callBack, QVector(1, id), enable, cookie); +} + +void TcfTrkDevice::sendBreakpointsEnableCommand(const TcfTrkCallback &callBack, + const QVector &ids, + bool enable, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << ids; + sendTcfTrkMessage(MessageWithReply, BreakpointsService, + enable ? "enable" : "disable", + data, callBack, cookie); +} + +void TcfTrkDevice::sendMemorySetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + quint64 start, const QByteArray& data, + const QVariant &cookie) +{ + QByteArray getData; + JsonInputStream str(getData); + // start/word size/mode. Mode should ideally be 1 (continue on error?) + str << contextId << '\0' << start << '\0' << 1 << '\0' << data.size() << '\0' << 1 + << '\0' << data.toBase64(); + sendTcfTrkMessage(MessageWithReply, MemoryService, "set", getData, callBack, cookie); +} + +void TcfTrkDevice::sendMemoryGetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + quint64 start, quint64 size, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + // start/word size/mode. Mode should ideally be 1 (continue on error?) + str << contextId << '\0' << start << '\0' << 1 << '\0' << size << '\0' << 1; + sendTcfTrkMessage(MessageWithReply, MemoryService, "get", data, callBack, cookie); +} + +QByteArray TcfTrkDevice::parseMemoryGet(const TcfTrkCommandResult &r) +{ + if (r.type != TcfTrkCommandResult::SuccessReply || r.values.size() < 1) + return QByteArray(); + const JsonValue &memoryV = r.values.front(); + + if (memoryV.type() != JsonValue::String || memoryV.data().size() < 2 + || !memoryV.data().endsWith('=')) + return QByteArray(); + // Catch errors reported as hash: + // R.4."TlVMTA==".{"Time":1276786871255,"Code":1,"AltCode":-38,"AltOrg":"POSIX","Format":"BadDescriptor"} + // Not sure what to make of it. + if (r.values.size() >= 2 && r.values.at(1).type() == JsonValue::Object) + qWarning("Error retrieving memory: %s", r.values.at(1).toString(false).constData()); + // decode + const QByteArray memory = QByteArray::fromBase64(memoryV.data()); + if (memory.isEmpty()) + qWarning("Base64 decoding of %s failed.", memoryV.data().constData()); + if (debug) + qDebug("TcfTrkDevice::parseMemoryGet: received %d bytes", memory.size()); + return memory; +} + +void TcfTrkDevice::sendRegistersGetMCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + const QVector &ids, + const QVariant &cookie) +{ + // TODO: use "Registers" (which uses base64-encoded values) + QByteArray data; + JsonInputStream str(data); + str << contextId << '\0' << ids; + sendTcfTrkMessage(MessageWithReply, SimpleRegistersService, "get", data, callBack, cookie); +} + +void TcfTrkDevice::sendRegistersGetMRangeCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + unsigned start, unsigned count) +{ + const unsigned end = start + count; + if (end > (unsigned)d->m_registerNames.size()) { + qWarning("TcfTrkDevice: No register name set for index %u (size: %d).", end, d->m_registerNames.size()); + return; + } + + QVector ids; + ids.reserve(count); + for (unsigned i = start; i < end; i++) + ids.push_back(d->m_registerNames.at(i)); + sendRegistersGetMCommand(callBack, contextId, ids, QVariant(start)); +} + +// Set register +void TcfTrkDevice::sendRegistersSetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + const QByteArray &id, + unsigned value, + const QVariant &cookie) +{ + // TODO: use "Registers" (which uses base64-encoded values) + QByteArray data; + JsonInputStream str(data); + str << contextId << '\0' << QVector(1, id) + << '\0' << QVector(1, QByteArray::number(value, 16)); + sendTcfTrkMessage(MessageWithReply, SimpleRegistersService, "set", data, callBack, cookie); +} + +// Set register +void TcfTrkDevice::sendRegistersSetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + unsigned registerNumber, + unsigned value, + const QVariant &cookie) +{ + if (registerNumber >= (unsigned)d->m_registerNames.size()) { + qWarning("TcfTrkDevice: No register name set for index %u (size: %d).", registerNumber, d->m_registerNames.size()); + return; + } + sendRegistersSetCommand(callBack, contextId, + d->m_registerNames[registerNumber], + value, cookie); +} + +} // namespace tcftrk diff --git a/tools/runonphone/symbianutils/tcftrkdevice.h b/tools/runonphone/symbianutils/tcftrkdevice.h new file mode 100644 index 0000000..bb4c184 --- /dev/null +++ b/tools/runonphone/symbianutils/tcftrkdevice.h @@ -0,0 +1,283 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef TCFTRKENGINE_H +#define TCFTRKENGINE_H + +#include "symbianutils_global.h" +#include "tcftrkmessage.h" +#include "callback.h" +#include "json.h" + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE +class QIODevice; +class QTextStream; +QT_END_NAMESPACE + +namespace tcftrk { + +struct TcfTrkDevicePrivate; +struct Breakpoint; + +/* Command error handling in TCF: + * 1) 'Severe' errors (JSON format, parameter format): Trk emits a + * nonstandard message (\3\2 error paramaters) and closes the connection. + * 2) Protocol errors: 'N' without error message is returned. + * 3) Errors in command execution: 'R' with a TCF error hash is returned + * (see TcfTrkCommandError). */ + +/* Error code return in 'R' reply to command + * (see top of 'Services' documentation). */ +struct SYMBIANUTILS_EXPORT TcfTrkCommandError { + TcfTrkCommandError(); + void clear(); + operator bool() const { return timeMS != 0; } + QString toString() const; + void write(QTextStream &str) const; + bool parse(const QVector &values); + + quint64 timeMS; // Since 1.1.1970 + int code; + QByteArray format; // message + // 'Alternative' meaning, like altOrg="POSIX"/altCode= + QByteArray alternativeOrganization; + int alternativeCode; +}; + +/* Answer to a Tcf command passed to the callback. */ +struct SYMBIANUTILS_EXPORT TcfTrkCommandResult { + enum Type { + SuccessReply, // 'R' and no error -> all happy. + CommandErrorReply, // 'R' with TcfTrkCommandError received + ProgressReply, // 'P', progress indicator + FailReply // 'N' Protocol NAK, severe error + }; + + explicit TcfTrkCommandResult(Type t = SuccessReply); + explicit TcfTrkCommandResult(char typeChar, Services service, + const QByteArray &request, + const QVector &values, + const QVariant &cookie); + + QString toString() const; + QString errorString() const; + operator bool() const { return type == SuccessReply || type == ProgressReply; } + + Type type; + Services service; + QByteArray request; + TcfTrkCommandError commandError; + QVector values; + QVariant cookie; +}; + +typedef trk::Callback TcfTrkCallback; + +/* TcfTrkDevice: TCF communication helper using an asynchronous QIODevice + * implementing the TCF protocol according to: +http://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/docs/TCF%20Specification.html +http://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/docs/TCF%20Services.html + * Commands can be sent along with callbacks that are passed a + * TcfTrkCommandResult and an opaque QVariant cookie. In addition, events are emitted. +*/ + +class SYMBIANUTILS_EXPORT TcfTrkDevice : public QObject +{ + Q_PROPERTY(unsigned verbose READ verbose WRITE setVerbose) + Q_OBJECT +public: + enum MessageType { MessageWithReply, + MessageWithoutReply, /* Non-standard: "Settings:set" command does not reply */ + NoopMessage }; + + typedef QSharedPointer IODevicePtr; + + explicit TcfTrkDevice(QObject *parent = 0); + virtual ~TcfTrkDevice(); + + unsigned verbose() const; + + // Mapping of register names for indices + QVector registerNames() const; + void setRegisterNames(const QVector& n); + + IODevicePtr device() const; + IODevicePtr takeDevice(); + void setDevice(const IODevicePtr &dp); + + void sendTcfTrkMessage(MessageType mt, Services service, + const char *command, + const char *commandParameters, int commandParametersLength, + const TcfTrkCallback &callBack = TcfTrkCallback(), + const QVariant &cookie = QVariant()); + + void sendTcfTrkMessage(MessageType mt, Services service, const char *command, + const QByteArray &commandParameters, + const TcfTrkCallback &callBack = TcfTrkCallback(), + const QVariant &cookie = QVariant()); + + // Convenience messages: Start a process + void sendProcessStartCommand(const TcfTrkCallback &callBack, + const QString &binary, + unsigned uid, + QStringList arguments = QStringList(), + QString workingDirectory = QString(), + bool debugControl = true, + const QStringList &additionalLibraries = QStringList(), + const QVariant &cookie = QVariant()); + + // Preferred over Processes:Terminate by TCF TRK. + void sendRunControlTerminateCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie = QVariant()); + + void sendProcessTerminateCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie = QVariant()); + + // Non-standard: Remove executable from settings. + // Probably needs to be called after stopping. This command has no response. + void sendSettingsRemoveExecutableCommand(const QString &binaryIn, + unsigned uid, + const QStringList &additionalLibraries = QStringList(), + const QVariant &cookie = QVariant()); + + void sendRunControlSuspendCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie = QVariant()); + + // Resume / Step (see RunControlResumeMode). + void sendRunControlResumeCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + RunControlResumeMode mode, + unsigned count /* = 1, currently ignored. */, + quint64 rangeStart, quint64 rangeEnd, + const QVariant &cookie = QVariant()); + + // Convenience to resume a suspended process + void sendRunControlResumeCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie = QVariant()); + + void sendBreakpointsAddCommand(const TcfTrkCallback &callBack, + const Breakpoint &b, + const QVariant &cookie = QVariant()); + + void sendBreakpointsRemoveCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie = QVariant()); + + void sendBreakpointsRemoveCommand(const TcfTrkCallback &callBack, + const QVector &id, + const QVariant &cookie = QVariant()); + + void sendBreakpointsEnableCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + bool enable, + const QVariant &cookie = QVariant()); + + void sendBreakpointsEnableCommand(const TcfTrkCallback &callBack, + const QVector &id, + bool enable, + const QVariant &cookie = QVariant()); + + + void sendMemoryGetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + quint64 start, quint64 size, + const QVariant &cookie = QVariant()); + + void sendMemorySetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + quint64 start, const QByteArray& data, + const QVariant &cookie = QVariant()); + + // Reply is an array of hexvalues + void sendRegistersGetMCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + const QVector &ids, + const QVariant &cookie = QVariant()); + + // Convenience to get a range of register "R0" .. "R". + // Cookie will be an int containing "start". + void sendRegistersGetMRangeCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + unsigned start, unsigned count); + + // Set register + void sendRegistersSetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + const QByteArray &ids, + unsigned value, + const QVariant &cookie = QVariant()); + // Set register + void sendRegistersSetCommand(const TcfTrkCallback &callBack, + const QByteArray &contextId, + unsigned registerNumber, + unsigned value, + const QVariant &cookie = QVariant()); + + static QByteArray parseMemoryGet(const TcfTrkCommandResult &r); + +signals: + void genericTcfEvent(int service, const QByteArray &name, const QVector &value); + void tcfEvent(const tcftrk::TcfTrkEvent &knownEvent); + + void logMessage(const QString &); + void error(const QString &); + +public slots: + void setVerbose(unsigned v); + +private slots: + void slotDeviceError(); + void slotDeviceSocketStateChanged(); + void slotDeviceReadyRead(); + +private: + bool checkOpen(); + void checkSendQueue(); + void writeMessage(QByteArray data); + void emitLogMessage(const QString &); + int parseMessage(const QByteArray &); + int parseTcfCommandReply(char type, const QVector &tokens); + int parseTcfEvent(const QVector &tokens); + + TcfTrkDevicePrivate *d; +}; + +} // namespace tcftrk + +#endif // TCFTRKENGINE_H diff --git a/tools/runonphone/symbianutils/tcftrkmessage.cpp b/tools/runonphone/symbianutils/tcftrkmessage.cpp new file mode 100644 index 0000000..929bb8d --- /dev/null +++ b/tools/runonphone/symbianutils/tcftrkmessage.cpp @@ -0,0 +1,550 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "tcftrkmessage.h" +#include "json.h" + +#include +#include + +// Names matching the enum +static const char *serviceNamesC[] = +{ "Locator", "RunControl", "Processes", "Memory", "Settings", "Breakpoints", + "Registers", "SimpleRegisters", + "UnknownService"}; + +namespace tcftrk { + +SYMBIANUTILS_EXPORT QString joinByteArrays(const QVector &a, char sep) +{ + QString rc; + const int count = a.size(); + for (int i = 0; i < count; i++) { + if (i) + rc += QLatin1Char(sep); + rc += QString::fromUtf8(a.at(i)); + } + return rc; +} + +static inline bool jsonToBool(const JsonValue& js) +{ + return js.type() == JsonValue::Boolean && js.data() == "true"; +} + +SYMBIANUTILS_EXPORT const char *serviceName(Services s) +{ + return serviceNamesC[s]; +} + +SYMBIANUTILS_EXPORT Services serviceFromName(const char *n) +{ + const int count = sizeof(serviceNamesC)/sizeof(char *); + for (int i = 0; i < count; i++) + if (!qstrcmp(serviceNamesC[i], n)) + return static_cast(i); + return UnknownService; +} + +SYMBIANUTILS_EXPORT QString formatData(const QByteArray &a) +{ + const int columns = 16; + QString rc; + QTextStream str(&rc); + str.setIntegerBase(16); + str.setPadChar(QLatin1Char('0')); + const unsigned char *start = reinterpret_cast(a.constData()); + const unsigned char *end = start + a.size(); + for (const unsigned char *p = start; p < end ; ) { + str << "0x"; + str.setFieldWidth(4); + str << (p - start); + str.setFieldWidth(0); + str << ' '; + QString asc; + int c = 0; + for ( ; c < columns && p < end; c++, p++) { + const unsigned u = *p; + str.setFieldWidth(2); + str << u; + str.setFieldWidth(0); + str << ' '; + switch (u) { + case '\n': + asc += QLatin1String("\\n"); + break; + case '\r': + asc += QLatin1String("\\r"); + break; + case '\t': + asc += QLatin1String("\\t"); + break; + default: + if (u >= 32 && u < 128) { + asc += QLatin1Char(' '); + asc += QLatin1Char(u); + } else { + asc += QLatin1String(" ."); + } + break; + } + } + if (const int remainder = columns - c) + str << QString(3 * remainder, QLatin1Char(' ')); + str << ' ' << asc << '\n'; + } + return rc; +} + +// ----------- RunControlContext +RunControlContext::RunControlContext() : + flags(0), resumeFlags(0) +{ +} + +void RunControlContext::clear() +{ + flags =0; + resumeFlags = 0; + id.clear(); + osid.clear(); + parentId.clear(); +} + +RunControlContext::Type RunControlContext::typeFromTcfId(const QByteArray &id) +{ + // "p12" or "p12.t34"? + return id.contains(".t") ? Thread : Process; +} + +unsigned RunControlContext::processId() const +{ + return processIdFromTcdfId(id); +} + +unsigned RunControlContext::threadId() const +{ + return threadIdFromTcdfId(id); +} + +unsigned RunControlContext::processIdFromTcdfId(const QByteArray &id) +{ + // Cut out process id from "p12" or "p12.t34"? + if (!id.startsWith('p')) + return 0; + const int dotPos = id.indexOf('.'); + const int pLen = dotPos == -1 ? id.size() : dotPos; + return id.mid(1, pLen - 1).toUInt(); +} + +unsigned RunControlContext::threadIdFromTcdfId(const QByteArray &id) +{ + const int tPos = id.indexOf(".t"); + return tPos != -1 ? id.mid(tPos + 2).toUInt() : uint(0); +} + +QByteArray RunControlContext::tcfId(unsigned processId, unsigned threadId /* = 0 */) +{ + QByteArray rc("p"); + rc += QByteArray::number(processId); + if (threadId) { + rc += ".t"; + rc += QByteArray::number(threadId); + } + return rc; +} + +RunControlContext::Type RunControlContext::type() const +{ + return RunControlContext::typeFromTcfId(id); +} + +bool RunControlContext::parse(const JsonValue &val) +{ + clear(); + if (val.type() != JsonValue::Object) + return false; + foreach(const JsonValue &c, val.children()) { + if (c.name() == "ID") { + id = c.data(); + } else if (c.name() == "OSID") { + osid = c.data(); + } else if (c.name() == "ParentID") { + parentId = c.data(); + } else if (c.name() == "IsContainer") { + if (jsonToBool(c)) + flags |= Container; + } else if (c.name() == "CanTerminate") { + if (jsonToBool(c)) + flags |= CanTerminate; + } else if (c.name() == "CanResume") { + resumeFlags = c.data().toUInt(); + } else if (c.name() == "HasState") { + if (jsonToBool(c)) + flags |= HasState; + } else if (c.name() == "CanSuspend") { + if (jsonToBool(c)) + flags |= CanSuspend; + } + } + return true; +} + +QString RunControlContext::toString() const +{ + QString rc; + QTextStream str(&rc); + format(str); + return rc; +} + +void RunControlContext::format(QTextStream &str) const +{ + str << " id='" << id << "' osid='" << osid + << "' parentId='" << parentId <<"' "; + if (flags & Container) + str << "[container] "; + if (flags & HasState) + str << "[has state] "; + if (flags & CanSuspend) + str << "[can suspend] "; + if (flags & CanSuspend) + str << "[can terminate] "; + str.setIntegerBase(16); + str << " resume_flags: 0x" << resumeFlags; + str.setIntegerBase(10); +} + +// ------ ModuleLoadEventInfo +ModuleLoadEventInfo::ModuleLoadEventInfo() : + loaded(false), codeAddress(0), dataAddress(0), requireResume(false) +{ +} + +void ModuleLoadEventInfo::clear() +{ + loaded = requireResume = false; + codeAddress = dataAddress =0; +} + +bool ModuleLoadEventInfo::parse(const JsonValue &val) +{ + clear(); + if (val.type() != JsonValue::Object) + return false; + foreach(const JsonValue &c, val.children()) { + if (c.name() == "Name") { + name = c.data(); + } else if (c.name() == "File") { + file = c.data(); + } else if (c.name() == "CodeAddress") { + codeAddress = c.data().toULongLong(); + } else if (c.name() == "DataAddress") { + dataAddress = c.data().toULongLong(); + } else if (c.name() == "Loaded") { + loaded = jsonToBool(c); + } else if (c.name() == "RequireResume") { + requireResume =jsonToBool(c); + } + } + return true; +} +void ModuleLoadEventInfo::format(QTextStream &str) const +{ + str << "name='" << name << "' file='" << file << "' " << + (loaded ? "[loaded] " : "[not loaded] "); + if (requireResume) + str << "[requires resume] "; + str.setIntegerBase(16); + str << " code: 0x" << codeAddress << " data: 0x" << dataAddress; + str.setIntegerBase(10); +} + +// ---------------------- Breakpoint + +// Types matching enum +static const char *breakPointTypesC[] = {"Software", "Hardware", "Auto"}; + +Breakpoint::Breakpoint(quint64 loc) : + type(Auto), enabled(true), ignoreCount(0), location(loc), size(1), thumb(true) +{ + if (loc) + id = idFromLocation(location); +} + +void Breakpoint::setContextId(unsigned processId, unsigned threadId) +{ + contextIds = QVector(1, RunControlContext::tcfId(processId, threadId)); +} + +QByteArray Breakpoint::idFromLocation(quint64 loc) +{ + return QByteArray("BP_0x") + QByteArray::number(loc, 16); +} + +QString Breakpoint::toString() const +{ + QString rc; + QTextStream str(&rc); + str.setIntegerBase(16); + str << "Breakpoint '" << id << "' " << breakPointTypesC[type] << " for contexts '" + << joinByteArrays(contextIds, ',') << "' at 0x" << location; + str.setIntegerBase(10); + str << " size " << size; + if (enabled) + str << " [enabled]"; + if (thumb) + str << " [thumb]"; + if (ignoreCount) + str << " IgnoreCount " << ignoreCount; + return rc; +} + +JsonInputStream &operator<<(JsonInputStream &str, const Breakpoint &b) +{ + if (b.contextIds.isEmpty()) + qWarning("tcftrk::Breakpoint: No context ids specified"); + + str << '{' << "ID" << ':' << QString::fromUtf8(b.id) << ',' + << "BreakpointType" << ':' << breakPointTypesC[b.type] << ',' + << "Enabled" << ':' << b.enabled << ',' + << "IgnoreCount" << ':' << b.ignoreCount << ',' + << "ContextIds" << ':' << b.contextIds << ',' + << "Location" << ':' << QString::number(b.location) << ',' + << "Size" << ':' << b.size << ',' + << "THUMB_BREAKPOINT" << ':' << b.thumb + << '}'; + return str; +} + +// --- Events +TcfTrkEvent::TcfTrkEvent(Type type) : m_type(type) +{ +} + +TcfTrkEvent::~TcfTrkEvent() +{ +} + +TcfTrkEvent::Type TcfTrkEvent::type() const +{ + return m_type; +} + +QString TcfTrkEvent::toString() const +{ + return QString(); +} + +static const char sharedLibrarySuspendReasonC[] = "Shared Library"; + +TcfTrkEvent *TcfTrkEvent::parseEvent(Services s, const QByteArray &nameBA, const QVector &values) +{ + switch (s) { + case LocatorService: + if (nameBA == "Hello" && values.size() == 1 && values.front().type() == JsonValue::Array) { + QStringList services; + foreach (const JsonValue &jv, values.front().children()) + services.push_back(QString::fromUtf8(jv.data())); + return new TcfTrkLocatorHelloEvent(services); + } + break; + case RunControlService: + if (values.empty()) + return 0; + // "id/PC/Reason/Data" + if (nameBA == "contextSuspended" && values.size() == 4) { + const QByteArray idBA = values.at(0).data(); + const quint64 pc = values.at(1).data().toULongLong(); + const QByteArray reasonBA = values.at(2).data(); + // Module load: Special + if (reasonBA == sharedLibrarySuspendReasonC) { + ModuleLoadEventInfo info; + if (!info.parse(values.at(3))) + return 0; + return new TcfTrkRunControlModuleLoadContextSuspendedEvent(idBA, reasonBA, pc, info); + } + return new TcfTrkRunControlContextSuspendedEvent(idBA, reasonBA, pc); + } // "contextSuspended" + if (nameBA == "contextAdded") + return TcfTrkRunControlContextAddedEvent::parseEvent(values); + if (nameBA == "contextRemoved" && values.front().type() == JsonValue::Array) { + QVector ids; + foreach(const JsonValue &c, values.front().children()) + ids.push_back(c.data()); + return new TcfTrkRunControlContextRemovedEvent(ids); + } + break; + default: + break; + } + return 0; +} + +// -------------- TcfTrkServiceHelloEvent +TcfTrkLocatorHelloEvent::TcfTrkLocatorHelloEvent(const QStringList &s) : + TcfTrkEvent(LocatorHello), + m_services(s) +{ +} + +QString TcfTrkLocatorHelloEvent::toString() const +{ + return QLatin1String("ServiceHello: ") + m_services.join(QLatin1String(", ")); +} + +// -------------- TcfTrkIdEvent +TcfTrkIdEvent::TcfTrkIdEvent(Type t, const QByteArray &id) : + TcfTrkEvent(t), m_id(id) +{ +} + +// ---------- TcfTrkIdsEvent +TcfTrkIdsEvent::TcfTrkIdsEvent(Type t, const QVector &ids) : + TcfTrkEvent(t), m_ids(ids) +{ +} + +QString TcfTrkIdsEvent::joinedIdString(const char sep) const +{ + return joinByteArrays(m_ids, sep); +} + +// ---------------- TcfTrkRunControlContextAddedEvent +TcfTrkRunControlContextAddedEvent::TcfTrkRunControlContextAddedEvent(const RunControlContexts &c) : + TcfTrkEvent(RunControlContextAdded), m_contexts(c) +{ +} + +TcfTrkRunControlContextAddedEvent + *TcfTrkRunControlContextAddedEvent::parseEvent(const QVector &values) +{ + // Parse array of contexts + if (values.size() < 1 || values.front().type() != JsonValue::Array) + return 0; + + RunControlContexts contexts; + foreach (const JsonValue &v, values.front().children()) { + RunControlContext context; + if (context.parse(v)) + contexts.push_back(context); + } + return new TcfTrkRunControlContextAddedEvent(contexts); +} + +QString TcfTrkRunControlContextAddedEvent::toString() const +{ + QString rc; + QTextStream str(&rc); + str << "RunControl: " << m_contexts.size() << " context(s) " + << (type() == RunControlContextAdded ? "added" : "removed") + << '\n'; + foreach (const RunControlContext &c, m_contexts) { + c.format(str); + str << '\n'; + } + return rc; +} + +// --------------- TcfTrkRunControlContextRemovedEvent +TcfTrkRunControlContextRemovedEvent::TcfTrkRunControlContextRemovedEvent(const QVector &ids) : + TcfTrkIdsEvent(RunControlContextRemoved, ids) +{ +} + +QString TcfTrkRunControlContextRemovedEvent::toString() const +{ + return QLatin1String("RunControl: Removed contexts '") + joinedIdString() + ("'."); +} + +// --------------- TcfTrkRunControlContextSuspendedEvent +TcfTrkRunControlContextSuspendedEvent::TcfTrkRunControlContextSuspendedEvent(const QByteArray &id, + const QByteArray &reason, + quint64 pc) : + TcfTrkIdEvent(RunControlSuspended, id), m_pc(pc), m_reason(reason) +{ +} + +TcfTrkRunControlContextSuspendedEvent::TcfTrkRunControlContextSuspendedEvent(Type t, + const QByteArray &id, + const QByteArray &reason, + quint64 pc) : + TcfTrkIdEvent(t, id), m_pc(pc), m_reason(reason) +{ +} + +void TcfTrkRunControlContextSuspendedEvent::format(QTextStream &str) const +{ + str.setIntegerBase(16); + str << "RunControl: '" << idString() << "' suspended at 0x" + << m_pc << ": '" << m_reason << "'."; + str.setIntegerBase(10); +} + +QString TcfTrkRunControlContextSuspendedEvent::toString() const +{ + QString rc; + QTextStream str(&rc); + format(str); + return rc; +} + +TcfTrkRunControlContextSuspendedEvent::Reason TcfTrkRunControlContextSuspendedEvent::reason() const +{ + if (m_reason == sharedLibrarySuspendReasonC) + return ModuleLoad; + if (m_reason == "Breakpoint") + return BreakPoint; + // 'Data abort exception'/'Thread has panicked' ... unfortunately somewhat unspecific. + if (m_reason.contains("exception") || m_reason.contains("panick")) + return Crash; + return Other; +} + +TcfTrkRunControlModuleLoadContextSuspendedEvent::TcfTrkRunControlModuleLoadContextSuspendedEvent(const QByteArray &id, + const QByteArray &reason, + quint64 pc, + const ModuleLoadEventInfo &mi) : + TcfTrkRunControlContextSuspendedEvent(RunControlModuleLoadSuspended, id, reason, pc), + m_mi(mi) +{ +} + +QString TcfTrkRunControlModuleLoadContextSuspendedEvent::toString() const +{ + QString rc; + QTextStream str(&rc); + TcfTrkRunControlContextSuspendedEvent::format(str); + str << ' '; + m_mi.format(str); + return rc; +} + + +} // namespace tcftrk diff --git a/tools/runonphone/symbianutils/tcftrkmessage.h b/tools/runonphone/symbianutils/tcftrkmessage.h new file mode 100644 index 0000000..8b073c8 --- /dev/null +++ b/tools/runonphone/symbianutils/tcftrkmessage.h @@ -0,0 +1,284 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef TRCFTRKMESSAGE_H +#define TRCFTRKMESSAGE_H + +#include "symbianutils_global.h" + +#include +#include + +QT_BEGIN_NAMESPACE +class QTextStream; +QT_END_NAMESPACE + +namespace tcftrk { + +class JsonValue; +class JsonInputStream; + +enum Services { + LocatorService, + RunControlService, + ProcessesService, + MemoryService, + SettingsService, // non-standard, trk specific + BreakpointsService, + RegistersService, + SimpleRegistersService, // non-standard, trk specific + UnknownService +}; // Note: Check string array 'serviceNamesC' of same size when modifying this. + +// Modes of RunControl/'Resume' (see EDF documentation). +// As of 24.6.2010, RM_RESUME, RM_STEP_OVER, RM_STEP_INTO, +// RM_STEP_OVER_RANGE, RM_STEP_INTO_RANGE are supported with +// RANG_START/RANGE_END parameters. +enum RunControlResumeMode { + RM_RESUME = 0, + RM_STEP_OVER = 1, RM_STEP_INTO = 2, + RM_STEP_OVER_LINE = 3, RM_STEP_INTO_LINE = 4, + RM_STEP_OUT = 5, RM_REVERSE_RESUME = 6, + RM_REVERSE_STEP_OVER = 7, RM_REVERSE_STEP_INTO = 8, + RM_REVERSE_STEP_OVER_LINE = 9, RM_REVERSE_STEP_INTO_LINE = 10, + RM_REVERSE_STEP_OUT = 11, RM_STEP_OVER_RANGE = 12, + RM_STEP_INTO_RANGE = 13, RM_REVERSE_STEP_OVER_RANGE = 14, + RM_REVERSE_STEP_INTO_RANGE = 15 +}; + +SYMBIANUTILS_EXPORT const char *serviceName(Services s); +SYMBIANUTILS_EXPORT Services serviceFromName(const char *); + +// Debug helpers +SYMBIANUTILS_EXPORT QString formatData(const QByteArray &a); +SYMBIANUTILS_EXPORT QString joinByteArrays(const QVector &a, char sep = ','); + +// Context used in 'RunControl contextAdded' events and in reply +// to 'Processes start'. Could be thread or process. +struct SYMBIANUTILS_EXPORT RunControlContext { + enum Flags { + Container = 0x1, HasState = 0x2, CanSuspend = 0x4, + CanTerminate = 0x8 + }; + enum Type { Process, Thread }; + + RunControlContext(); + Type type() const; + unsigned processId() const; + unsigned threadId() const; + + void clear(); + bool parse(const JsonValue &v); + void format(QTextStream &str) const; + QString toString() const; + + // Helper for converting the TCF ids ("p12" or "p12.t34") + static Type typeFromTcfId(const QByteArray &id); + static unsigned processIdFromTcdfId(const QByteArray &id); + static unsigned threadIdFromTcdfId(const QByteArray &id); + static QByteArray tcfId(unsigned processId, unsigned threadId = 0); + + unsigned flags; + unsigned resumeFlags; + QByteArray id; // "p434.t699" + QByteArray osid; // Non-standard: Process or thread id + QByteArray parentId; // Parent process id of a thread. +}; + +// Module load information occuring with 'RunControl contextSuspended' events +struct SYMBIANUTILS_EXPORT ModuleLoadEventInfo { + ModuleLoadEventInfo(); + void clear(); + bool parse(const JsonValue &v); + void format(QTextStream &str) const; + + QByteArray name; + QByteArray file; + bool loaded; + quint64 codeAddress; + quint64 dataAddress; + bool requireResume; +}; + +// Breakpoint as supported by TcfTrk source June 2010 +// TODO: Add watchpoints,etc once they are implemented +struct SYMBIANUTILS_EXPORT Breakpoint { + enum Type { Software, Hardware, Auto }; + + explicit Breakpoint(quint64 loc = 0); + void setContextId(unsigned processId, unsigned threadId = 0); + QString toString() const; + + static QByteArray idFromLocation(quint64 loc); // Automagically determine from location + + Type type; + bool enabled; + int ignoreCount; + QVector contextIds; // Process or thread ids. + QByteArray id; // Id of the breakpoint; + quint64 location; + unsigned size; + bool thumb; +}; + +SYMBIANUTILS_EXPORT JsonInputStream &operator<<(JsonInputStream &str, const Breakpoint &b); + +// Event hierarchy +class SYMBIANUTILS_EXPORT TcfTrkEvent { + Q_DISABLE_COPY(TcfTrkEvent) +public: + enum Type { None, + LocatorHello, + RunControlContextAdded, + RunControlContextRemoved, + RunControlSuspended, + RunControlBreakpointSuspended, + RunControlModuleLoadSuspended, + RunControlResumed + }; + + virtual ~TcfTrkEvent(); + + Type type() const; + virtual QString toString() const; + + static TcfTrkEvent *parseEvent(Services s, const QByteArray &name, const QVector &val); + +protected: + explicit TcfTrkEvent(Type type = None); + +private: + const Type m_type; +}; + +// ServiceHello +class SYMBIANUTILS_EXPORT TcfTrkLocatorHelloEvent : public TcfTrkEvent { +public: + explicit TcfTrkLocatorHelloEvent(const QStringList &); + + const QStringList &services() { return m_services; } + virtual QString toString() const; + +private: + QStringList m_services; +}; + +// Base for events that just have one id as parameter +// (simple suspend) +class SYMBIANUTILS_EXPORT TcfTrkIdEvent : public TcfTrkEvent { +protected: + explicit TcfTrkIdEvent(Type t, const QByteArray &id); +public: + QByteArray id() const { return m_id; } + QString idString() const { return QString::fromUtf8(m_id); } + +private: + const QByteArray m_id; +}; + +// Base for events that just have some ids as parameter +// (context removed) +class SYMBIANUTILS_EXPORT TcfTrkIdsEvent : public TcfTrkEvent { +protected: + explicit TcfTrkIdsEvent(Type t, const QVector &ids); + +public: + QVector ids() const { return m_ids; } + QString joinedIdString(const char sep = ',') const; + +private: + const QVector m_ids; +}; + +// RunControlContextAdded +class SYMBIANUTILS_EXPORT TcfTrkRunControlContextAddedEvent : public TcfTrkEvent { +public: + typedef QVector RunControlContexts; + + explicit TcfTrkRunControlContextAddedEvent(const RunControlContexts &c); + + const RunControlContexts &contexts() const { return m_contexts; } + virtual QString toString() const; + + static TcfTrkRunControlContextAddedEvent *parseEvent(const QVector &val); + +private: + const RunControlContexts m_contexts; +}; + +// RunControlContextRemoved +class SYMBIANUTILS_EXPORT TcfTrkRunControlContextRemovedEvent : public TcfTrkIdsEvent { +public: + explicit TcfTrkRunControlContextRemovedEvent(const QVector &id); + virtual QString toString() const; +}; + +// Simple RunControlContextSuspended (process/thread) +class SYMBIANUTILS_EXPORT TcfTrkRunControlContextSuspendedEvent : public TcfTrkIdEvent { +public: + enum Reason { BreakPoint, ModuleLoad, Crash, Other } ; + + explicit TcfTrkRunControlContextSuspendedEvent(const QByteArray &id, + const QByteArray &reason, + quint64 pc = 0); + virtual QString toString() const; + + quint64 pc() const { return m_pc; } + QByteArray reasonID() const { return m_reason; } + Reason reason() const; + +protected: + explicit TcfTrkRunControlContextSuspendedEvent(Type t, + const QByteArray &id, + const QByteArray &reason, + quint64 pc = 0); + void format(QTextStream &str) const; + +private: + const quint64 m_pc; + const QByteArray m_reason; +}; + +// RunControlContextSuspended due to module load +class SYMBIANUTILS_EXPORT TcfTrkRunControlModuleLoadContextSuspendedEvent : public TcfTrkRunControlContextSuspendedEvent { +public: + explicit TcfTrkRunControlModuleLoadContextSuspendedEvent(const QByteArray &id, + const QByteArray &reason, + quint64 pc, + const ModuleLoadEventInfo &mi); + + virtual QString toString() const; + const ModuleLoadEventInfo &info() const { return m_mi; } + +private: + const ModuleLoadEventInfo m_mi; +}; + +} // namespace tcftrk +#endif // TRCFTRKMESSAGE_H diff --git a/tools/runonphone/symbianutils/trkdevice.cpp b/tools/runonphone/symbianutils/trkdevice.cpp index bd24300..9039184 100644 --- a/tools/runonphone/symbianutils/trkdevice.cpp +++ b/tools/runonphone/symbianutils/trkdevice.cpp @@ -636,10 +636,11 @@ private: void readMessages(); QByteArray m_trkReadBuffer; + bool linkEstablishmentMode; }; ReaderThreadBase::ReaderThreadBase(const QSharedPointer &context) : - m_context(context) + m_context(context), linkEstablishmentMode(true) { static const int trkResultMetaId = qRegisterMetaType(); Q_UNUSED(trkResultMetaId) @@ -662,7 +663,7 @@ void ReaderThreadBase::readMessages() { TrkResult r; QByteArray rawData; - while (extractResult(&m_trkReadBuffer, m_context->serialFrame, &r, &rawData)) { + while (extractResult(&m_trkReadBuffer, m_context->serialFrame, &r, linkEstablishmentMode, &rawData)) { emit messageReceived(r, rawData); } } diff --git a/tools/runonphone/symbianutils/trkutils.cpp b/tools/runonphone/symbianutils/trkutils.cpp index 60e391e..d89da20 100644 --- a/tools/runonphone/symbianutils/trkutils.cpp +++ b/tools/runonphone/symbianutils/trkutils.cpp @@ -52,6 +52,25 @@ namespace trk { +Library::Library() : codeseg(0), dataseg(0), pid(0) +{ +} + +Library::Library(const TrkResult &result) : codeseg(0), dataseg(0), pid(0) +{ + if (result.data.size() < 20) { + qWarning("Invalid trk creation notification received."); + return; + } + + const char *data = result.data.constData(); + pid = extractInt(data + 2); + codeseg = extractInt(data + 10); + dataseg = extractInt(data + 14); + const uint len = extractShort(data + 18); + name = result.data.mid(20, len); +} + TrkAppVersion::TrkAppVersion() { reset(); @@ -77,11 +96,11 @@ void Session::reset() extended1TypeSize = 0; extended2TypeSize = 0; pid = 0; + mainTid = 0; tid = 0; codeseg = 0; dataseg = 0; - currentThread = 0; libraries.clear(); trkAppVersion.reset(); } @@ -143,6 +162,90 @@ QString Session::deviceDescription(unsigned verbose) const return msg.arg(formatTrkVersion(trkAppVersion)); } +QByteArray Session::gdbLibraryList() const +{ + const int count = libraries.size(); + QByteArray response = "l"; + for (int i = 0; i != count; ++i) { + const trk::Library &lib = libraries.at(i); + response += ""; + response += "
    "; + response += "
    "; + response += "
    "; + response += ""; + } + response += ""; + return response; +} + +QByteArray Session::gdbQsDllInfo(int start, int count) const +{ + // Happens with gdb 6.4.50.20060226-cvs / CodeSourcery. + // Never made it into FSF gdb that got qXfer:libraries:read instead. + // http://sourceware.org/ml/gdb/2007-05/msg00038.html + // Name=hexname,TextSeg=textaddr[,DataSeg=dataaddr] + const int libraryCount = libraries.size(); + const int end = count < 0 ? libraryCount : qMin(libraryCount, start + count); + QByteArray response(1, end == libraryCount ? 'l' : 'm'); + for (int i = start; i < end; ++i) { + if (i != start) + response += ';'; + const Library &lib = libraries.at(i); + response += "Name="; + response += lib.name.toHex(); + response += ",TextSeg="; + response += hexNumber(lib.codeseg); + response += ",DataSeg="; + response += hexNumber(lib.dataseg); + } + return response; +} + +QString Session::toString() const +{ + QString rc; + QTextStream str(&rc); + str << "Session: " << deviceDescription(false) << '\n' + << "pid: " << pid << "main thread: " << mainTid + << " current thread: " << tid << ' '; + str.setIntegerBase(16); + str << " code: 0x" << codeseg << " data: 0x" << dataseg << '\n'; + if (const int libCount = libraries.size()) { + str << "Libraries:\n"; + for (int i = 0; i < libCount; i++) + str << " #" << i << ' ' << libraries.at(i).name + << " code: 0x" << libraries.at(i).codeseg + << " data: 0x" << libraries.at(i).dataseg << '\n'; + } + if (const int moduleCount = modules.size()) { + str << "Modules:\n"; + for (int i = 0; i < moduleCount; i++) + str << " #" << i << ' ' << modules.at(i) << '\n'; + } + str.setIntegerBase(10); + if (!addressToBP.isEmpty()) { + typedef QHash::const_iterator BP_ConstIterator; + str << "Breakpoints:\n"; + const BP_ConstIterator cend = addressToBP.constEnd(); + for (BP_ConstIterator it = addressToBP.constBegin(); it != cend; ++it) { + str.setIntegerBase(16); + str << " 0x" << it.key(); + str.setIntegerBase(10); + str << ' ' << it.value() << '\n'; + } + } + + return rc; +} + // -------------- QByteArray decode7d(const QByteArray &ba) @@ -188,18 +291,15 @@ SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen) QString ascii; const int size = maxLen == -1 ? ba.size() : qMin(ba.size(), maxLen); for (int i = 0; i < size; ++i) { - //if (i == 5 || i == ba.size() - 2) - // str += " "; - int c = byte(ba.at(i)); - str += QString("%1 ").arg(c, 2, 16, QChar('0')); - if (i >= 8 && i < ba.size() - 2) - ascii += QChar(c).isPrint() ? QChar(c) : QChar('.'); + const int c = byte(ba.at(i)); + str += QString::fromAscii("%1 ").arg(c, 2, 16, QChar('0')); + ascii += QChar(c).isPrint() ? QChar(c) : QChar('.'); } if (size != ba.size()) { - str += "..."; - ascii += "..."; + str += QLatin1String("..."); + ascii += QLatin1String("..."); } - return str + " " + ascii; + return str + QLatin1String(" ") + ascii; } SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits) @@ -299,20 +399,30 @@ ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame, ushort& mux) return firstDelimiterPos != -1 ? firstDelimiterPos : buffer.size(); } -bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByteArray *rawData) +bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, bool &linkEstablishmentMode, QByteArray *rawData) { result->clear(); if(rawData) rawData->clear(); - const ushort len = isValidTrkResult(*buffer, serialFrame, result->multiplex); - if (!len) - return false; + ushort len = isValidTrkResult(*buffer, serialFrame, result->multiplex); // handle receiving application output, which is not a regular command const int delimiterPos = serialFrame ? 4 : 0; + if (linkEstablishmentMode) { + //when "hot connecting" a device, we can receive partial frames. + //this code resyncs by discarding data until a TRK frame is found + while (buffer->length() > delimiterPos + && result->multiplex != MuxTextTrace + && !(result->multiplex == MuxTrk && buffer->at(delimiterPos) == 0x7e)) { + buffer->remove(0,1); + len = isValidTrkResult(*buffer, serialFrame, result->multiplex); + } + } + if (!len) + return false; if (buffer->at(delimiterPos) != 0x7e) { result->isDebugOutput = true; result->data = buffer->mid(delimiterPos, len); - *buffer->remove(0, delimiterPos + len); + buffer->remove(0, delimiterPos + len); return true; } // FIXME: what happens if the length contains 0xfe? @@ -320,7 +430,7 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt const QByteArray data = decode7d(buffer->mid(delimiterPos + 1, len - 2)); if(rawData) *rawData = data; - *buffer->remove(0, delimiterPos + len); + buffer->remove(0, delimiterPos + len); byte sum = 0; for (int i = 0; i < data.size(); ++i) // 3 = 2 * 0xfe + sum @@ -335,6 +445,7 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt //logMessage(" CURR DATA: " << stringFromArray(data)); //QByteArray prefix = "READ BUF: "; //logMessage((prefix + "HEADER: " + stringFromArray(header).toLatin1()).data()); + linkEstablishmentMode = false; //have received a good TRK packet, therefore in sync return true; } diff --git a/tools/runonphone/symbianutils/trkutils.h b/tools/runonphone/symbianutils/trkutils.h index e571028..d365f0d 100644 --- a/tools/runonphone/symbianutils/trkutils.h +++ b/tools/runonphone/symbianutils/trkutils.h @@ -56,6 +56,7 @@ QT_END_NAMESPACE namespace trk { typedef unsigned char byte; +struct TrkResult; enum Command { //meta commands @@ -135,6 +136,20 @@ enum Command { TrkDSPositionFile = 0xd4 }; +enum DSOSItemTypes { + kDSOSProcessItem = 0x0000, + kDSOSThreadItem = 0x0001, + kDSOSDLLItem = 0x0002, + kDSOSAppItem = 0x0003, + kDSOSMemBlockItem = 0x0004, + kDSOSProcAttachItem = 0x0005, + kDSOSThreadAttachItem = 0x0006, + kDSOSProcAttach2Item = 0x0007, + kDSOSProcRunItem = 0x0008, + /* 0x0009 - 0x00ff reserved for general expansion */ + /* 0x0100 - 0xffff available for target-specific use */ +}; + enum SerialMultiplexor { MuxRaw = 0, MuxTextTrace = 0x0102, @@ -164,11 +179,14 @@ SYMBIANUTILS_EXPORT void appendString(QByteArray *ba, const QByteArray &str, End struct SYMBIANUTILS_EXPORT Library { - Library() {} + Library(); + explicit Library(const TrkResult &r); QByteArray name; uint codeseg; uint dataseg; + //library addresses are valid for a given process (depending on memory model, they might be loaded at the same address in all processes or not) + uint pid; }; struct SYMBIANUTILS_EXPORT TrkAppVersion @@ -187,6 +205,11 @@ struct SYMBIANUTILS_EXPORT Session Session(); void reset(); QString deviceDescription(unsigned verbose) const; + QString toString() const; + // Answer to qXfer::libraries + QByteArray gdbLibraryList() const; + // Answer to qsDllInfo, can be sent chunk-wise. + QByteArray gdbQsDllInfo(int start = 0, int count = -1) const; // Trk feedback byte cpuMajor; @@ -198,6 +221,7 @@ struct SYMBIANUTILS_EXPORT Session byte extended2TypeSize; TrkAppVersion trkAppVersion; uint pid; + uint mainTid; uint tid; uint codeseg; uint dataseg; @@ -206,12 +230,7 @@ struct SYMBIANUTILS_EXPORT Session typedef QList Libraries; Libraries libraries; - typedef uint Thread; - typedef QList Threads; - Threads threads; - // Gdb request - uint currentThread; QStringList modules; }; diff --git a/tools/runonphone/symbianutils/trkutils_p.h b/tools/runonphone/symbianutils/trkutils_p.h index 12b0109..05df83a 100644 --- a/tools/runonphone/symbianutils/trkutils_p.h +++ b/tools/runonphone/symbianutils/trkutils_p.h @@ -55,7 +55,7 @@ void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteO // returns a QByteArray containing optionally // the serial frame [0x01 0x90 ] and 0x7e encoded7d(ba) 0x7e QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame); -bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, QByteArray *rawData = 0); +bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, bool& linkEstablishmentMode, QByteArray *rawData = 0); } // namespace trk -- cgit v0.12 From ae2dfea96819a7b145f083bf39a674df90239066 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Thu, 8 Jul 2010 13:49:16 +0200 Subject: Implement just in time debug feature for runonphone When the test being run crashes, runonphone will now retrieve the registers and call stack for the crashing thread from the phone and save to a crash log (compatible with d_exc crash logs, so existing tools can be used to analyse the log) To disable just in time debug, use --nocrashlog on the command line To save the crash logs to a different location, use --crashlogpath otherwise, they are saved to the working directory. To convert the crash logs into human readable form, use the crash analyser carbide plugin from symbian foundation; or another symbian tool that can process d_exc style logs. Reviewed-by: Thomas Zander --- tools/runonphone/main.cpp | 16 ++++ tools/runonphone/trksignalhandler.cpp | 165 +++++++++++++++++++++++++++++++++- tools/runonphone/trksignalhandler.h | 8 ++ 3 files changed, 186 insertions(+), 3 deletions(-) diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp index 885d029..dc83044 100644 --- a/tools/runonphone/main.cpp +++ b/tools/runonphone/main.cpp @@ -62,6 +62,8 @@ void printUsage(QTextStream& outstream, QString exeName) << "-v, --verbose show debugging output" << endl << "-q, --quiet hide progress messages" << endl << "-d, --download copy file from phone to PC after running test" << endl + << "--nocrashlog Don't capture call stack if test crashes" << endl + << "--crashlogpath Path to save crash logs (default=working dir)" << endl << endl << "USB COM ports can usually be autodetected, use -p or -f to force a specific port." << endl << "If using System TRK, it is possible to copy the program directly to sys/bin on the phone." << endl @@ -85,6 +87,8 @@ int main(int argc, char *argv[]) QString downloadLocalFile; int loglevel=1; int timeout=0; + bool crashlog = true; + QString crashlogpath; QListIterator it(args); it.next(); //skip name of program while (it.hasNext()) { @@ -126,6 +130,12 @@ int main(int argc, char *argv[]) loglevel=2; else if (arg == "--quiet" || arg == "-q") loglevel=0; + else if (arg == "--nocrashlog") + crashlog = false; + else if (arg == "--crashlogpath") { + CHECK_PARAMETER_EXISTS + crashlogpath = it.next(); + } else errstream << "unknown command line option " << arg << endl; } else { @@ -199,6 +209,8 @@ int main(int argc, char *argv[]) TrkSignalHandler handler; handler.setLogLevel(loglevel); + handler.setCrashLogging(crashlog); + handler.setCrashLogPath(crashlogpath); QObject::connect(launcher.data(), SIGNAL(copyingStarted()), &handler, SLOT(copyingStarted())); QObject::connect(launcher.data(), SIGNAL(canNotConnect(const QString &)), &handler, SLOT(canNotConnect(const QString &))); @@ -215,8 +227,12 @@ int main(int argc, char *argv[]) QObject::connect(launcher.data(), SIGNAL(copyProgress(int)), &handler, SLOT(copyProgress(int))); QObject::connect(launcher.data(), SIGNAL(stateChanged(int)), &handler, SLOT(stateChanged(int))); QObject::connect(launcher.data(), SIGNAL(processStopped(uint,uint,uint,QString)), &handler, SLOT(stopped(uint,uint,uint,QString))); + QObject::connect(launcher.data(), SIGNAL(libraryLoaded(trk::Library)), &handler, SLOT(libraryLoaded(trk::Library))); + QObject::connect(launcher.data(), SIGNAL(libraryUnloaded(trk::Library)), &handler, SLOT(libraryUnloaded(trk::Library))); + QObject::connect(launcher.data(), SIGNAL(registersAndCallStackReadComplete(const QList &,const QByteArray &)), &handler, SLOT(registersAndCallStackReadComplete(const QList &,const QByteArray &))); QObject::connect(&handler, SIGNAL(resume(uint,uint)), launcher.data(), SLOT(resumeProcess(uint,uint))); QObject::connect(&handler, SIGNAL(terminate()), launcher.data(), SLOT(terminate())); + QObject::connect(&handler, SIGNAL(getRegistersAndCallStack(uint,uint)), launcher.data(), SLOT(getRegistersAndCallStack(uint,uint))); QObject::connect(launcher.data(), SIGNAL(finished()), &handler, SLOT(finished())); QTimer timer; diff --git a/tools/runonphone/trksignalhandler.cpp b/tools/runonphone/trksignalhandler.cpp index 2abf91f..b6d446f 100644 --- a/tools/runonphone/trksignalhandler.cpp +++ b/tools/runonphone/trksignalhandler.cpp @@ -42,7 +42,19 @@ #include #include #include +#include +#include #include "trksignalhandler.h" +#include "trkutils.h" + +class CrashState +{ +public: + uint pid; + uint tid; + QString crashReason; + uint crashPC; +}; class TrkSignalHandlerPrivate { @@ -55,6 +67,12 @@ private: QTextStream err; int loglevel; int lastpercent; + QList libraries; + QFile crashlogtextfile; + QFile crashstackfile; + QList queuedCrashes; + QString crashlogPath; + bool crashlog; }; void TrkSignalHandler::copyingStarted() @@ -108,6 +126,7 @@ void TrkSignalHandler::startingApplication() void TrkSignalHandler::applicationRunning(uint pid) { + Q_UNUSED(pid) if (d->loglevel > 0) d->out << "Running..." << endl; } @@ -155,13 +174,153 @@ void TrkSignalHandler::setLogLevel(int level) d->loglevel = level; } +void TrkSignalHandler::setCrashLogging(bool enabled) +{ + d->crashlog = enabled; +} + +void TrkSignalHandler::setCrashLogPath(QString path) +{ + d->crashlogPath = path; +} + +bool lessThanCodeBase(const trk::Library& cs1, const trk::Library& cs2) +{ + return cs1.codeseg < cs2.codeseg; +} + void TrkSignalHandler::stopped(uint pc, uint pid, uint tid, const QString& reason) { d->err << "STOPPED: pc=" << hex << pc << " pid=" << pid << " tid=" << tid << dec << " - " << reason << endl; - // if it was a breakpoint, then we could continue with "emit resume(pid, tid);" - // since we have set no breakpoints, it will be a just in time debug of a panic / exception - emit terminate(); + + if (d->crashlog) { + CrashState cs; + cs.pid = pid; + cs.tid = tid; + cs.crashPC = pc; + cs.crashReason = reason; + + d->queuedCrashes.append(cs); + + if (d->queuedCrashes.count() == 1) { + d->err << "Fetching registers and stack..." << endl; + emit getRegistersAndCallStack(pid, tid); + } + } + else + emit resume(pid, tid); +} + +void TrkSignalHandler::registersAndCallStackReadComplete(const QList& registers, const QByteArray& stack) +{ + CrashState cs = d->queuedCrashes.first(); + QDir dir(d->crashlogPath); + d->crashlogtextfile.setFileName(dir.filePath(QString("d_exc_%1.txt").arg(cs.tid))); + d->crashstackfile.setFileName(dir.filePath(QString("d_exc_%1.stk").arg(cs.tid))); + d->crashlogtextfile.open(QIODevice::WriteOnly); + QTextStream crashlog(&d->crashlogtextfile); + + crashlog << "-----------------------------------------------------------------------------" << endl; + crashlog << "EKA2 USER CRASH LOG" << endl; + crashlog << "Thread Name: " << QString("ProcessID-%1::ThreadID-%2").arg(cs.pid).arg(cs.tid) << endl; + crashlog << "Thread ID: " << cs.tid << endl; + //this is wrong, but TRK doesn't make stack limit available so we lie + crashlog << QString("User Stack %1-%2").arg(registers.at(13), 8, 16, QChar('0')).arg(registers.at(13) + stack.size(), 8, 16, QChar('0')) << endl; + //this is also wrong, but TRK doesn't give all information for exceptions + crashlog << QString("Panic: PC=%1 ").arg(cs.crashPC, 8, 16, QChar('0')) << cs.crashReason << endl; + crashlog << endl; + crashlog << "USER REGISTERS:" << endl; + crashlog << QString("CPSR=%1").arg(registers.at(16), 8, 16, QChar('0')) << endl; + for (int i=0;i<16;i+=4) { + crashlog << QString("r%1=%2 %3 %4 %5") + .arg(i, 2, 10, QChar('0')) + .arg(registers.at(i), 8, 16, QChar('0')) + .arg(registers.at(i+1), 8, 16, QChar('0')) + .arg(registers.at(i+2), 8, 16, QChar('0')) + .arg(registers.at(i+3), 8, 16, QChar('0')) << endl; + } + crashlog << endl; + + //emit info for post mortem debug + qSort(d->libraries.begin(), d->libraries.end(), lessThanCodeBase); + d->err << "Code Segments:" << endl; + crashlog << "CODE SEGMENTS:" << endl; + for(int i=0; ilibraries.count(); i++) { + const trk::Library& seg = d->libraries.at(i); + if(seg.pid != cs.pid) + continue; + if (d->loglevel > 1) { + d->err << QString("Code: %1 Data: %2 Name: ") + .arg(seg.codeseg, 8, 16, QChar('0')) + .arg(seg.dataseg, 8, 16, QChar('0')) + << seg.name << endl; + } + + //produce fake code segment end addresses since we don't get the real ones from TRK + uint end; + if (i+1 < d->libraries.count()) + end = d->libraries.at(i+1).codeseg - 1; + else + end = 0xFFFFFFFF; + + crashlog << QString("%1-%2 ") + .arg(seg.codeseg, 8, 16, QChar('0')) + .arg(end, 8, 16, QChar('0')) + << seg.name << endl; + } + + d->crashlogtextfile.close(); + + if (d->loglevel > 1) { + d->err << "Registers:" << endl; + for (int i=0;i<16;i++) { + d->err << QString("R%1: %2 ").arg(i, 2, 10, QChar('0')).arg(registers.at(i), 8, 16, QChar('0')); + if (i % 4 == 3) + d->err << endl; + } + d->err << QString("CPSR: %1").arg(registers.at(16), 8, 16, QChar('0')) << endl; + + d->err << "Stack:" << endl; + uint sp = registers.at(13); + for(int i=0; ierr << QString("%1: ").arg(sp, 8, 16, QChar('0')); + d->err << trk::stringFromArray(stack.mid(i,16)); + d->err << endl; + } + } + d->crashstackfile.open(QIODevice::WriteOnly); + d->crashstackfile.write(stack); + d->crashstackfile.close(); + + if (d->loglevel > 0) + d->err << "Crash logs saved to " << d->crashlogtextfile.fileName() << " & " << d->crashstackfile.fileName() << endl; + + // resume the thread to allow Symbian OS to handle the panic normally. + // terminate when a non main thread is suspended reboots the phone (TRK bug) + emit resume(cs.pid, cs.tid); + + //fetch next crashed thread + d->queuedCrashes.removeFirst(); + if (d->queuedCrashes.count()) { + cs = d->queuedCrashes.first(); + d->err << "Fetching registers and stack..." << endl; + emit getRegistersAndCallStack(cs.pid, cs.tid); + } + +} + +void TrkSignalHandler::libraryLoaded(const trk::Library &lib) +{ + d->libraries << lib; +} + +void TrkSignalHandler::libraryUnloaded(const trk::Library &lib) +{ + for (QList::iterator i = d->libraries.begin(); i != d->libraries.end(); i++) { + if((*i).name == lib.name && (*i).pid == lib.pid) + i = d->libraries.erase(i); + } } void TrkSignalHandler::timeout() diff --git a/tools/runonphone/trksignalhandler.h b/tools/runonphone/trksignalhandler.h index d31e46f..bfe2c3e 100644 --- a/tools/runonphone/trksignalhandler.h +++ b/tools/runonphone/trksignalhandler.h @@ -43,6 +43,7 @@ #define TRKSIGNALHANDLER_H #include #include +#include "symbianutils/trkutils.h" class TrkSignalHandlerPrivate; class TrkSignalHandler : public QObject @@ -66,13 +67,20 @@ public slots: void stateChanged(int); void stopped(uint pc, uint pid, uint tid, const QString& reason); void timeout(); + void libraryLoaded(const trk::Library &lib); + void libraryUnloaded(const trk::Library &lib); + void registersAndCallStackReadComplete(const QList& registers, const QByteArray& stack); signals: void resume(uint pid, uint tid); + void stop(uint pid, uint tid); void terminate(); + void getRegistersAndCallStack(uint pid, uint tid); public: TrkSignalHandler(); ~TrkSignalHandler(); void setLogLevel(int); + void setCrashLogging(bool); + void setCrashLogPath(QString); private: TrkSignalHandlerPrivate *d; }; -- cgit v0.12 From 3f2a4f34f6206e3a94915a8d50ddfe81e047b88b Mon Sep 17 00:00:00 2001 From: mae Date: Thu, 8 Jul 2010 14:54:00 +0200 Subject: Fix spring animation Do not stop a spring animation if the to value got changed while notifying the target property change. --- src/declarative/util/qdeclarativespringanimation.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/declarative/util/qdeclarativespringanimation.cpp b/src/declarative/util/qdeclarativespringanimation.cpp index 314b82b..d3eb0c5 100644 --- a/src/declarative/util/qdeclarativespringanimation.cpp +++ b/src/declarative/util/qdeclarativespringanimation.cpp @@ -183,11 +183,13 @@ void QDeclarativeSpringAnimationPrivate::tick(int time) lastTime = time; } + qreal old_to = to; + QDeclarativePropertyPrivate::write(defaultProperty, currentValue, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); - if (stop) + if (stop && old_to == to) // do not stop if we got restarted clock.stop(); } -- cgit v0.12 From d5d16b3d3304774df11f40df0206d90ed5f840de Mon Sep 17 00:00:00 2001 From: mae Date: Thu, 8 Jul 2010 17:48:34 +0200 Subject: Added some documentation to spring animation --- src/declarative/util/qdeclarativespringanimation.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/declarative/util/qdeclarativespringanimation.cpp b/src/declarative/util/qdeclarativespringanimation.cpp index d3eb0c5..c098798 100644 --- a/src/declarative/util/qdeclarativespringanimation.cpp +++ b/src/declarative/util/qdeclarativespringanimation.cpp @@ -206,6 +206,15 @@ void QDeclarativeSpringAnimationPrivate::updateMode() /*! \qmlclass SpringAnimation QDeclarativeSpringAnimation \since 4.7 + + \brief The SpringAnimation element allows a property to track a value in a spring-like motion + + SpringAnimation mimics the oscillatory behavior of a spring, with the appropriate \l spring constant to + control the acceleration and the \l damping to control how quickly the effect dies away. + + You can also limit the maximum \l velocity of the animation. + + */ QDeclarativeSpringAnimation::QDeclarativeSpringAnimation(QObject *parent) -- cgit v0.12 From b22a5e13003ff9f23b075284a1a1e0a6b0e46250 Mon Sep 17 00:00:00 2001 From: mae Date: Thu, 8 Jul 2010 17:49:23 +0200 Subject: Follow -> Behavior Replace the usages of Follows with Behaviors, update docs. --- .../samegame/SamegameCore/BoomBlock.qml | 11 +- .../declarative/samegame/SamegameCore/samegame.js | 7 +- doc/src/declarative/advtutorial.qdoc | 11 +- doc/src/declarative/elements.qdoc | 3 +- doc/src/examples/qml-examples.qdoc | 6 +- doc/src/snippets/declarative/gridview/gridview.qml | 6 +- doc/src/snippets/declarative/listview/listview.qml | 10 +- .../plugins/com/nokia/TimeExample/Clock.qml | 16 +- .../declarative/modelviews/listview/highlight.qml | 5 +- examples/declarative/toys/clocks/content/Clock.qml | 35 +- examples/declarative/toys/corkboards/Day.qml | 6 +- examples/declarative/toys/tvtennis/tvtennis.qml | 24 +- .../samegame/samegame4/content/BoomBlock.qml | 11 +- .../samegame/samegame4/content/samegame.js | 7 +- .../graphicsitems/qdeclarativegridview.cpp | 2 +- .../graphicsitems/qdeclarativelistview.cpp | 2 +- .../util/qdeclarativesmoothedfollow.cpp | 299 ------------- .../util/qdeclarativesmoothedfollow_p.h | 113 ----- src/declarative/util/qdeclarativespringfollow.cpp | 464 --------------------- src/declarative/util/qdeclarativespringfollow_p.h | 120 ------ src/declarative/util/qdeclarativeutilmodule.cpp | 4 - src/declarative/util/util.pri | 4 - .../data/springanimation1.qml | 4 + .../data/springanimation2.qml | 9 + .../data/springanimation3.qml | 8 + .../qdeclarativespringanimation.pro | 16 + .../tst_qdeclarativespringanimation.cpp | 136 ++++++ .../data/springfollow1.qml | 4 - .../data/springfollow2.qml | 8 - .../data/springfollow3.qml | 8 - .../qdeclarativespringfollow.pro | 16 - .../tst_qdeclarativespringfollow.cpp | 142 ------- 32 files changed, 257 insertions(+), 1260 deletions(-) delete mode 100644 src/declarative/util/qdeclarativesmoothedfollow.cpp delete mode 100644 src/declarative/util/qdeclarativesmoothedfollow_p.h delete mode 100644 src/declarative/util/qdeclarativespringfollow.cpp delete mode 100644 src/declarative/util/qdeclarativespringfollow_p.h create mode 100644 tests/auto/declarative/qdeclarativespringanimation/data/springanimation1.qml create mode 100644 tests/auto/declarative/qdeclarativespringanimation/data/springanimation2.qml create mode 100644 tests/auto/declarative/qdeclarativespringanimation/data/springanimation3.qml create mode 100644 tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro create mode 100644 tests/auto/declarative/qdeclarativespringanimation/tst_qdeclarativespringanimation.cpp delete mode 100644 tests/auto/declarative/qdeclarativespringfollow/data/springfollow1.qml delete mode 100644 tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml delete mode 100644 tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml delete mode 100644 tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro delete mode 100644 tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp diff --git a/demos/declarative/samegame/SamegameCore/BoomBlock.qml b/demos/declarative/samegame/SamegameCore/BoomBlock.qml index 3f43579..43050af 100644 --- a/demos/declarative/samegame/SamegameCore/BoomBlock.qml +++ b/demos/declarative/samegame/SamegameCore/BoomBlock.qml @@ -47,11 +47,14 @@ Item { property bool dying: false property bool spawned: false property int type: 0 - property int targetX: 0 - property int targetY: 0 - SpringFollow on x { enabled: spawned; to: targetX; spring: 2; damping: 0.2 } - SpringFollow on y { to: targetY; spring: 2; damping: 0.2 } + Behavior on x { + enabled: spawned; + SpringAnimation{ spring: 2; damping: 0.2 } + } + Behavior on y { + SpringAnimation{ spring: 2; damping: 0.2 } + } Image { id: img diff --git a/demos/declarative/samegame/SamegameCore/samegame.js b/demos/declarative/samegame/SamegameCore/samegame.js index 5c008a2..6e1b24d 100755 --- a/demos/declarative/samegame/SamegameCore/samegame.js +++ b/demos/declarative/samegame/SamegameCore/samegame.js @@ -110,7 +110,7 @@ function shuffleDown() }else{ if(fallDist > 0){ var obj = board[index(column,row)]; - obj.targetY += fallDist * gameCanvas.blockSize; + obj.y += fallDist * gameCanvas.blockSize; board[index(column,row+fallDist)] = obj; board[index(column,row)] = null; } @@ -128,7 +128,7 @@ function shuffleDown() obj = board[index(column,row)]; if(obj == null) continue; - obj.targetX -= fallDist * gameCanvas.blockSize; + obj.x -= fallDist * gameCanvas.blockSize; board[index(column-fallDist,row)] = obj; board[index(column,row)] = null; } @@ -184,8 +184,7 @@ function createBlock(column,row){ } dynamicObject.type = Math.floor(Math.random() * 3); dynamicObject.x = column*gameCanvas.blockSize; - dynamicObject.targetX = column*gameCanvas.blockSize; - dynamicObject.targetY = row*gameCanvas.blockSize; + dynamicObject.y = row*gameCanvas.blockSize; dynamicObject.width = gameCanvas.blockSize; dynamicObject.height = gameCanvas.blockSize; dynamicObject.spawned = true; diff --git a/doc/src/declarative/advtutorial.qdoc b/doc/src/declarative/advtutorial.qdoc index 2c3610c..afedb44 100644 --- a/doc/src/declarative/advtutorial.qdoc +++ b/doc/src/declarative/advtutorial.qdoc @@ -306,18 +306,17 @@ In anticipation of the new block animations, \c Block.qml file is now renamed to \section3 Animating block movement First we will animate the blocks so that they move in a fluid manner. QML has a number of methods for adding fluid -movement, and in this case we're going to use the \l SpringFollow element to add an animation with a spring-like -movement. In \c BoomBlock.qml, we apply a \l SpringFollow -to the \c x and \c y properties so that the block will follow and animate its movement towards the -position specified by the new \c targetX and \c targetY properties (whose values will be set by \c samegame.js). -Here is the code added to \c BoomBlock.qml: +movement, and in this case we're going to use the \l Behavior element to add a \l SpringAnimation. +In \c BoomBlock.qml, we apply a \l SpringAnimation behavior to the \c x and \c y properties so that the +block will follow and animate its movement in a spring-like fashion towards the specified position (whose +values will be set by \c samegame.js).Here is the code added to \c BoomBlock.qml: \snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 1 The \c spring and \c damping values can be changed to modify the spring-like effect of the animation. The \c {enabled: spawned} setting refers to the \c spawned value that is set from \c createBlock() in \c samegame.js. -This ensures the \l SpringFollow on the \c x is only enabled after \c createBlock() has set the block to +This ensures the \l SpringAnimation on the \c x is only enabled after \c createBlock() has set the block to the correct position. Otherwise, the blocks will slide out of the corner (0,0) when a game begins, instead of falling from the top in rows. (Try commenting out \c {enabled: spawned} and see for yourself.) diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 48eb09f..0edd242 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -76,11 +76,10 @@ The following table lists the QML elements provided by the \l {QtDeclarative}{Qt \row \o \l {AnchorAnimation} \o Animates anchor changes \row \o \l {PauseAnimation} \o Pauses an animation \row \o \l {SmoothedAnimation} \o Allows a property to smoothly track a value +\row \o \l {SpringAnimation} \o Allows a property to track a value in a spring-like motion \row \o \l {PropertyAction} \o Sets immediate property changes during animation \row \o \l {ScriptAction} \o Runs scripts during an animation \row \o \l {Transition} \o Animates transitions during state changes -\row \o \l {SpringFollow} \o Allows a property to follow value changes -\row \o \l {SmoothedFollow} \o Allows animation to smoothly follow value changes \header \o {2,1} \bold {Working with Data} \row \o \l {Binding} \o Binds any value to any property diff --git a/doc/src/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc index 4ad11d9..ce53677 100644 --- a/doc/src/examples/qml-examples.qdoc +++ b/doc/src/examples/qml-examples.qdoc @@ -477,7 +477,7 @@ This example displays a set of clocks with different times for different cities. Each clock is created by combining \l Image elements with \l Rotation transforms - and \l SpringFollow animations. + and \l SpringAnimation behaviors. \image qml-clocks-example.png */ @@ -517,7 +517,7 @@ \title Toys: TV Tennis \example declarative/toys/tvtennis - This example shows how to use animation components such as \l SpringFollow, + This example shows how to use animation components such as \l SpringAnimation, \l SequentialAnimation and \l PropertyAction to create a game of TV tennis. \image qml-tvtennis-example.png @@ -545,7 +545,7 @@ \example declarative/ui-components/dialcontrol This example shows how to create a dial-type control. It combines - \l Image elements with \l Rotation transforms and \l SpringFollow animations + \l Image elements with \l Rotation transforms and \l SpringAnimatino behaviors to produce an interactive speedometer-type dial. \image qml-dialcontrol-example.png diff --git a/doc/src/snippets/declarative/gridview/gridview.qml b/doc/src/snippets/declarative/gridview/gridview.qml index 7377cee..e92a429 100644 --- a/doc/src/snippets/declarative/gridview/gridview.qml +++ b/doc/src/snippets/declarative/gridview/gridview.qml @@ -108,8 +108,10 @@ Component { Rectangle { width: view.cellWidth; height: view.cellHeight color: "lightsteelblue"; radius: 5 - SpringFollow on x { to: view.currentItem.x; spring: 3; damping: 0.2 } - SpringFollow on y { to: view.currentItem.y; spring: 3; damping: 0.2 } + x: view.currentItem.x + y: view.currentItem.y + Behavior on x { SpringAnimation { spring: 3; damping: 0.2 } } + Behavior on y { SpringAnimation { spring: 3; damping: 0.2 } } } } diff --git a/doc/src/snippets/declarative/listview/listview.qml b/doc/src/snippets/declarative/listview/listview.qml index 0c6dfd4..cde820e 100644 --- a/doc/src/snippets/declarative/listview/listview.qml +++ b/doc/src/snippets/declarative/listview/listview.qml @@ -99,10 +99,12 @@ Component { Rectangle { width: 180; height: 40 color: "lightsteelblue"; radius: 5 - SpringFollow on y { - to: list.currentItem.y - spring: 3 - damping: 0.2 + y: list.currentItem.y + Behavior on y { + SpringAnimation { + spring: 3 + damping: 0.2 + } } } } diff --git a/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml b/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml index 37128b5..6b2676e 100644 --- a/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml +++ b/examples/declarative/cppextensions/plugins/com/nokia/TimeExample/Clock.qml @@ -57,10 +57,10 @@ Rectangle { smooth: true transform: Rotation { id: hourRotation - origin.x: 7.5; origin.y: 73; angle: 0 - SpringFollow on angle { - spring: 2; damping: 0.2; modulus: 360 - to: (clock.hours * 30) + (clock.minutes * 0.5) + origin.x: 7.5; origin.y: 73; + angle: (clock.hours * 30) + (clock.minutes * 0.5) + Behavior on angle { + SpringAnimation{ spring: 2; damping: 0.2; modulus: 360 } } } } @@ -71,10 +71,10 @@ Rectangle { smooth: true transform: Rotation { id: minuteRotation - origin.x: 6.5; origin.y: 83; angle: 0 - SpringFollow on angle { - spring: 2; damping: 0.2; modulus: 360 - to: clock.minutes * 6 + origin.x: 6.5; origin.y: 83; + angle: clock.minutes * 6 + Behavior on angle { + SpringAnimation{ spring: 2; damping: 0.2; modulus: 360 } } } } diff --git a/examples/declarative/modelviews/listview/highlight.qml b/examples/declarative/modelviews/listview/highlight.qml index 4c14f2a..2d68da6 100644 --- a/examples/declarative/modelviews/listview/highlight.qml +++ b/examples/declarative/modelviews/listview/highlight.qml @@ -39,7 +39,7 @@ ****************************************************************************/ // This example shows how to create your own highlight delegate for a ListView -// that uses a SpringFollow animation to provide custom movement when the +// that uses a SpringAnimation to provide custom movement when the // highlight bar is moved between items. import Qt 4.7 @@ -78,7 +78,8 @@ Rectangle { Rectangle { width: 200; height: 50 color: "#FFFF88" - SpringFollow on y { to: listView.currentItem.y; spring: 3; damping: 0.1 } + y: listView.currentItem.y; + Behavior on y { SpringAnimation { spring: 2; damping: 0.1 } } } } diff --git a/examples/declarative/toys/clocks/content/Clock.qml b/examples/declarative/toys/clocks/content/Clock.qml index 136573b..24a07ec 100644 --- a/examples/declarative/toys/clocks/content/Clock.qml +++ b/examples/declarative/toys/clocks/content/Clock.qml @@ -45,10 +45,10 @@ Item { width: 200; height: 230 property alias city: cityLabel.text - property variant hours - property variant minutes - property variant seconds - property variant shift : 0 + property int hours + property int minutes + property int seconds + property real shift property bool night: false function timeChanged() { @@ -60,23 +60,24 @@ Item { } Timer { - interval: 100; running: true; repeat: true; triggeredOnStart: true + interval: 100; running: true; repeat: true; onTriggered: clock.timeChanged() } Image { id: background; source: "clock.png"; visible: clock.night == false } Image { source: "clock-night.png"; visible: clock.night == true } + Image { x: 92.5; y: 27 source: "hour.png" smooth: true transform: Rotation { id: hourRotation - origin.x: 7.5; origin.y: 73; angle: 0 - SpringFollow on angle { - spring: 2; damping: 0.2; modulus: 360 - to: (clock.hours * 30) + (clock.minutes * 0.5) + origin.x: 7.5; origin.y: 73; + angle: (clock.hours * 30) + (clock.minutes * 0.5) + Behavior on angle { + NumberAnimation{} } } } @@ -87,10 +88,10 @@ Item { smooth: true transform: Rotation { id: minuteRotation - origin.x: 6.5; origin.y: 83; angle: 0 - SpringFollow on angle { - spring: 2; damping: 0.2; modulus: 360 - to: clock.minutes * 6 + origin.x: 6.5; origin.y: 83; + angle: clock.minutes * 6 + Behavior on angle { + NumberAnimation{} } } } @@ -101,10 +102,10 @@ Item { smooth: true transform: Rotation { id: secondRotation - origin.x: 2.5; origin.y: 80; angle: 0 - SpringFollow on angle { - spring: 5; damping: 0.25; modulus: 360 - to: clock.seconds * 6 + origin.x: 2.5; origin.y: 80; + angle: clock.seconds * 6 + Behavior on angle { + NumberAnimation{} } } } diff --git a/examples/declarative/toys/corkboards/Day.qml b/examples/declarative/toys/corkboards/Day.qml index cc297b1..9d1f3ae 100644 --- a/examples/declarative/toys/corkboards/Day.qml +++ b/examples/declarative/toys/corkboards/Day.qml @@ -70,9 +70,9 @@ Component { x: randomX; y: randomY - SpringFollow on rotation { - to: -flickable.horizontalVelocity / 100 - spring: 2.0; damping: 0.15 + rotation: -flickable.horizontalVelocity / 100; + Behavior on rotation { + SpringAnimation { spring: 2.0; damping: 0.15 } } Item { diff --git a/examples/declarative/toys/tvtennis/tvtennis.qml b/examples/declarative/toys/tvtennis/tvtennis.qml index 726c649..2e144ed 100644 --- a/examples/declarative/toys/tvtennis/tvtennis.qml +++ b/examples/declarative/toys/tvtennis/tvtennis.qml @@ -50,7 +50,6 @@ Rectangle { id: ball // Add a property for the target y coordinate - property int targetY : page.height - 10 property variant direction : "right" x: 20; width: 20; height: 20; z: 1 @@ -65,15 +64,18 @@ Rectangle { PropertyAction { target: ball; property: "direction"; value: "right" } } - // Make y follow the target y coordinate, with a velocity of 200 - SpringFollow on y { to: ball.targetY; velocity: 200 } + // Make y move with a velocity of 200 + Behavior on y { SpringAnimation{ velocity: 200; } + } + + Component.onCompleted: y = page.height-10; // start the ball motion // Detect the ball hitting the top or bottom of the view and bounce it onYChanged: { if (y <= 0) { - targetY = page.height - 20; + y = page.height - 20; } else if (y >= page.height - 20) { - targetY = 0; + y = 0; } } } @@ -84,19 +86,15 @@ Rectangle { id: leftBat color: "Lime" x: 2; width: 20; height: 90 - SpringFollow on y { - to: ball.y - 45; velocity: 300 - enabled: ball.direction == 'left' - } + y: ball.direction == 'left' ? ball.y - 45 : page.height/2 -45; + Behavior on y { SpringAnimation{ spring: 1; damping: .1; } } } Rectangle { id: rightBat color: "Lime" x: page.width - 22; width: 20; height: 90 - SpringFollow on y { - to: ball.y-45; velocity: 300 - enabled: ball.direction == 'right' - } + y: ball.direction == 'right' ? ball.y - 45 : page.height/2 -45; + Behavior on y { SpringAnimation{ spring: 1; damping: .1; } } } // The rest, to make it look realistic, if neither ever scores... diff --git a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml index 1f51e13..92c607f 100644 --- a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml +++ b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml @@ -49,11 +49,14 @@ Item { //![1] property bool spawned: false - property int targetX: 0 - property int targetY: 0 - SpringFollow on x { to: targetX; spring: 2; damping: 0.2; enabled: spawned } - SpringFollow on y { to: targetY; spring: 2; damping: 0.2 } + Behavior on x { + enabled: spawned; + SpringAnimation{ spring: 2; damping: 0.2 } + } + Behavior on y { + SpringAnimation{ spring: 2; damping: 0.2 } + } //![1] //![2] diff --git a/examples/declarative/tutorials/samegame/samegame4/content/samegame.js b/examples/declarative/tutorials/samegame/samegame4/content/samegame.js index 930a3d8..b1f427c 100755 --- a/examples/declarative/tutorials/samegame/samegame4/content/samegame.js +++ b/examples/declarative/tutorials/samegame/samegame4/content/samegame.js @@ -57,8 +57,7 @@ function createBlock(column, row) { } dynamicObject.type = Math.floor(Math.random() * 3); dynamicObject.x = column * gameCanvas.blockSize; - dynamicObject.targetX = column * gameCanvas.blockSize; - dynamicObject.targetY = row * gameCanvas.blockSize; + dynamicObject.y = row * gameCanvas.blockSize; dynamicObject.width = gameCanvas.blockSize; dynamicObject.height = gameCanvas.blockSize; dynamicObject.spawned = true; @@ -128,7 +127,7 @@ function shuffleDown() { } else { if (fallDist > 0) { var obj = board[index(column, row)]; - obj.targetY += fallDist * gameCanvas.blockSize; + obj.y += fallDist * gameCanvas.blockSize; board[index(column, row + fallDist)] = obj; board[index(column, row)] = null; } @@ -146,7 +145,7 @@ function shuffleDown() { obj = board[index(column, row)]; if (obj == null) continue; - obj.targetX -= fallDist * gameCanvas.blockSize; + obj.x -= fallDist * gameCanvas.blockSize; board[index(column - fallDist, row)] = obj; board[index(column, row)] = null; } diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 3efb9ad..dce6f0e 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -1390,7 +1390,7 @@ void QDeclarativeGridView::setHighlight(QDeclarativeComponent *highlight) highlight is not moved by the view, and any movement must be implemented by the highlight. - Here is a highlight with its motion defined by a \l {SpringFollow} item: + Here is a highlight with its motion defined by a \l {SpringAnimation} item: \snippet doc/src/snippets/declarative/gridview/gridview.qml highlightFollowsCurrentItem */ diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 9497cb7..91e9995 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -1727,7 +1727,7 @@ void QDeclarativeListView::setHighlight(QDeclarativeComponent *highlight) highlight is not moved by the view, and any movement must be implemented by the highlight. - Here is a highlight with its motion defined by a \l {SpringFollow} item: + Here is a highlight with its motion defined by a \l {SpringAniamtion} item: \snippet doc/src/snippets/declarative/listview/listview.qml highlightFollowsCurrentItem diff --git a/src/declarative/util/qdeclarativesmoothedfollow.cpp b/src/declarative/util/qdeclarativesmoothedfollow.cpp deleted file mode 100644 index f70df9d..0000000 --- a/src/declarative/util/qdeclarativesmoothedfollow.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qdeclarativesmoothedfollow_p.h" -#include "qdeclarativesmoothedanimation_p_p.h" - -#include -#include - -#include "qdeclarativeglobal_p.h" - - -QT_BEGIN_NAMESPACE - -class QDeclarativeSmoothedFollowPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeSmoothedFollow) -public: - QDeclarativeSmoothedFollowPrivate(); - - bool enabled; - QSmoothedAnimation *anim; -}; - -/*! - \qmlclass SmoothedFollow QDeclarativeSmoothedFollow - \since 4.7 - \inherits NumberAnimation - \brief The SmoothedFollow element allows a property to smoothly track a value. - - The SmoothedFollow animates a property's value to a set target value - using an ease in/out quad easing curve. If the animation is restarted - with a different target value, the easing curves used to animate to the old - and the new target values are smoothly spliced together to avoid any obvious - visual glitches by maintaining the current velocity. - - The property animation is configured by setting the velocity at which the - animation should occur, or the duration that the animation should take. - If both a velocity and a duration are specified, the one that results in - the quickest animation is chosen for each change in the target value. - - For example, animating from 0 to 800 will take 4 seconds if a velocity - of 200 is set, will take 8 seconds with a duration of 8000 set, and will - take 4 seconds with both a velocity of 200 and a duration of 8000 set. - Animating from 0 to 20000 will take 10 seconds if a velocity of 200 is set, - will take 8 seconds with a duration of 8000 set, and will take 8 seconds - with both a velocity of 200 and a duration of 8000 set. - - The follow example shows one rectangle tracking the position of another. -\code -import Qt 4.7 - -Rectangle { - width: 800; height: 600; color: "blue" - - Rectangle { - color: "green" - width: 60; height: 60; - SmoothedFollow on x { to: rect1.x - 5; velocity: 200 } - SmoothedFollow on y { to: rect1.y - 5; velocity: 200 } - } - - Rectangle { - id: rect1 - color: "red" - width: 50; height: 50; - } - - focus: true - Keys.onRightPressed: rect1.x = rect1.x + 100 - Keys.onLeftPressed: rect1.x = rect1.x - 100 - Keys.onUpPressed: rect1.y = rect1.y - 100 - Keys.onDownPressed: rect1.y = rect1.y + 100 -} -\endcode - - The default velocity of SmoothedFollow is 200 units/second. Note that if the range of the - value being animated is small, then the velocity will need to be adjusted - appropriately. For example, the opacity of an item ranges from 0 - 1.0. - To enable a smooth animation in this range the velocity will need to be - set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity - of 0.5 will take 2000 ms to complete. - - \sa SpringFollow -*/ - -QDeclarativeSmoothedFollow::QDeclarativeSmoothedFollow(QObject *parent) - : QObject(*(new QDeclarativeSmoothedFollowPrivate), parent) -{ -} - -QDeclarativeSmoothedFollow::~QDeclarativeSmoothedFollow() -{ -} - -QDeclarativeSmoothedFollowPrivate::QDeclarativeSmoothedFollowPrivate() - : enabled(true), anim(new QSmoothedAnimation) -{ - Q_Q(QDeclarativeSmoothedFollow); - QDeclarative_setParent_noEvent(anim, q); -} - -/*! - \qmlproperty enumeration SmoothedFollow::reversingMode - - Sets how the SmoothedFollow behaves if an animation direction is reversed. - - If reversing mode is \c SmoothedFollow.Eased, the animation will smoothly decelerate, and - then reverse direction. If the reversing mode is \c SmoothedFollow.Immediate, the - animation will immediately begin accelerating in the reverse direction, - begining with a velocity of 0. If the reversing mode is \c SmoothedFollow.Sync, the - property is immediately set to the target value. -*/ -QDeclarativeSmoothedFollow::ReversingMode QDeclarativeSmoothedFollow::reversingMode() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return (ReversingMode) d->anim->reversingMode; -} - -void QDeclarativeSmoothedFollow::setReversingMode(ReversingMode m) -{ - Q_D(QDeclarativeSmoothedFollow); - if (d->anim->reversingMode == (QDeclarativeSmoothedAnimation::ReversingMode) m) - return; - - d->anim->reversingMode = (QDeclarativeSmoothedAnimation::ReversingMode) m; - emit reversingModeChanged(); -} - -/*! - \qmlproperty int SmoothedFollow::duration - - This property holds the animation duration, in msecs, used when tracking the source. - - Setting this to -1 (the default) disables the duration value. -*/ -int QDeclarativeSmoothedFollow::duration() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->userDuration; -} - -void QDeclarativeSmoothedFollow::setDuration(int duration) -{ - Q_D(QDeclarativeSmoothedFollow); - if (duration == d->anim->duration()) - return; - - d->anim->userDuration = duration; - emit durationChanged(); -} - -qreal QDeclarativeSmoothedFollow::velocity() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->velocity; -} - -/*! - \qmlproperty real SmoothedFollow::velocity - - This property holds the average velocity allowed when tracking the 'to' value. - - The default velocity of SmoothedFollow is 200 units/second. - - Setting this to -1 disables the velocity value. -*/ -void QDeclarativeSmoothedFollow::setVelocity(qreal v) -{ - Q_D(QDeclarativeSmoothedFollow); - if (d->anim->velocity == v) - return; - - d->anim->velocity = v; - emit velocityChanged(); -} - -/*! - \qmlproperty int SmoothedFollow::maximumEasingTime - - This property specifies the maximum time, in msecs, an "eases" during the follow should take. - Setting this property causes the velocity to "level out" after at a time. Setting - a negative value reverts to the normal mode of easing over the entire animation - duration. - - The default value is -1. -*/ -int QDeclarativeSmoothedFollow::maximumEasingTime() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->maximumEasingTime; -} - -void QDeclarativeSmoothedFollow::setMaximumEasingTime(int v) -{ - Q_D(QDeclarativeSmoothedFollow); - d->anim->maximumEasingTime = v; - emit maximumEasingTimeChanged(); -} - -/*! - \qmlproperty real SmoothedFollow::to - This property holds the ending value. - If not set, then the value defined in the end state of the transition or Behavior. -*/ -qreal QDeclarativeSmoothedFollow::to() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->anim->to; -} - -void QDeclarativeSmoothedFollow::setTo(qreal t) -{ - Q_D(QDeclarativeSmoothedFollow); - - if (qIsNaN(t)) - return; - - if (d->anim->to == t) - return; - - d->anim->to = t; - - if (d->enabled) - d->anim->restart(); -} - -/*! - \qmlproperty bool SmoothedFollow::enabled - This property whether this animation should automatically restart when - the 'to' property is upated. - - The default value of this property is 'true'. -*/ -bool QDeclarativeSmoothedFollow::enabled() const -{ - Q_D(const QDeclarativeSmoothedFollow); - return d->enabled; -} - -void QDeclarativeSmoothedFollow::setEnabled(bool e) -{ - Q_D(QDeclarativeSmoothedFollow); - if (d->enabled == e) - return; - d->enabled = e; - - if (d->enabled) - d->anim->restart(); - else - d->anim->stop(); - emit enabledChanged(); -} - -void QDeclarativeSmoothedFollow::setTarget(const QDeclarativeProperty &t) -{ - Q_D(QDeclarativeSmoothedFollow); - d->anim->target = t; -} - -QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativesmoothedfollow_p.h b/src/declarative/util/qdeclarativesmoothedfollow_p.h deleted file mode 100644 index f852311..0000000 --- a/src/declarative/util/qdeclarativesmoothedfollow_p.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QDECLARATIVESMOOTHEDFOLLOW_H -#define QDECLARATIVESMOOTHEDFOLLOW_H - -#include -#include - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeProperty; -class QDeclarativeSmoothedFollowPrivate; -class Q_AUTOTEST_EXPORT QDeclarativeSmoothedFollow : public QObject, - public QDeclarativePropertyValueSource -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QDeclarativeSmoothedFollow) - Q_INTERFACES(QDeclarativePropertyValueSource) - Q_ENUMS(ReversingMode) - - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged) - Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity NOTIFY velocityChanged) - Q_PROPERTY(int duration READ duration WRITE setDuration NOTIFY durationChanged) - Q_PROPERTY(ReversingMode reversingMode READ reversingMode WRITE setReversingMode NOTIFY reversingModeChanged) - Q_PROPERTY(qreal maximumEasingTime READ maximumEasingTime WRITE setMaximumEasingTime NOTIFY maximumEasingTimeChanged) - Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) - -public: - enum ReversingMode { Eased, Immediate, Sync }; - - QDeclarativeSmoothedFollow(QObject *parent = 0); - ~QDeclarativeSmoothedFollow(); - - qreal to() const; - void setTo(qreal); - - ReversingMode reversingMode() const; - void setReversingMode(ReversingMode); - - int duration() const; - void setDuration(int); - - qreal velocity() const; - void setVelocity(qreal); - - int maximumEasingTime() const; - void setMaximumEasingTime(int); - - bool enabled() const; - void setEnabled(bool); - - virtual void setTarget(const QDeclarativeProperty &); - -Q_SIGNALS: - void velocityChanged(); - void durationChanged(); - void reversingModeChanged(); - void maximumEasingTimeChanged(); - void enabledChanged(); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeSmoothedFollow) - -QT_END_HEADER - -#endif // QDECLARATIVESMOOTHEDFOLLOW_H diff --git a/src/declarative/util/qdeclarativespringfollow.cpp b/src/declarative/util/qdeclarativespringfollow.cpp deleted file mode 100644 index aae66ac..0000000 --- a/src/declarative/util/qdeclarativespringfollow.cpp +++ /dev/null @@ -1,464 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "private/qdeclarativespringfollow_p.h" - -#include "private/qdeclarativeanimation_p_p.h" - -#include - -#include - -#include -#include - -QT_BEGIN_NAMESPACE - - - -class QDeclarativeSpringFollowPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QDeclarativeSpringFollow) -public: - QDeclarativeSpringFollowPrivate() - : currentValue(0), to(0), maxVelocity(0), lastTime(0) - , mass(1.0), spring(0.), damping(0.), velocity(0), epsilon(0.01) - , modulus(0.0), useMass(false), haveModulus(false), enabled(true), mode(Track), clock(this) {} - - QDeclarativeProperty property; - qreal currentValue; - qreal to; - qreal maxVelocity; - qreal velocityms; - int lastTime; - qreal mass; - qreal spring; - qreal damping; - qreal velocity; - qreal epsilon; - qreal modulus; - - bool useMass : 1; - bool haveModulus : 1; - bool enabled : 1; - - enum Mode { - Track, - Velocity, - Spring - }; - Mode mode; - - void tick(int); - void updateMode(); - void start(); - void stop(); - - QTickAnimationProxy clock; -}; - -void QDeclarativeSpringFollowPrivate::tick(int time) -{ - Q_Q(QDeclarativeSpringFollow); - - int elapsed = time - lastTime; - if (!elapsed) - return; - qreal srcVal = to; - if (haveModulus) { - currentValue = fmod(currentValue, modulus); - srcVal = fmod(srcVal, modulus); - } - if (mode == Spring) { - if (elapsed < 16) // capped at 62fps. - return; - // Real men solve the spring DEs using RK4. - // We'll do something much simpler which gives a result that looks fine. - int count = elapsed / 16; - for (int i = 0; i < count; ++i) { - qreal diff = srcVal - currentValue; - if (haveModulus && qAbs(diff) > modulus / 2) { - if (diff < 0) - diff += modulus; - else - diff -= modulus; - } - if (useMass) - velocity = velocity + (spring * diff - damping * velocity) / mass; - else - velocity = velocity + spring * diff - damping * velocity; - if (maxVelocity > 0.) { - // limit velocity - if (velocity > maxVelocity) - velocity = maxVelocity; - else if (velocity < -maxVelocity) - velocity = -maxVelocity; - } - currentValue += velocity * 16.0 / 1000.0; - if (haveModulus) { - currentValue = fmod(currentValue, modulus); - if (currentValue < 0.0) - currentValue += modulus; - } - } - if (qAbs(velocity) < epsilon && qAbs(srcVal - currentValue) < epsilon) { - velocity = 0.0; - currentValue = srcVal; - clock.stop(); - } - lastTime = time - (elapsed - count * 16); - } else { - qreal moveBy = elapsed * velocityms; - qreal diff = srcVal - currentValue; - if (haveModulus && qAbs(diff) > modulus / 2) { - if (diff < 0) - diff += modulus; - else - diff -= modulus; - } - if (diff > 0) { - currentValue += moveBy; - if (haveModulus) - currentValue = fmod(currentValue, modulus); - if (currentValue > to) { - currentValue = to; - clock.stop(); - } - } else { - currentValue -= moveBy; - if (haveModulus && currentValue < 0.0) - currentValue = fmod(currentValue, modulus) + modulus; - if (currentValue < to) { - currentValue = to; - clock.stop(); - } - } - lastTime = time; - } - property.write(currentValue); - emit q->valueChanged(currentValue); - if (clock.state() != QAbstractAnimation::Running) - emit q->syncChanged(); -} - -void QDeclarativeSpringFollowPrivate::updateMode() -{ - if (spring == 0. && maxVelocity == 0.) - mode = Track; - else if (spring > 0.) - mode = Spring; - else - mode = Velocity; -} - -void QDeclarativeSpringFollowPrivate::start() -{ - if (!enabled) - return; - - Q_Q(QDeclarativeSpringFollow); - if (mode == QDeclarativeSpringFollowPrivate::Track) { - currentValue = to; - property.write(currentValue); - } else if (to != currentValue && clock.state() != QAbstractAnimation::Running) { - lastTime = 0; - currentValue = property.read().toReal(); - clock.start(); // infinity?? - emit q->syncChanged(); - } -} - -void QDeclarativeSpringFollowPrivate::stop() -{ - clock.stop(); -} - -/*! - \qmlclass SpringFollow QDeclarativeSpringFollow - \since 4.7 - \brief The SpringFollow element allows a property to track a value. - - In example below, \e rect2 will follow \e rect1 moving with a velocity of up to 200: - \code - Rectangle { - id: rect1 - width: 20; height: 20 - color: "#00ff00" - y: 200 // initial value - SequentialAnimation on y { - loops: Animation.Infinite - NumberAnimation { - to: 200 - easing.type: Easing.OutBounce - easing.amplitude: 100 - duration: 2000 - } - PauseAnimation { duration: 1000 } - } - } - Rectangle { - id: rect2 - x: rect1.width - width: 20; height: 20 - color: "#ff0000" - SpringFollow on y { to: rect1.y; velocity: 200 } - } - \endcode -*/ - -QDeclarativeSpringFollow::QDeclarativeSpringFollow(QObject *parent) -: QObject(*(new QDeclarativeSpringFollowPrivate),parent) -{ -} - -QDeclarativeSpringFollow::~QDeclarativeSpringFollow() -{ -} - -void QDeclarativeSpringFollow::setTarget(const QDeclarativeProperty &property) -{ - Q_D(QDeclarativeSpringFollow); - d->property = property; - d->currentValue = property.read().toReal(); -} - -qreal QDeclarativeSpringFollow::to() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->to; -} - -/*! - \qmlproperty real SpringFollow::to - This property holds the target value which will be tracked. - - Bind to a property in order to track its changes. -*/ - -void QDeclarativeSpringFollow::setTo(qreal value) -{ - Q_D(QDeclarativeSpringFollow); - if (d->clock.state() == QAbstractAnimation::Running && d->to == value) - return; - - d->to = value; - d->start(); -} - -/*! - \qmlproperty real SpringFollow::velocity - This property holds the maximum velocity allowed when tracking the source. -*/ - -qreal QDeclarativeSpringFollow::velocity() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->maxVelocity; -} - -void QDeclarativeSpringFollow::setVelocity(qreal velocity) -{ - Q_D(QDeclarativeSpringFollow); - d->maxVelocity = velocity; - d->velocityms = velocity / 1000.0; - d->updateMode(); -} - -/*! - \qmlproperty real SpringFollow::spring - This property holds the spring constant - - The spring constant describes how strongly the target is pulled towards the - source. Setting spring to 0 turns off spring tracking. Useful values 0 - 5.0 - - When a spring constant is set and the velocity property is greater than 0, - velocity limits the maximum speed. -*/ -qreal QDeclarativeSpringFollow::spring() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->spring; -} - -void QDeclarativeSpringFollow::setSpring(qreal spring) -{ - Q_D(QDeclarativeSpringFollow); - d->spring = spring; - d->updateMode(); -} - -/*! - \qmlproperty real SpringFollow::damping - This property holds the spring damping constant - - The damping constant describes how quickly a sprung follower comes to rest. - Useful range is 0 - 1.0 -*/ -qreal QDeclarativeSpringFollow::damping() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->damping; -} - -void QDeclarativeSpringFollow::setDamping(qreal damping) -{ - Q_D(QDeclarativeSpringFollow); - if (damping > 1.) - damping = 1.; - - d->damping = damping; -} - - -/*! - \qmlproperty real SpringFollow::epsilon - This property holds the spring epsilon - - The epsilon is the rate and amount of change in the value which is close enough - to 0 to be considered equal to zero. This will depend on the usage of the value. - For pixel positions, 0.25 would suffice. For scale, 0.005 will suffice. - - The default is 0.01. Tuning this value can provide small performance improvements. -*/ -qreal QDeclarativeSpringFollow::epsilon() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->epsilon; -} - -void QDeclarativeSpringFollow::setEpsilon(qreal epsilon) -{ - Q_D(QDeclarativeSpringFollow); - d->epsilon = epsilon; -} - -/*! - \qmlproperty real SpringFollow::modulus - This property holds the modulus value. - - Setting a \a modulus forces the target value to "wrap around" at the modulus. - For example, setting the modulus to 360 will cause a value of 370 to wrap around to 10. -*/ -qreal QDeclarativeSpringFollow::modulus() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->modulus; -} - -void QDeclarativeSpringFollow::setModulus(qreal modulus) -{ - Q_D(QDeclarativeSpringFollow); - if (d->modulus != modulus) { - d->haveModulus = modulus != 0.0; - d->modulus = modulus; - emit modulusChanged(); - } -} - -/*! - \qmlproperty real SpringFollow::mass - This property holds the "mass" of the property being moved. - - mass is 1.0 by default. Setting a different mass changes the dynamics of - a \l spring follow. -*/ -qreal QDeclarativeSpringFollow::mass() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->mass; -} - -void QDeclarativeSpringFollow::setMass(qreal mass) -{ - Q_D(QDeclarativeSpringFollow); - if (d->mass != mass && mass > 0.0) { - d->useMass = mass != 1.0; - d->mass = mass; - emit massChanged(); - } -} - -/*! - \qmlproperty bool SpringFollow::enabled - This property holds whether the target will track the source. - - The default value of this property is 'true'. -*/ -bool QDeclarativeSpringFollow::enabled() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->enabled; -} - -void QDeclarativeSpringFollow::setEnabled(bool enabled) -{ - Q_D(QDeclarativeSpringFollow); - d->enabled = enabled; - if (enabled) - d->start(); - else - d->stop(); -} - -/*! - \qmlproperty bool SpringFollow::inSync - This property is true when target is equal to the source; otherwise - false. If inSync is true the target is not being animated. - - If \l enabled is false then inSync will also be false. -*/ -bool QDeclarativeSpringFollow::inSync() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->enabled && d->clock.state() != QAbstractAnimation::Running; -} - -/*! - \qmlproperty real SpringFollow::value - The current value. -*/ -qreal QDeclarativeSpringFollow::value() const -{ - Q_D(const QDeclarativeSpringFollow); - return d->currentValue; -} - -QT_END_NAMESPACE diff --git a/src/declarative/util/qdeclarativespringfollow_p.h b/src/declarative/util/qdeclarativespringfollow_p.h deleted file mode 100644 index b6277c3..0000000 --- a/src/declarative/util/qdeclarativespringfollow_p.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QDECLARATIVESMOOTHFOLLOW_H -#define QDECLARATIVESMOOTHFOLLOW_H - -#include -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - -QT_MODULE(Declarative) - -class QDeclarativeSpringFollowPrivate; -class Q_AUTOTEST_EXPORT QDeclarativeSpringFollow : public QObject, - public QDeclarativePropertyValueSource -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QDeclarativeSpringFollow) - Q_INTERFACES(QDeclarativePropertyValueSource) - - Q_PROPERTY(qreal to READ to WRITE setTo) - Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity) - Q_PROPERTY(qreal spring READ spring WRITE setSpring) - Q_PROPERTY(qreal damping READ damping WRITE setDamping) - Q_PROPERTY(qreal epsilon READ epsilon WRITE setEpsilon) - Q_PROPERTY(bool enabled READ enabled WRITE setEnabled) - Q_PROPERTY(qreal value READ value NOTIFY valueChanged) - Q_PROPERTY(qreal modulus READ modulus WRITE setModulus NOTIFY modulusChanged) - Q_PROPERTY(qreal mass READ mass WRITE setMass NOTIFY massChanged) - Q_PROPERTY(bool inSync READ inSync NOTIFY syncChanged) - -public: - QDeclarativeSpringFollow(QObject *parent=0); - ~QDeclarativeSpringFollow(); - - virtual void setTarget(const QDeclarativeProperty &); - - qreal to() const; - void setTo(qreal value); - - qreal velocity() const; - void setVelocity(qreal velocity); - - qreal spring() const; - void setSpring(qreal spring); - - qreal damping() const; - void setDamping(qreal damping); - - qreal epsilon() const; - void setEpsilon(qreal epsilon); - - qreal mass() const; - void setMass(qreal modulus); - - qreal modulus() const; - void setModulus(qreal modulus); - - bool enabled() const; - void setEnabled(bool enabled); - - bool inSync() const; - - qreal value() const; - -Q_SIGNALS: - void valueChanged(qreal); - void modulusChanged(); - void massChanged(); - void syncChanged(); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QDeclarativeSpringFollow) - -QT_END_HEADER - -#endif // QDECLARATIVESMOOTHFOLLOW_H diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp index 74fdac6..c5bfebd 100644 --- a/src/declarative/util/qdeclarativeutilmodule.cpp +++ b/src/declarative/util/qdeclarativeutilmodule.cpp @@ -46,7 +46,6 @@ #include "private/qdeclarativebind_p.h" #include "private/qdeclarativeconnections_p.h" #include "private/qdeclarativesmoothedanimation_p.h" -#include "private/qdeclarativesmoothedfollow_p.h" #include "private/qdeclarativefontloader_p.h" #include "private/qdeclarativelistaccessor_p.h" #include "private/qdeclarativelistmodel_p.h" @@ -56,7 +55,6 @@ #include "private/qdeclarativepixmapcache_p.h" #include "private/qdeclarativepropertychanges_p.h" #include "qdeclarativepropertymap.h" -#include "private/qdeclarativespringfollow_p.h" #include "private/qdeclarativespringanimation_p.h" #include "private/qdeclarativestategroup_p.h" #include "private/qdeclarativestateoperations_p.h" @@ -84,7 +82,6 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType("Qt",4,7,"ColorAnimation"); qmlRegisterType("Qt",4,7,"Connections"); qmlRegisterType("Qt",4,7,"SmoothedAnimation"); - qmlRegisterType("Qt",4,7,"SmoothedFollow"); qmlRegisterType("Qt",4,7,"FontLoader"); qmlRegisterType("Qt",4,7,"ListElement"); qmlRegisterType("Qt",4,7,"NumberAnimation"); @@ -98,7 +95,6 @@ void QDeclarativeUtilModule::defineModule() qmlRegisterType("Qt",4,7,"RotationAnimation"); qmlRegisterType("Qt",4,7,"ScriptAction"); qmlRegisterType("Qt",4,7,"SequentialAnimation"); - qmlRegisterType("Qt",4,7,"SpringFollow"); qmlRegisterType("Qt",4,7,"SpringAnimation"); qmlRegisterType("Qt",4,7,"StateChangeScript"); qmlRegisterType("Qt",4,7,"StateGroup"); diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri index 0cbcbd7..fd57144 100644 --- a/src/declarative/util/util.pri +++ b/src/declarative/util/util.pri @@ -7,10 +7,8 @@ SOURCES += \ $$PWD/qdeclarativepackage.cpp \ $$PWD/qdeclarativeanimation.cpp \ $$PWD/qdeclarativesystempalette.cpp \ - $$PWD/qdeclarativespringfollow.cpp \ $$PWD/qdeclarativespringanimation.cpp \ $$PWD/qdeclarativesmoothedanimation.cpp \ - $$PWD/qdeclarativesmoothedfollow.cpp \ $$PWD/qdeclarativestate.cpp\ $$PWD/qdeclarativetransitionmanager.cpp \ $$PWD/qdeclarativestateoperations.cpp \ @@ -39,10 +37,8 @@ HEADERS += \ $$PWD/qdeclarativeanimation_p.h \ $$PWD/qdeclarativeanimation_p_p.h \ $$PWD/qdeclarativesystempalette_p.h \ - $$PWD/qdeclarativespringfollow_p.h \ $$PWD/qdeclarativespringanimation_p.h \ $$PWD/qdeclarativesmoothedanimation_p.h \ - $$PWD/qdeclarativesmoothedfollow_p.h \ $$PWD/qdeclarativesmoothedanimation_p_p.h \ $$PWD/qdeclarativestate_p.h\ $$PWD/qdeclarativestateoperations_p.h \ diff --git a/tests/auto/declarative/qdeclarativespringanimation/data/springanimation1.qml b/tests/auto/declarative/qdeclarativespringanimation/data/springanimation1.qml new file mode 100644 index 0000000..07587bd --- /dev/null +++ b/tests/auto/declarative/qdeclarativespringanimation/data/springanimation1.qml @@ -0,0 +1,4 @@ +import Qt 4.7 + +SpringAnimation { +} diff --git a/tests/auto/declarative/qdeclarativespringanimation/data/springanimation2.qml b/tests/auto/declarative/qdeclarativespringanimation/data/springanimation2.qml new file mode 100644 index 0000000..562f44a --- /dev/null +++ b/tests/auto/declarative/qdeclarativespringanimation/data/springanimation2.qml @@ -0,0 +1,9 @@ +import Qt 4.7 + +SpringAnimation { + to: 1.44; velocity: 0.9 + spring: 1.0; damping: 0.5 + epsilon: 0.25; modulus: 360.0 + mass: 2.0; + running: true; +} diff --git a/tests/auto/declarative/qdeclarativespringanimation/data/springanimation3.qml b/tests/auto/declarative/qdeclarativespringanimation/data/springanimation3.qml new file mode 100644 index 0000000..9f70bf4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativespringanimation/data/springanimation3.qml @@ -0,0 +1,8 @@ +import Qt 4.7 + +SpringAnimation { + to: 1.44; velocity: 0.9 + spring: 1.0; damping: 0.5 + epsilon: 0.25; modulus: 360.0 + mass: 2.0; running: false +} diff --git a/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro b/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro new file mode 100644 index 0000000..213b262 --- /dev/null +++ b/tests/auto/declarative/qdeclarativespringanimation/qdeclarativespringanimation.pro @@ -0,0 +1,16 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativespringanimation.cpp + +symbian: { + importFiles.sources = data + importFiles.path = . + DEPLOYMENT = importFiles +} else { + DEFINES += SRCDIR=\\\"$$PWD\\\" +} + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativespringanimation/tst_qdeclarativespringanimation.cpp b/tests/auto/declarative/qdeclarativespringanimation/tst_qdeclarativespringanimation.cpp new file mode 100644 index 0000000..4b17a47 --- /dev/null +++ b/tests/auto/declarative/qdeclarativespringanimation/tst_qdeclarativespringanimation.cpp @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include +#include +#include +#include +#include +#include "../../../shared/util.h" + +#ifdef Q_OS_SYMBIAN +// In Symbian OS test data is located in applications private dir +#define SRCDIR "." +#endif + +class tst_qdeclarativespringanimation : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativespringanimation(); + +private slots: + void defaultValues(); + void values(); + void disabled(); + +private: + QDeclarativeEngine engine; +}; + +tst_qdeclarativespringanimation::tst_qdeclarativespringanimation() +{ +} + +void tst_qdeclarativespringanimation::defaultValues() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/springanimation1.qml")); + QDeclarativeSpringAnimation *obj = qobject_cast(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 0.); + QCOMPARE(obj->velocity(), 0.); + QCOMPARE(obj->spring(), 0.); + QCOMPARE(obj->damping(), 0.); + QCOMPARE(obj->epsilon(), 0.01); + QCOMPARE(obj->modulus(), 0.); + QCOMPARE(obj->mass(), 1.); + QCOMPARE(obj->isRunning(), false); + + delete obj; +} + +void tst_qdeclarativespringanimation::values() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/springanimation2.qml")); + QDeclarativeSpringAnimation *obj = qobject_cast(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 1.44); + QCOMPARE(obj->velocity(), 0.9); + QCOMPARE(obj->spring(), 1.0); + QCOMPARE(obj->damping(), 0.5); + QCOMPARE(obj->epsilon(), 0.25); + QCOMPARE(obj->modulus(), 360.0); + QCOMPARE(obj->mass(), 2.0); + QCOMPARE(obj->isRunning(), true); + + QTRY_COMPARE(obj->isRunning(), false); + + delete obj; +} + +void tst_qdeclarativespringanimation::disabled() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/springanimation3.qml")); + QDeclarativeSpringAnimation *obj = qobject_cast(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 1.44); + QCOMPARE(obj->velocity(), 0.9); + QCOMPARE(obj->spring(), 1.0); + QCOMPARE(obj->damping(), 0.5); + QCOMPARE(obj->epsilon(), 0.25); + QCOMPARE(obj->modulus(), 360.0); + QCOMPARE(obj->mass(), 2.0); + QCOMPARE(obj->isRunning(), false); + + delete obj; +} + +QTEST_MAIN(tst_qdeclarativespringanimation) + +#include "tst_qdeclarativespringanimation.moc" diff --git a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow1.qml b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow1.qml deleted file mode 100644 index 8528cfa..0000000 --- a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow1.qml +++ /dev/null @@ -1,4 +0,0 @@ -import Qt 4.7 - -SpringFollow { -} diff --git a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml deleted file mode 100644 index 31a740a..0000000 --- a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml +++ /dev/null @@ -1,8 +0,0 @@ -import Qt 4.7 - -SpringFollow { - to: 1.44; velocity: 0.9 - spring: 1.0; damping: 0.5 - epsilon: 0.25; modulus: 360.0 - mass: 2.0; enabled: true -} diff --git a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml deleted file mode 100644 index 0fa4aa9..0000000 --- a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml +++ /dev/null @@ -1,8 +0,0 @@ -import Qt 4.7 - -SpringFollow { - to: 1.44; velocity: 0.9 - spring: 1.0; damping: 0.5 - epsilon: 0.25; modulus: 360.0 - mass: 2.0; enabled: false -} diff --git a/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro b/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro deleted file mode 100644 index 1c17ba0..0000000 --- a/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro +++ /dev/null @@ -1,16 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative gui -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativespringfollow.cpp - -symbian: { - importFiles.sources = data - importFiles.path = . - DEPLOYMENT = importFiles -} else { - DEFINES += SRCDIR=\\\"$$PWD\\\" -} - -CONFIG += parallel_test - diff --git a/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp b/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp deleted file mode 100644 index e0e2892..0000000 --- a/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include -#include -#include -#include -#include -#include "../../../shared/util.h" - -#ifdef Q_OS_SYMBIAN -// In Symbian OS test data is located in applications private dir -#define SRCDIR "." -#endif - -class tst_qdeclarativespringfollow : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativespringfollow(); - -private slots: - void defaultValues(); - void values(); - void disabled(); - -private: - QDeclarativeEngine engine; -}; - -tst_qdeclarativespringfollow::tst_qdeclarativespringfollow() -{ -} - -void tst_qdeclarativespringfollow::defaultValues() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/springfollow1.qml")); - QDeclarativeSpringFollow *obj = qobject_cast(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->to(), 0.); - QCOMPARE(obj->velocity(), 0.); - QCOMPARE(obj->spring(), 0.); - QCOMPARE(obj->damping(), 0.); - QCOMPARE(obj->epsilon(), 0.01); - QCOMPARE(obj->modulus(), 0.); - QCOMPARE(obj->value(), 0.); - QCOMPARE(obj->mass(), 1.); - QCOMPARE(obj->enabled(), true); - QCOMPARE(obj->inSync(), true); - - delete obj; -} - -void tst_qdeclarativespringfollow::values() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/springfollow2.qml")); - QDeclarativeSpringFollow *obj = qobject_cast(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->to(), 1.44); - QCOMPARE(obj->velocity(), 0.9); - QCOMPARE(obj->spring(), 1.0); - QCOMPARE(obj->damping(), 0.5); - QCOMPARE(obj->epsilon(), 0.25); - QCOMPARE(obj->modulus(), 360.0); - QCOMPARE(obj->mass(), 2.0); - QCOMPARE(obj->enabled(), true); - - QTRY_COMPARE(obj->value(), 1.44); - QTRY_COMPARE(obj->inSync(), true); - - delete obj; -} - -void tst_qdeclarativespringfollow::disabled() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/springfollow3.qml")); - QDeclarativeSpringFollow *obj = qobject_cast(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->to(), 1.44); - QCOMPARE(obj->velocity(), 0.9); - QCOMPARE(obj->spring(), 1.0); - QCOMPARE(obj->damping(), 0.5); - QCOMPARE(obj->epsilon(), 0.25); - QCOMPARE(obj->modulus(), 360.0); - QCOMPARE(obj->mass(), 2.0); - QCOMPARE(obj->enabled(), false); - - QCOMPARE(obj->value(), 0.0); - QCOMPARE(obj->inSync(), false); - - delete obj; -} - -QTEST_MAIN(tst_qdeclarativespringfollow) - -#include "tst_qdeclarativespringfollow.moc" -- cgit v0.12 From 3cf6e87b17d6ca722eea804d8e758879836f63fd Mon Sep 17 00:00:00 2001 From: mae Date: Thu, 8 Jul 2010 18:34:35 +0200 Subject: Fix crash Got introduced with change f62f6effab8d1551d8e5e5843dc478addee96de1 Reviewed-by: Roberto Raggi --- src/gui/text/qtextcursor.cpp | 1 + src/gui/text/qtextdocument_p.cpp | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp index 63aa946..daa40a1 100644 --- a/src/gui/text/qtextcursor.cpp +++ b/src/gui/text/qtextcursor.cpp @@ -81,6 +81,7 @@ QTextCursorPrivate::QTextCursorPrivate(const QTextCursorPrivate &rhs) currentCharFormat = rhs.currentCharFormat; visualNavigation = rhs.visualNavigation; keepPositionOnInsert = rhs.keepPositionOnInsert; + changed = rhs.changed; priv->addCursor(this); } diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 54bf36b..7b3f985 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -1229,12 +1229,15 @@ void QTextDocumentPrivate::finishEdit() } } + QList changedCursors; foreach (QTextCursorPrivate *curs, cursors) { if (curs->changed) { curs->changed = false; - emit q->cursorPositionChanged(QTextCursor(curs)); + changedCursors.append(QTextCursor(curs)); } } + foreach (const QTextCursor &cursor, changedCursors) + emit q->cursorPositionChanged(cursor); contentsChanged(); -- cgit v0.12 From b42c158cbd8a2c2b487f9d98a6782abcff8df44a Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 8 Jul 2010 16:13:01 +1000 Subject: Improve test reliability. --- .../qdeclarativetextinput/tst_qdeclarativetextinput.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 9ae7c99..859221e 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -429,6 +429,8 @@ void tst_qdeclarativetextinput::horizontalAlignment() QImage expect(expectfile); QCOMPARE(actual,expect); + + delete canvas; } void tst_qdeclarativetextinput::positionAt() @@ -473,11 +475,13 @@ void tst_qdeclarativetextinput::positionAt() void tst_qdeclarativetextinput::maxLength() { - //QString componentStr = "import Qt 4.7\nTextInput { maximumLength: 10; }"; QDeclarativeView *canvas = createView(SRCDIR "/data/maxLength.qml"); + QVERIFY(canvas->rootObject() != 0); canvas->show(); canvas->setFocus(); - QVERIFY(canvas->rootObject() != 0); + QApplication::setActiveWindow(canvas); + QTest::qWaitForWindowShown(canvas); + QDeclarativeTextInput *textinputObject = qobject_cast(canvas->rootObject()); QVERIFY(textinputObject != 0); QVERIFY(textinputObject->text().isEmpty()); -- cgit v0.12 From dd1663de18faa0aafb6cfd98e24e8ea6e416402d Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 9 Jul 2010 09:30:53 +1000 Subject: Clean up at the end of each test. --- .../qdeclarativeviewer/tst_qdeclarativeviewer.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index 9660430..695c038 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -132,6 +132,8 @@ void tst_QDeclarativeViewer::orientation() QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300)); QCOMPARE(viewer->size(), QSize(200, 300 + MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->size(), viewer->sizeHint()); + + delete viewer; } void tst_QDeclarativeViewer::loading() @@ -201,6 +203,8 @@ void tst_QDeclarativeViewer::loading() QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300)); QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height())); QCOMPARE(viewer->size(), viewer->sizeHint()); + + delete viewer; } void tst_QDeclarativeViewer::fileBrowser() @@ -235,6 +239,8 @@ void tst_QDeclarativeViewer::fileBrowser() QVERIFY(viewer->view()); QVERIFY(viewer->menuBar()); QVERIFY(browserItem); + + delete viewer; } void tst_QDeclarativeViewer::resizing() @@ -290,6 +296,8 @@ void tst_QDeclarativeViewer::resizing() rootItem->setWidth(150); rootItem->setHeight(200); QTRY_COMPARE(viewer->size(), QSize(250, 350)); + + delete viewer; } void tst_QDeclarativeViewer::paths() @@ -302,6 +310,8 @@ void tst_QDeclarativeViewer::paths() viewer->addPluginPath("miscPluginPath"); viewer->view()->engine()->pluginPathList().contains("miscPluginPath"); + + delete viewer; } void tst_QDeclarativeViewer::slowMode() @@ -311,6 +321,8 @@ void tst_QDeclarativeViewer::slowMode() viewer->setSlowMode(true); viewer->setSlowMode(false); + + delete viewer; } QTEST_MAIN(tst_QDeclarativeViewer) -- cgit v0.12 From 554ae0d13b1f88ed52a08eb1dad9b7ba7c686899 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 9 Jul 2010 10:28:56 +1000 Subject: doc improvements --- doc/src/declarative/declarativeui.qdoc | 10 +++++----- src/declarative/qml/qdeclarativecomponent.cpp | 28 ++++++++++++++++++++++----- src/declarative/qml/qdeclarativeengine.cpp | 4 ++++ 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index 4235c27..cd27c40 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -74,15 +74,15 @@ application or to build completely new applications. QML is fully \l \list \o \l {QML Documents} \o \l {Property Binding} -\o \l {Integrating JavaScript} -\o \l {QML Scope} \o \l {Network Transparency} +\o \l {QML Scope} +\o \l {Integrating JavaScript} \o \l {Data Models} \o \l {anchor-layout.html}{Anchor-based Layout} \o \l {qdeclarativestates.html}{States} \o \l {qdeclarativeanimation.html}{Animation} -\o \l {qdeclarativemodules.html}{Modules} \o \l {qdeclarativefocus.html}{Keyboard Focus} +\o \l {qdeclarativemodules.html}{Modules} \o \l {Extending types from QML} \o \l {qdeclarativedynamicobjects.html}{Dynamic Object Creation} \o \l {qmlruntime.html}{The Qt Declarative Runtime} @@ -90,10 +90,10 @@ application or to build completely new applications. QML is fully \l \section1 Using QML with C++ \list -\o \l {Tutorial: Writing QML extensions with C++} -\o \l {Extending QML in C++} \o \l {Using QML in C++ Applications} \o \l {Integrating QML with existing Qt UI code} +\o \l {Tutorial: Writing QML extensions with C++} +\o \l {Extending QML in C++} \endlist \section1 Reference diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 04ec382..36c4b49 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -108,27 +108,45 @@ class QByteArray; \brief The Component element encapsulates a QML component definition. Components are reusable, encapsulated QML elements with well-defined interfaces. - They are often defined in \l {qdeclarativedocuments.html}{Component Files}. - The \e Component element allows defining components within a QML file. - This can be useful for reusing a small component within a single QML - file, or for defining a component that logically belongs with the - file containing it. + Components are often defined by \l {qdeclarativedocuments.html}{component files} - + that is, \c .qml files. The \e Component element allows components to be defined + within QML items rather than in a separate file. This may be useful for reusing + a small component within a QML file, or for defining a component that logically + belongs with other QML components within a file. + + For example, here is a component that is used by multiple \l Loader objects: \qml Item { Component { id: redSquare + Rectangle { color: "red" width: 10 height: 10 } } + Loader { sourceComponent: redSquare } Loader { sourceComponent: redSquare; x: 20 } } \endqml + + Notice that while a \l Rectangle by itself would be automatically + rendered and displayed, this is not the case for the above rectangle + because it is defined inside a \c Component. The component encapsulates the + QML elements within, as if they were defined in a separate \c .qml + file, and is not loaded until requested (in this case, by the + two \l Loader objects). + + The Component element is commonly used to provide graphical components + for views. For example, the ListView::delegate property requires a Component + to specify how each list item is to be displayed. + + Component objects can also be dynamically generated using + \l{Qt::createComponent}{Qt.createComponent()}. */ /*! diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 2e37af7..00bc1b7 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -1090,6 +1090,8 @@ If you are certain the files will be local, you could simplify to: To create a QML object from an arbitrary string of QML (instead of a file), use \l{QML:Qt::createQmlObject()}{Qt.createQmlObject()}. + +\sa {Dynamic Object Management} */ QScriptValue QDeclarativeEnginePrivate::createComponent(QScriptContext *ctxt, QScriptEngine *engine) @@ -1137,6 +1139,8 @@ Each object in this array has the members \c lineNumber, \c columnNumber, \c fil Note that this function returns immediately, and therefore may not work if the \a qml string loads new components (that is, external QML files that have not yet been loaded). If this is the case, consider using \l{QML:Qt::createComponent()}{Qt.createComponent()} instead. + +\sa {Dynamic Object Management} */ QScriptValue QDeclarativeEnginePrivate::createQmlObject(QScriptContext *ctxt, QScriptEngine *engine) -- cgit v0.12 From 389f4b225eb69e10e946c28dfcddbff067cf0364 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Fri, 9 Jul 2010 12:11:39 +1000 Subject: Remove autotests of depracted element SmoothedFollow --- tests/auto/declarative/declarative.pro | 1 - .../data/smoothedfollow1.qml | 3 - .../data/smoothedfollow2.qml | 5 - .../data/smoothedfollow3.qml | 6 - .../data/smoothedfollowDisabled.qml | 13 -- .../data/smoothedfollowValueSource.qml | 13 -- .../qdeclarativesmoothedfollow.pro | 16 -- .../tst_qdeclarativesmoothedfollow.cpp | 194 --------------------- 8 files changed, 251 deletions(-) delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro delete mode 100644 tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 3d2dbf0..daffdef 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -52,7 +52,6 @@ SUBDIRS += \ qdeclarativeqt \ qdeclarativerepeater \ qdeclarativesmoothedanimation \ - qdeclarativesmoothedfollow\ qdeclarativespringfollow \ qdeclarativesqldatabase \ qdeclarativestates \ diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml deleted file mode 100644 index 8c9d8ad..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml +++ /dev/null @@ -1,3 +0,0 @@ -import Qt 4.7 - -SmoothedFollow {} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml deleted file mode 100644 index a634302..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml +++ /dev/null @@ -1,5 +0,0 @@ -import Qt 4.7 - -SmoothedFollow { - to: 10; duration: 300; reversingMode: SmoothedFollow.Immediate -} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml deleted file mode 100644 index c60da7f..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml +++ /dev/null @@ -1,6 +0,0 @@ -import Qt 4.7 - -SmoothedFollow { - to: 10; velocity: 250; reversingMode: SmoothedFollow.Sync - maximumEasingTime: 150 -} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml deleted file mode 100644 index 486bdee..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml +++ /dev/null @@ -1,13 +0,0 @@ -import Qt 4.7 - -Rectangle { - width: 300; height: 300; - Rectangle { - objectName: "theRect" - color: "red" - width: 60; height: 60; - x: 100; y: 100; - SmoothedFollow on x { id: animX; objectName: "animX"; to: 200; enabled: true; duration: 200 } - SmoothedFollow on y { id: animY; objectName: "animY"; to: 200; enabled: false; duration: 200 } - } -} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml deleted file mode 100644 index 2e01d74..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml +++ /dev/null @@ -1,13 +0,0 @@ -import Qt 4.7 - -Rectangle { - width: 300; height: 300; - Rectangle { - objectName: "theRect" - color: "red" - width: 60; height: 60; - x: 100; y: 100; - SmoothedFollow on x { objectName: "easeX"; to: 200; velocity: 500 } - SmoothedFollow on y { objectName: "easeY"; to: 200; duration: 250; velocity: 500 } - } -} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro b/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro deleted file mode 100644 index dff4922..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro +++ /dev/null @@ -1,16 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative gui -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativesmoothedfollow.cpp - -symbian: { - importFiles.sources = data - importFiles.path = . - DEPLOYMENT = importFiles -} else { - DEFINES += SRCDIR=\\\"$$PWD\\\" -} - -CONFIG += parallel_test - diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp b/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp deleted file mode 100644 index b9ac23f..0000000 --- a/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include -#include -#include -#include - -#include -#include -#include -#include "../../../shared/util.h" - -#ifdef Q_OS_SYMBIAN -// In Symbian OS test data is located in applications private dir -#define SRCDIR "." -#endif - -class tst_qdeclarativesmoothedfollow : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativesmoothedfollow(); - -private slots: - void defaultValues(); - void values(); - void disabled(); - void valueSource(); - void followTo(); - -private: - QDeclarativeEngine engine; -}; - -tst_qdeclarativesmoothedfollow::tst_qdeclarativesmoothedfollow() -{ -} - -void tst_qdeclarativesmoothedfollow::defaultValues() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollow1.qml")); - QDeclarativeSmoothedFollow *obj = qobject_cast(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->to(), 0.); - QCOMPARE(obj->velocity(), 200.); - QCOMPARE(obj->duration(), -1); - QCOMPARE(obj->maximumEasingTime(), -1); - QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedFollow::Eased); - - delete obj; -} - -void tst_qdeclarativesmoothedfollow::values() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollow2.qml")); - QDeclarativeSmoothedFollow *obj = qobject_cast(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->to(), 10.); - QCOMPARE(obj->velocity(), 200.); - QCOMPARE(obj->duration(), 300); - QCOMPARE(obj->maximumEasingTime(), -1); - QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedFollow::Immediate); - - delete obj; -} - -void tst_qdeclarativesmoothedfollow::disabled() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollow3.qml")); - QDeclarativeSmoothedFollow *obj = qobject_cast(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->to(), 10.); - QCOMPARE(obj->velocity(), 250.); - QCOMPARE(obj->maximumEasingTime(), 150); - QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedFollow::Sync); - - delete obj; -} - -void tst_qdeclarativesmoothedfollow::valueSource() -{ - QDeclarativeEngine engine; - - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollowValueSource.qml")); - - QDeclarativeRectangle *rect = qobject_cast(c.create()); - QVERIFY(rect); - - QDeclarativeRectangle *theRect = rect->findChild("theRect"); - QVERIFY(theRect); - - QDeclarativeSmoothedFollow *easeX = rect->findChild("easeX"); - QVERIFY(easeX); - QVERIFY(easeX->enabled()); - - QDeclarativeSmoothedFollow *easeY = rect->findChild("easeY"); - QVERIFY(easeY); - QVERIFY(easeY->enabled()); - - // XXX get the proper duration - QTest::qWait(200); - - QTRY_COMPARE(theRect->x(), easeX->to()); - QTRY_COMPARE(theRect->y(), easeY->to()); - - QTRY_COMPARE(theRect->x(), qreal(200)); - QTRY_COMPARE(theRect->y(), qreal(200)); -} - -void tst_qdeclarativesmoothedfollow::followTo() -{ - QDeclarativeView canvas; - canvas.setFixedSize(240,320); - - canvas.setSource(QUrl::fromLocalFile(SRCDIR "/data/smoothedfollowDisabled.qml")); - canvas.show(); - canvas.setFocus(); - QVERIFY(canvas.rootObject() != 0); - - QDeclarativeRectangle *rect = canvas.rootObject()->findChild("theRect"); - QVERIFY(rect != 0); - - QDeclarativeSmoothedFollow *animX = canvas.rootObject()->findChild("animX"); - QVERIFY(animX != 0); - QDeclarativeSmoothedFollow *animY = canvas.rootObject()->findChild("animY"); - QVERIFY(animY != 0); - - QVERIFY(animX->enabled()); - QVERIFY(!animY->enabled()); - - // animX should track 'to' - animX->setTo(50.0); - // animY should not track this 'to' change - animY->setTo(50.0); - - // XXX get the proper duration - QTest::qWait(250); - - QTRY_COMPARE(rect->x(), animX->to()); - - QCOMPARE(rect->x(), 50.0); - QCOMPARE(rect->y(), 100.0); -} - -QTEST_MAIN(tst_qdeclarativesmoothedfollow) - -#include "tst_qdeclarativesmoothedfollow.moc" -- cgit v0.12 From 31cd8c15c0fdb2f08c2652609a57413a715d1b13 Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Fri, 9 Jul 2010 14:07:31 +1000 Subject: Make test pass and fix docs following removal of SpringFollow --- src/declarative/util/qdeclarativesmoothedanimation.cpp | 2 +- src/declarative/util/qdeclarativespringanimation.cpp | 4 ++-- tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/declarative/util/qdeclarativesmoothedanimation.cpp b/src/declarative/util/qdeclarativesmoothedanimation.cpp index 6b6df4d..5d47c30 100644 --- a/src/declarative/util/qdeclarativesmoothedanimation.cpp +++ b/src/declarative/util/qdeclarativesmoothedanimation.cpp @@ -307,7 +307,7 @@ Rectangle { set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity of 0.5 will take 2000 ms to complete. - \sa SpringFollow, {QML Animation}, {declarative/animation/basics}{Animation basics example} + \sa {QML Animation}, {declarative/animation/basics}{Animation basics example} */ QDeclarativeSmoothedAnimation::QDeclarativeSmoothedAnimation(QObject *parent) diff --git a/src/declarative/util/qdeclarativespringanimation.cpp b/src/declarative/util/qdeclarativespringanimation.cpp index c098798..4cf2fc0 100644 --- a/src/declarative/util/qdeclarativespringanimation.cpp +++ b/src/declarative/util/qdeclarativespringanimation.cpp @@ -243,7 +243,7 @@ qreal QDeclarativeSpringAnimation::to() const } /*! - \qmlproperty real SpringFollow::to + \qmlproperty real SpringAnimation::to */ void QDeclarativeSpringAnimation::setTo(qreal value) @@ -265,7 +265,7 @@ qreal QDeclarativeSpringAnimation::from() const } /*! - \qmlproperty real SpringFollow::from + \qmlproperty real SpringAnimation::from */ void QDeclarativeSpringAnimation::setFrom(qreal value) diff --git a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp index 13960b1..5028ba1 100644 --- a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp +++ b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp @@ -279,7 +279,7 @@ void tst_qdeclarativedom::loadComposite() void tst_qdeclarativedom::testValueSource() { QByteArray qml = "import Qt 4.7\n" - "Rectangle { SpringFollow on height { spring: 1.4; damping: .15; to: Math.min(Math.max(-130, value*2.2 - 130), 133); }}"; + "Rectangle { SpringAnimation on height { spring: 1.4; damping: .15; to: Math.min(Math.max(-130, value*2.2 - 130), 133); }}"; QDeclarativeEngine freshEngine; QDeclarativeDomDocument document; @@ -295,7 +295,7 @@ void tst_qdeclarativedom::testValueSource() QDeclarativeDomObject valueSourceObject = valueSource.object(); QVERIFY(valueSourceObject.isValid()); - QVERIFY(valueSourceObject.objectType() == "Qt/SpringFollow"); + QVERIFY(valueSourceObject.objectType() == "Qt/SpringAnimation"); const QDeclarativeDomValue springValue = valueSourceObject.property("spring").value(); QVERIFY(!springValue.isInvalid()); -- cgit v0.12 From 83e3f716c795a8be0a6e5d6aa4d6ff51a994cae1 Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Fri, 9 Jul 2010 14:39:21 +1000 Subject: Fix qdoc warning. Reviewed-by: Trust Me --- src/network/access/qnetworkrequest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp index 911eadc..bccfec1 100644 --- a/src/network/access/qnetworkrequest.cpp +++ b/src/network/access/qnetworkrequest.cpp @@ -215,7 +215,7 @@ QT_BEGIN_NAMESPACE \since 4.7 - \value AuthenticationReuseControlAttribute + \value AuthenticationReuseAttribute Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic) Indicates whether to use cached authorization credentials in the request, if available. If this is set to QNetworkRequest::Manual and the authentication -- cgit v0.12 From 49b828102626ba6faa38ea48d9f570283dd7fa9f Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Fri, 9 Jul 2010 15:35:38 +1000 Subject: Fix crash with invalid role indexes --- src/declarative/util/qdeclarativelistmodel.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp index deb835d..3ede335 100644 --- a/src/declarative/util/qdeclarativelistmodel.cpp +++ b/src/declarative/util/qdeclarativelistmodel.cpp @@ -1022,6 +1022,8 @@ QVariant NestedListModel::data(int index, int role) const Q_ASSERT(_root && index >= 0 && index < _root->values.count()); checkRoles(); QVariant rv; + if (roleStrings.count() < role) + return rv; ModelNode *node = qvariant_cast(_root->values.at(index)); if (!node) -- cgit v0.12 From 5c50c6a782b127442c3fa748b3dd4d1007db69dc Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Fri, 9 Jul 2010 10:01:30 +0200 Subject: Updated WebKit to ad96ca2f9b57271da4ea7432022ac686ee0981c2 Integrated changes: || || FrameView's layout root can be detached by style recalc || || || innerHTML decompilation issues in textarea || || || REGRESSION: Trailing colon on hostnames (with no port specified) causes "Not allowed to use restricted network port" || || || [XHR] Cross-Origin synchronous request with credential raises NETWORK_ERR || || || Cross-origin bypass: iFrame.src can be set to a JavaScript URL via nodeValue or textContent || || || WebKit crash on WebCore::Node::nodeIndex() || || || Cross-origin bypass: Javascript URL can be set as iframe.src via multiple DOM aliases || || || [Qt] Rename QWebSettings::XSSAuditorEnabled to XSSAuditingEnabled || || || Use of stale pointers whilst normalizing DOM nodes with mutation event handlers that modify element attributes || || || [Qt] Canvas arcTo() should draw straight line to p1 if p0, p1 and p2 are collinear || || || [Qt]: REGRESSION(r58703): QWebSettings::JavascriptCanAccessClipboard has wrong case in "Javascript" part. || || || focus() behavior permits keystrokes to be redirected across domains || || || Crash in WebCore::toAlphabetic() while running MangleMe || || || WebKit should treat port numbers outside of the valid range as being blacklisted || || || Make sure that http URLs always have a host in SecurityOrigin || || || ZDI-CAN-765: CSS Charset Text Transformation Vulnerability || || || Cross-origin image theft via SVGs as a canvas pattern || || || [sg:high] Copying text to the system clipboard can be done in any context || || || REGRESSION (r47291): XHR allows arbitrary XSRF across domains || || || REGRESSION (4.0.5): Safari asks for credentials all the time when authenticating to Windows IIS Server || || || Memory Corruption with Drag-Drop item from a purged document. || || || Frame.src allows javascript URLs with starting spaces || || || Table layout crash bug || --- src/3rdparty/webkit/.tag | 2 +- src/3rdparty/webkit/VERSION | 2 +- src/3rdparty/webkit/WebCore/ChangeLog | 502 +++++++++++++++++++++ .../webkit/WebCore/bindings/js/JSAttrCustom.cpp | 10 +- .../webkit/WebCore/bindings/js/JSDOMBinding.cpp | 12 + .../webkit/WebCore/bindings/js/JSDOMBinding.h | 2 + .../webkit/WebCore/bindings/js/JSElementCustom.cpp | 11 +- .../WebCore/bindings/js/JSNamedNodeMapCustom.cpp | 32 ++ .../webkit/WebCore/bindings/js/JSNodeCustom.cpp | 70 ++- src/3rdparty/webkit/WebCore/css/CSSHelper.cpp | 6 +- src/3rdparty/webkit/WebCore/dom/Attr.idl | 2 + src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp | 47 +- src/3rdparty/webkit/WebCore/dom/Document.cpp | 22 + src/3rdparty/webkit/WebCore/dom/Document.h | 3 + src/3rdparty/webkit/WebCore/dom/Element.cpp | 14 +- src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp | 5 + src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h | 2 + src/3rdparty/webkit/WebCore/dom/NamedNodeMap.idl | 4 +- src/3rdparty/webkit/WebCore/dom/Node.idl | 4 +- src/3rdparty/webkit/WebCore/dom/Range.cpp | 25 + src/3rdparty/webkit/WebCore/dom/Range.h | 1 + .../webkit/WebCore/editing/EditorCommand.cpp | 21 +- src/3rdparty/webkit/WebCore/editing/markup.cpp | 4 +- .../webkit/WebCore/generated/JSNamedNodeMap.cpp | 18 +- .../webkit/WebCore/generated/JSNamedNodeMap.h | 4 + src/3rdparty/webkit/WebCore/generated/JSNode.cpp | 12 +- src/3rdparty/webkit/WebCore/generated/JSNode.h | 4 + .../html/canvas/CanvasRenderingContext2D.cpp | 2 +- .../WebCore/loader/DocumentThreadableLoader.cpp | 29 +- .../webkit/WebCore/page/DragController.cpp | 8 +- src/3rdparty/webkit/WebCore/page/DragController.h | 8 +- src/3rdparty/webkit/WebCore/page/EventHandler.cpp | 8 +- src/3rdparty/webkit/WebCore/page/FrameView.cpp | 7 +- .../webkit/WebCore/page/SecurityOrigin.cpp | 18 + src/3rdparty/webkit/WebCore/page/Settings.cpp | 6 + src/3rdparty/webkit/WebCore/page/Settings.h | 4 + src/3rdparty/webkit/WebCore/platform/KURL.cpp | 18 +- .../webkit/WebCore/platform/KURLGoogle.cpp | 10 +- .../webkit/WebCore/platform/graphics/qt/PathQt.cpp | 43 +- .../WebCore/platform/network/ProtectionSpace.h | 1 + .../webkit/WebCore/rendering/FixedTableLayout.cpp | 3 +- .../webkit/WebCore/rendering/RenderButton.h | 4 +- .../webkit/WebCore/rendering/RenderDataGrid.h | 2 + .../WebCore/rendering/RenderFileUploadControl.h | 2 + .../webkit/WebCore/rendering/RenderInline.cpp | 2 +- .../webkit/WebCore/rendering/RenderLayer.cpp | 27 +- .../webkit/WebCore/rendering/RenderListItem.h | 2 + .../webkit/WebCore/rendering/RenderListMarker.cpp | 6 +- .../webkit/WebCore/rendering/RenderMedia.h | 2 + .../webkit/WebCore/rendering/RenderMenuList.h | 2 + .../webkit/WebCore/rendering/RenderObject.h | 3 +- .../webkit/WebCore/rendering/RenderProgress.h | 2 + .../webkit/WebCore/rendering/RenderSlider.h | 2 + .../webkit/WebCore/rendering/RenderText.cpp | 2 +- .../webkit/WebCore/rendering/RenderTextControl.h | 2 + .../WebCore/rendering/RenderTextFragment.cpp | 4 +- src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp | 5 +- src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h | 2 +- src/3rdparty/webkit/WebKit/qt/ChangeLog | 62 +++ 59 files changed, 979 insertions(+), 160 deletions(-) diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 0b824b7..1d1c8ed 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -d59845f6fec84f15da116f50a1a0e52ce26116e9 +ad96ca2f9b57271da4ea7432022ac686ee0981c2 diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION index c970745..2e5ebd0 100644 --- a/src/3rdparty/webkit/VERSION +++ b/src/3rdparty/webkit/VERSION @@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from and has the sha1 checksum - d59845f6fec84f15da116f50a1a0e52ce26116e9 + ad96ca2f9b57271da4ea7432022ac686ee0981c2 diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index a4ae758..a993a97 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,505 @@ +2010-05-14 Abhishek Arya + + Reviewed by David Hyatt. + + Move the m_width(Length) and m_columns(RenderTable::ColumnStruct) + vector out-of-bounds check out of the ASSERT into the main code. + https://bugs.webkit.org/show_bug.cgi?id=38261 + + Test: fast/table/fixed-table-layout-large-colspan-crash.html + + * rendering/FixedTableLayout.cpp: + (WebCore::FixedTableLayout::calcWidthArray): + +2010-05-21 Beth Dakin + + Reviewed by Darin Adler. + + Fix for Crash in WebCore::toAlphabetic() + while running MangleMe + -and corresponding- + https://bugs.webkit.org/show_bug.cgi?id=39508 + + The math was slightly off here, and we wound up trying to access an + array at index -1 in some cases. We need to decrement numberShadow + rather than subtracting one from the result of the modulo + operation. + + * rendering/RenderListMarker.cpp: + (WebCore::toAlphabeticOrNumeric): + +2010-05-20 Dan Bernstein + + Reviewed by Dave Hyatt. + + Textarea using custom font appears blank + + Test: fast/css/font-face-in-shadow-DOM.html + + When a remote font is loaded, CSSFontSelector forces a style recalc, which replaces all + RenderSyles that have FontFallbackLists referencing the placeholder font with fresh + RenderStyles. However, it does not descend into shadow DOM trees, so those may end up with + styles that still reference the placeholder font. + + The fix is to add RenderObject::requiresForcedStyleRecalcPropagation() and have it return + true from renderers that maintain shadow DOM trees or otherwise keep their own RenderStyles. + + * dom/Element.cpp: + (WebCore::Element::recalcStyle): Check if forced style recalc needs to propagated. + * rendering/RenderButton.h: + (WebCore::RenderButton::requiresForcedStyleRecalcPropagation): + * rendering/RenderDataGrid.h: + (WebCore::RenderDataGrid::requiresForcedStyleRecalcPropagation): + * rendering/RenderFileUploadControl.h: + (WebCore::RenderFileUploadControl::requiresForcedStyleRecalcPropagation): + * rendering/RenderListItem.h: + (WebCore::RenderListItem::requiresForcedStyleRecalcPropagation): + * rendering/RenderMedia.h: + (WebCore::RenderMedia::requiresForcedStyleRecalcPropagation): + * rendering/RenderMenuList.h: + (WebCore::RenderMenuList::RenderMenuList::requiresForcedStyleRecalcPropagation): + * rendering/RenderObject.h: + (WebCore::RenderObject::requiresForcedStyleRecalcPropagation): + * rendering/RenderProgress.h: + (WebCore::RenderProgress::requiresForcedStyleRecalcPropagation): + * rendering/RenderSlider.h: + (WebCore::RenderSlider::requiresForcedStyleRecalcPropagation): + * rendering/RenderTextControl.h: + (WebCore::RenderTextControl::requiresForcedStyleRecalcPropagation): + +2010-04-02 Justin Schuh + + Reviewed by Alexey Proskuryakov. + + XHR allows arbitrary XSRF across domains + https://bugs.webkit.org/show_bug.cgi?id=36843 + + Added a one-line change to prevent bypassing the XDC check on + synchronous preflighted requests. Added layout tests to cover + variations of this problem. + + Tests: http/tests/xmlhttprequest/access-control-preflight-async-header-denied.html + http/tests/xmlhttprequest/access-control-preflight-async-method-denied.html + http/tests/xmlhttprequest/access-control-preflight-sync-header-denied.html + http/tests/xmlhttprequest/access-control-preflight-sync-method-denied.html + + * loader/DocumentThreadableLoader.cpp: + (WebCore::DocumentThreadableLoader::preflightFailure): + +2010-04-28 Julien Chaffraix + + Reviewed by Alexey Proskuryakov. + + [XHR] Cross-Origin synchronous request with credential raises NETWORK_ERR + https://bugs.webkit.org/show_bug.cgi?id=37781 + + + Tests: http/tests/xmlhttprequest/access-control-preflight-credential-async.html + http/tests/xmlhttprequest/access-control-preflight-credential-sync.html + + Rolling the patch in as I could not reproduce Qt results locally. + + * loader/DocumentThreadableLoader.cpp: + (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Now we remove the + credential from the request here to avoid forgetting to do so in the different code path. + (WebCore::DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest): Just add the + "Origin" header. + (WebCore::DocumentThreadableLoader::loadRequest): Check here the the credential have + been removed so that we don't leak them. Also tweaked a comment to make it clear that + the URL check has issue when credential is involved. + +2010-04-21 Alexey Proskuryakov + + Reviewed by Adam Roben. + + Windows build fix. + + * platform/network/cf/ResourceHandleCFNet.cpp: Declare CFURLConnectionCreateWithProperties + for now, as it's mistakenly missing from WebKitSupportLibrary headers. + +2010-05-19 Abhishek Arya + + Reviewed by David Hyatt. + + Check that the node is a text node before doing a static cast + to a Text class pointer. + https://bugs.webkit.org/show_bug.cgi?id=38626 + + Test: fast/text/text-transform-nontext-node-crash.xhtml + + * rendering/RenderText.cpp: + (WebCore::RenderText::originalText): + * rendering/RenderTextFragment.cpp: + (WebCore::RenderTextFragment::originalText): + (WebCore::RenderTextFragment::previousCharacter): + +2010-05-12 Abhishek Arya + + Reviewed by Darin Adler. + + HTML Entity Escape the contents of a textarea node when accessed + via the innerHTML and outerHTML node properties. + https://bugs.webkit.org/show_bug.cgi?id=38922 + + Test: fast/innerHTML/innerHTML-special-elements.html + + * editing/markup.cpp: + (WebCore::appendStartMarkup): + +2010-05-12 James Robinson + + Patch by Dan Bernstein. + + Reviewed by David Hyatt. + + Fix marking the layout root's parent as needing layout + https://bugs.webkit.org/show_bug.cgi?id=37760 + + If an element gets marked as needing layout due to the recalcStyle() + call in FrameView::layout(), the m_layoutSchedulingEnabled flag will + be set to false. It's possible at this point that a parent of the + existing FrameView::m_layoutRoot will be marked as needing layout. + + This patch updates FrameView::scheduleRelayoutOfSubtree to account + for this case. + + Manual test only due to subtle timing issues. + + * manual-tests/layoutroot_detach.xml: Added. + * page/FrameView.cpp: + (WebCore::FrameView::scheduleRelayoutOfSubtree): + +2010-05-10 Sam Weinig + + Reviewed by Darin Adler. + + Fix for https://bugs.webkit.org/show_bug.cgi?id=38583 + Crash in Element::normalizeAttributes. + + Test: fast/dom/Element/normalize-crash.html + + * dom/Element.cpp: + (WebCore::Element::normalizeAttributes): Copy attributes to a vector + before iterating. + * dom/NamedAttrMap.cpp: + (WebCore::NamedNodeMap::copyAttributesToVector): Added. + * dom/NamedAttrMap.h: + +2010-05-10 Alexey Proskuryakov + + Reviewed by Darin Adler. + + Based on a patch by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=28697 + WebKit crash on WebCore::Node::nodeIndex() + + It's not OK to call ContainerNode::willRemoveChild() in a loop, because Range code assumes + that it can adjust start and end position to any node except for the one being removed - + so these notifications cannot be batched. + + Test: fast/dom/Range/remove-all-children-crash.html + + * dom/ContainerNode.cpp: + (WebCore::willRemoveChild): Removed unused ExceptionCode. + (WebCore::willRemoveChildren): New function, used in removeChildren() case. + (WebCore::ContainerNode::removeChild): ExceptionCode return was always 0, don't bother with it. + (WebCore::ContainerNode::removeChildren): Call willRemoveChildrenFromNode. + (WebCore::dispatchChildRemovalEvents): Moved some logic out into willRemoveChildrenFromNode + and willRemoveChild. + + * dom/Document.cpp: + (WebCore::Document::nodeChildrenWillBeRemoved): New function, used in removeChildren() case. + + * dom/Document.h: + (WebCore::Document::nodeChildrenWillBeRemoved): New function, used in removeChildren() case. + + * dom/Range.h: + * dom/Range.cpp: + (WebCore::boundaryNodeChildrenWillBeRemoved): New function, used in removeChildren() case. + (WebCore::Range::nodeChildrenWillBeRemoved): Ditto. + +2010-05-03 Alexey Proskuryakov + + Reviewed by Adam Barth. + + https://bugs.webkit.org/show_bug.cgi?id=38497 + Make sure that http URLs always have a host in SecurityOrigin + + This is a hardening fix, and behavior really depends on what an underlying networking layer + does. So, no test. + + * page/SecurityOrigin.cpp: + (WebCore::schemeRequiresAuthority): List schemes that need an authority for successful loading. + (WebCore::SecurityOrigin::SecurityOrigin): Never let e.g. http origins with empty authorities + have the same security origin. + +2010-05-03 Abhishek Arya + + Reviewed by Adam Barth. + + Add support for controlling clipboard access from javascript. + Clipboard access from javascript is disabled by default. + https://bugs.webkit.org/show_bug.cgi?id=27751 + + Test: editing/execCommand/clipboard-access.html + + * WebCore.base.exp: + * editing/EditorCommand.cpp: + (WebCore::supportedCopyCut): + (WebCore::supportedPaste): + (WebCore::createCommandMap): + * page/Settings.cpp: + (WebCore::Settings::Settings): + (WebCore::Settings::setJavaScriptCanAccessClipboard): + * page/Settings.h: + (WebCore::Settings::javaScriptCanAccessClipboard): + +2010-04-30 Abhishek Arya + + Reviewed by David Kilzer. + + Convert m_documentUnderMouse, m_dragInitiator to RefPtr. + Eliminated unused m_dragInitiator accessor to prevent dereferencing. + https://bugs.webkit.org/show_bug.cgi?id=37618 + + Test: editing/pasteboard/drag-drop-iframe-refresh-crash.html + + * page/DragController.cpp: + (WebCore::DragController::tryDocumentDrag): + (WebCore::DragController::concludeEditDrag): + * page/DragController.h: + (WebCore::DragController::draggingImageURL): + (WebCore::DragController::documentUnderMouse): + +2010-04-14 Justin Schuh + + Reviewed by Adam Barth. + + Javascript URL can be set as iframe.src via multiple DOM aliases + https://bugs.webkit.org/show_bug.cgi?id=37031 + + Moved frame/iframe checks from Attr to Node on inherited members. + Node child manipulation methods now return NOT_SUPPORTED_ERR if used + on a frame/iframe src attribute. + NamedNodeMap set methods now perform frame/iframe src checks. + Moved allowSettingSrcToJavascriptURL static helper function from + JSElementCustom.cpp to exported function in JSDOMBinding.h. + + * bindings/js/JSAttrCustom.cpp: + (WebCore::JSAttr::setValue): + * bindings/js/JSDOMBinding.cpp: + (WebCore::allowSettingSrcToJavascriptURL): + * bindings/js/JSDOMBinding.h: + * bindings/js/JSElementCustom.cpp: + * bindings/js/JSNamedNodeMapCustom.cpp: + (WebCore::JSNamedNodeMap::setNamedItem): + (WebCore::JSNamedNodeMap::setNamedItemNS): + * bindings/js/JSNodeCustom.cpp: + (WebCore::isAttrFrameSrc): + (WebCore::JSNode::setNodeValue): + (WebCore::JSNode::setTextContent): + (WebCore::JSNode::insertBefore): + (WebCore::JSNode::replaceChild): + (WebCore::JSNode::removeChild): + (WebCore::JSNode::appendChild): + * bindings/v8/custom/V8AttrCustom.cpp: + * bindings/v8/custom/V8NamedNodeMapCustom.cpp: + (WebCore::V8NamedNodeMap::setNamedItemNSCallback): + (WebCore::V8NamedNodeMap::setNamedItemCallback): + (WebCore::toV8): + * bindings/v8/custom/V8NodeCustom.cpp: + (WebCore::isFrameSrc): + (WebCore::V8Node::textContentAccessorSetter): + (WebCore::V8Node::nodeValueAccessorSetter): + (WebCore::V8Node::insertBeforeCallback): + (WebCore::V8Node::replaceChildCallback): + (WebCore::V8Node::removeChildCallback): + (WebCore::V8Node::appendChildCallback): + * dom/Attr.idl: + * dom/NamedNodeMap.idl: + * dom/Node.idl: + +2010-03-26 Justin Schuh + + Reviewed by Adam Barth. + + Security: iFrame.src accepts JavaScript URL via nodeValue or textContent + https://bugs.webkit.org/show_bug.cgi?id=36502 + + Overrode inherited nodeValue and textContent in Attr.idl so they proxy + to value, which performs a security check. + + Test: http/tests/security/xss-DENIED-iframe-src-alias.html + + * bindings/js/JSAttrCustom.cpp: + (WebCore::JSAttr::nodeValue): + (WebCore::JSAttr::setNodeValue): + (WebCore::JSAttr::textContent): + (WebCore::JSAttr::setTextContent): + * bindings/v8/custom/V8AttrCustom.cpp: + (WebCore::V8Attr::nodeValueAccessorSetter): + (WebCore::V8Attr::nodeValueAccessorGetter): + (WebCore::V8Attr::textContentAccessorSetter): + (WebCore::V8Attr::textContentAccessorGetter): + * dom/Attr.idl: + +2010-05-05 Alexey Proskuryakov + + Reviewed by Darin Adler. + + https://bugs.webkit.org/show_bug.cgi?id=38260 + Fix whitespace removing in deprecatedParseURL(). + + Broken all the way since r4 (yes, that's a revision number). + + Test: http/tests/security/xss-DENIED-javascript-with-spaces.html + + * css/CSSHelper.cpp: (WebCore::deprecatedParseURL): Fixed loop conditions for remaining length. + +2010-04-23 Dan Bernstein + + Reviewed by Simon Fraser. + + :after content is duplicated + + Test: fast/css-generated-content/after-duplicated-after-split.html + + * rendering/RenderInline.cpp: + (WebCore::RenderInline::splitInlines): Pass the correct owner of the child list. + +2010-03-30 Chris Evans + + Reviewed by Adam Barth. + + Taint the canvas if an SVG-derived pattern is rendered into it. + + https://bugs.webkit.org/show_bug.cgi?id=36838 + + Test: fast/canvas/svg-taint.html + + * html/canvas/CanvasRenderingContext2D.cpp: + (WebCore::CanvasRenderingContext2D::createPattern): + Take into account the image's hasSingleSecurityOrigin() property. + +2010-04-07 Alexey Proskuryakov + + Reviewed by Darinn Adler. + + https://bugs.webkit.org/show_bug.cgi?id=37230 + REGRESSION (4.0.5): Safari asks for credentials all the time when + authenticating to Windows IIS Server + + * platform/network/ProtectionSpace.h: (WebCore::ProtectionSpaceAuthenticationScheme): Added + a constant for ProtectionSpaceAuthenticationSchemeUnknown. + + * platform/network/cf/AuthenticationCF.cpp: (WebCore::core): + * platform/network/cf/SocketStreamHandleCFNet.cpp: (WebCore::authenticationSchemeFromAuthenticationMethod): + Return ProtectionSpaceAuthenticationSchemeUnknown for unknown scheme. + + * platform/network/mac/AuthenticationMac.mm: + (WebCore::mac): Support NTLM on systems older than 10.6. We actually get this string from + NSURLConnection, even though there was no public constant. + (WebCore::core): Return ProtectionSpaceAuthenticationSchemeUnknown for unknown scheme. + +2010-04-19 Dan Bernstein + + Reviewed by Darin Adler. + + Make the fix for from r57759 more robust. + + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::updateHoverActiveState): Use RefPtrs for the Nodes. + +2010-04-16 Dan Bernstein + + Reviewed by Simon Fraser. + + Crash when updating hover state + + Test: fast/dynamic/hover-style-recalc-crash.html + + Updating the hover state of an element caused the document to need style + recalc, and then updating the hover state of a link caused style recalc, + which changed the render tree while updateHoverActiveState() was iterating + over it, leading to a crash. + + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::updateHoverActiveState): Collect the nodes to be + updated into vectors, then update their active and hover states. + +2010-03-31 Mark Rowe + + Reviewed by Darin Adler. + + REGRESSION: Trailing colon on hostnames (with no port specified) causes "Not allowed to use restricted network port" + + * platform/KURL.cpp: + (WebCore::KURL::port): Explicitly handle the case of a colon being present in the URL after the host name but with + no port number before the path. This is handled in the same manner as the colon and port being omitted completely. + +2010-03-24 Mark Rowe + + Revert the portion of r56489 that dealt with port zero as it introduced some test failures. + + * platform/KURL.cpp: + (WebCore::KURL::port): Use the "ok" argument to charactersToUIntStrict to determine whether + it was able to successfully parse the string as an unsigned integer, rather than relying on + the fact it returned zero when it failed. + +2010-03-24 Mark Rowe + + Reviewed by Darin Adler. + + WebKit should treat port numbers outside the valid range as being blacklisted + / + + * platform/KURL.cpp: + (WebCore::KURL::port): Map invalid port numbers to invalidPortNumber. + (WebCore::portAllowed): Add invalidPortNumber to the blacklist. + * platform/KURLGoogle.cpp: invalid port numbers to invalidPortNumber. + (WebCore::KURL::port): Add invalidPortNumber to the blacklist. + Also bring this in to sync with KURL. Having this identical code in two places is stupid. + +2010-05-05 Alexey Proskuryakov + + Reviewed by Adele Peterson. + + https://bugs.webkit.org/show_bug.cgi?id=26824 + EventHandler can operate on a wrong frame if focus changes during + keyboard event dispatch. + + EventHandler object is tied to a frame, so it's wrong for it to continue processing a keyboard + event if focused frame changes between keydown and keypress. + + * manual-tests/focus-change-between-key-events.html: Added. + + * page/EventHandler.cpp: (WebCore::EventHandler::keyEvent): Bail out early if focused frame + changes while dispatching keydown. Also made similar changes for Windows to maintain matching + behavior, even though EventHandler was re-entered anyway due to WM_KEYDOWN and WM_CHAR being + separate events. + +2010-07-02 Tor Arne Vestbø + + Reviewed by Simon Hausmann. + + [Qt] Canvas arcTo() should draw straight line to p1 if p0, p1 and p2 are collinear + + The implementation of PathQt's addArcTo() was not float-safe and also had + a case where it drew an 'infinite' line, which is not part of the spec. + + http://www.whatwg.org/specs/web-apps/current-work/#dom-context-2d-arcto + + We now use qFuzzyCompare() in both cases. The method isPointOnPathBorder() + also had the same problem, and was refactored a bit in the process of fixing + the bug. + + Initial patch by Andreas Kling. + + https://bugs.webkit.org/show_bug.cgi?id=41412 + + * platform/graphics/qt/PathQt.cpp: + 2010-03-26 Shu Chang Reviewed by Eric Seidel. diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp index 3c01535..4cd40ac 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp @@ -33,6 +33,7 @@ #include "Document.h" #include "HTMLFrameElementBase.h" #include "HTMLNames.h" +#include "JSDOMBinding.h" using namespace JSC; @@ -46,13 +47,8 @@ void JSAttr::setValue(ExecState* exec, JSValue value) String attrValue = valueToStringWithNullCheck(exec, value); Element* ownerElement = imp->ownerElement(); - if (ownerElement && (ownerElement->hasTagName(iframeTag) || ownerElement->hasTagName(frameTag))) { - if (equalIgnoringCase(imp->name(), "src") && protocolIsJavaScript(deprecatedParseURL(attrValue))) { - Document* contentDocument = static_cast(ownerElement)->contentDocument(); - if (contentDocument && !checkNodeSecurity(exec, contentDocument)) - return; - } - } + if (ownerElement && !allowSettingSrcToJavascriptURL(exec, ownerElement, imp->name(), attrValue)) + return; ExceptionCode ec = 0; imp->setValue(attrValue, ec); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp index f294dad..393c1ee 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp @@ -24,6 +24,7 @@ #include "debugger/DebuggerCallFrame.h" #include "ActiveDOMObject.h" +#include "CSSHelper.h" #include "DOMCoreException.h" #include "DOMObjectHashTableMap.h" #include "Document.h" @@ -33,6 +34,7 @@ #include "Frame.h" #include "HTMLAudioElement.h" #include "HTMLCanvasElement.h" +#include "HTMLFrameElementBase.h" #include "HTMLImageElement.h" #include "HTMLNames.h" #include "HTMLScriptElement.h" @@ -630,6 +632,16 @@ bool shouldAllowNavigation(ExecState* exec, Frame* frame) return lexicalFrame && lexicalFrame->loader()->shouldAllowNavigation(frame); } +bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* element, const String& name, const String& value) +{ + if ((element->hasTagName(iframeTag) || element->hasTagName(frameTag)) && equalIgnoringCase(name, "src") && protocolIsJavaScript(deprecatedParseURL(value))) { + Document* contentDocument = static_cast(element)->contentDocument(); + if (contentDocument && !checkNodeSecurity(exec, contentDocument)) + return false; + } + return true; +} + void printErrorMessageForFrame(Frame* frame, const String& message) { if (!frame) diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h index 219472b..40f7e40 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h @@ -301,6 +301,8 @@ namespace WebCore { bool allowsAccessFromFrame(JSC::ExecState*, Frame*); bool allowsAccessFromFrame(JSC::ExecState*, Frame*, String& message); bool shouldAllowNavigation(JSC::ExecState*, Frame*); + bool allowSettingSrcToJavascriptURL(JSC::ExecState*, Element*, const String&, const String&); + void printErrorMessageForFrame(Frame*, const String& message); JSC::JSValue objectToStringFunctionGetter(JSC::ExecState*, JSC::JSValue, const JSC::Identifier& propertyName); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp index c725290..94012fd 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp @@ -36,6 +36,7 @@ #include "HTMLFrameElementBase.h" #include "HTMLNames.h" #include "JSAttr.h" +#include "JSDOMBinding.h" #include "JSHTMLElementWrapperFactory.h" #include "JSNodeList.h" #include "NodeList.h" @@ -63,16 +64,6 @@ void JSElement::markChildren(MarkStack& markStack) markDOMObjectWrapper(markStack, globalData, static_cast(element)->inlineStyleDecl()); } -static inline bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* element, const String& name, const String& value) -{ - if ((element->hasTagName(iframeTag) || element->hasTagName(frameTag)) && equalIgnoringCase(name, "src") && protocolIsJavaScript(deprecatedParseURL(value))) { - Document* contentDocument = static_cast(element)->contentDocument(); - if (contentDocument && !checkNodeSecurity(exec, contentDocument)) - return false; - } - return true; -} - JSValue JSElement::setAttribute(ExecState* exec, const ArgList& args) { ExceptionCode ec = 0; diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodeMapCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodeMapCustom.cpp index 13f3628..965498a 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodeMapCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodeMapCustom.cpp @@ -35,6 +35,38 @@ using namespace JSC; namespace WebCore { +JSValue JSNamedNodeMap::setNamedItem(ExecState* exec, const ArgList& args) +{ + NamedNodeMap* imp = static_cast(impl()); + ExceptionCode ec = 0; + Node* newNode = toNode(args.at(0)); + + if (newNode && newNode->nodeType() == Node::ATTRIBUTE_NODE && imp->element()) { + if (!allowSettingSrcToJavascriptURL(exec, imp->element(), newNode->nodeName(), newNode->nodeValue())) + return jsNull(); + } + + JSValue result = toJS(exec, globalObject(), WTF::getPtr(imp->setNamedItem(newNode, ec))); + setDOMException(exec, ec); + return result; +} + +JSValue JSNamedNodeMap::setNamedItemNS(ExecState* exec, const ArgList& args) +{ + NamedNodeMap* imp = static_cast(impl()); + ExceptionCode ec = 0; + Node* newNode = toNode(args.at(0)); + + if (newNode && newNode->nodeType() == Node::ATTRIBUTE_NODE && imp->element()) { + if (!allowSettingSrcToJavascriptURL(exec, imp->element(), newNode->nodeName(), newNode->nodeValue())) + return jsNull(); + } + + JSValue result = toJS(exec, globalObject(), WTF::getPtr(imp->setNamedItemNS(newNode, ec))); + setDOMException(exec, ec); + return result; +} + bool JSNamedNodeMap::canGetItemsForName(ExecState*, NamedNodeMap* impl, const Identifier& propertyName) { return impl->getNamedItem(propertyName); diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSNodeCustom.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSNodeCustom.cpp index 134c581..bf6c633 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSNodeCustom.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSNodeCustom.cpp @@ -38,6 +38,7 @@ #include "JSAttr.h" #include "JSCDATASection.h" #include "JSComment.h" +#include "JSDOMBinding.h" #include "JSDocument.h" #include "JSDocumentFragment.h" #include "JSDocumentType.h" @@ -66,12 +67,53 @@ using namespace JSC; namespace WebCore { -typedef int ExpectionCode; +static inline bool isAttrFrameSrc(Element *element, const String& name) +{ + return element && (element->hasTagName(HTMLNames::iframeTag) || element->hasTagName(HTMLNames::frameTag)) && equalIgnoringCase(name, "src"); +} + +void JSNode::setNodeValue(JSC::ExecState* exec, JSC::JSValue value) +{ + Node* imp = static_cast(impl()); + String nodeValue = valueToStringWithNullCheck(exec, value); + + if (imp->nodeType() == Node::ATTRIBUTE_NODE) { + Element* ownerElement = static_cast(impl())->ownerElement(); + if (ownerElement && !allowSettingSrcToJavascriptURL(exec, ownerElement, imp->nodeName(), nodeValue)) + return; + } + + ExceptionCode ec = 0; + imp->setNodeValue(nodeValue, ec); + setDOMException(exec, ec); +} + +void JSNode::setTextContent(JSC::ExecState* exec, JSC::JSValue value) +{ + Node* imp = static_cast(impl()); + String nodeValue = valueToStringWithNullCheck(exec, value); + + if (imp->nodeType() == Node::ATTRIBUTE_NODE) { + Element* ownerElement = static_cast(impl())->ownerElement(); + if (ownerElement && !allowSettingSrcToJavascriptURL(exec, ownerElement, imp->nodeName(), nodeValue)) + return; + } + + ExceptionCode ec = 0; + imp->setTextContent(nodeValue, ec); + setDOMException(exec, ec); +} JSValue JSNode::insertBefore(ExecState* exec, const ArgList& args) { + Node* imp = static_cast(impl()); + if (imp->nodeType() == Node::ATTRIBUTE_NODE && isAttrFrameSrc(static_cast(impl())->ownerElement(), imp->nodeName())) { + setDOMException(exec, NOT_SUPPORTED_ERR); + return jsNull(); + } + ExceptionCode ec = 0; - bool ok = impl()->insertBefore(toNode(args.at(0)), toNode(args.at(1)), ec, true); + bool ok = imp->insertBefore(toNode(args.at(0)), toNode(args.at(1)), ec, true); setDOMException(exec, ec); if (ok) return args.at(0); @@ -80,8 +122,14 @@ JSValue JSNode::insertBefore(ExecState* exec, const ArgList& args) JSValue JSNode::replaceChild(ExecState* exec, const ArgList& args) { + Node* imp = static_cast(impl()); + if (imp->nodeType() == Node::ATTRIBUTE_NODE && isAttrFrameSrc(static_cast(impl())->ownerElement(), imp->nodeName())) { + setDOMException(exec, NOT_SUPPORTED_ERR); + return jsNull(); + } + ExceptionCode ec = 0; - bool ok = impl()->replaceChild(toNode(args.at(0)), toNode(args.at(1)), ec, true); + bool ok = imp->replaceChild(toNode(args.at(0)), toNode(args.at(1)), ec, true); setDOMException(exec, ec); if (ok) return args.at(1); @@ -90,8 +138,14 @@ JSValue JSNode::replaceChild(ExecState* exec, const ArgList& args) JSValue JSNode::removeChild(ExecState* exec, const ArgList& args) { + Node* imp = static_cast(impl()); + if (imp->nodeType() == Node::ATTRIBUTE_NODE && isAttrFrameSrc(static_cast(impl())->ownerElement(), imp->nodeName())) { + setDOMException(exec, NOT_SUPPORTED_ERR); + return jsNull(); + } + ExceptionCode ec = 0; - bool ok = impl()->removeChild(toNode(args.at(0)), ec); + bool ok = imp->removeChild(toNode(args.at(0)), ec); setDOMException(exec, ec); if (ok) return args.at(0); @@ -100,8 +154,14 @@ JSValue JSNode::removeChild(ExecState* exec, const ArgList& args) JSValue JSNode::appendChild(ExecState* exec, const ArgList& args) { + Node* imp = static_cast(impl()); + if (imp->nodeType() == Node::ATTRIBUTE_NODE && isAttrFrameSrc(static_cast(impl())->ownerElement(), imp->nodeName())) { + setDOMException(exec, NOT_SUPPORTED_ERR); + return jsNull(); + } + ExceptionCode ec = 0; - bool ok = impl()->appendChild(toNode(args.at(0)), ec, true); + bool ok = imp->appendChild(toNode(args.at(0)), ec, true); setDOMException(exec, ec); if (ok) return args.at(0); diff --git a/src/3rdparty/webkit/WebCore/css/CSSHelper.cpp b/src/3rdparty/webkit/WebCore/css/CSSHelper.cpp index 8e6f3a0..c3418b4 100644 --- a/src/3rdparty/webkit/WebCore/css/CSSHelper.cpp +++ b/src/3rdparty/webkit/WebCore/css/CSSHelper.cpp @@ -36,7 +36,7 @@ String deprecatedParseURL(const String& url) int o = 0; int l = i->length(); - while (o < l && (*i)[o] <= ' ') { + while (0 < l && (*i)[o] <= ' ') { ++o; --l; } @@ -53,7 +53,7 @@ String deprecatedParseURL(const String& url) l -= 5; } - while (o < l && (*i)[o] <= ' ') { + while (0 < l && (*i)[o] <= ' ') { ++o; --l; } @@ -65,7 +65,7 @@ String deprecatedParseURL(const String& url) l -= 2; } - while (o < l && (*i)[o] <= ' ') { + while (0 < l && (*i)[o] <= ' ') { ++o; --l; } diff --git a/src/3rdparty/webkit/WebCore/dom/Attr.idl b/src/3rdparty/webkit/WebCore/dom/Attr.idl index af84478..3c73bc0 100644 --- a/src/3rdparty/webkit/WebCore/dom/Attr.idl +++ b/src/3rdparty/webkit/WebCore/dom/Attr.idl @@ -28,7 +28,9 @@ module core { // DOM Level 1 readonly attribute [ConvertNullStringTo=Null] DOMString name; + readonly attribute boolean specified; + attribute [ConvertNullStringTo=Null, ConvertNullToNullString, CustomSetter] DOMString value setter raises(DOMException); diff --git a/src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp b/src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp index fb2852f..c17489a 100644 --- a/src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp +++ b/src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp @@ -292,19 +292,32 @@ void ContainerNode::willRemove() Node::willRemove(); } -static ExceptionCode willRemoveChild(Node *child) +static void willRemoveChild(Node* child) { - ExceptionCode ec = 0; + // update auxiliary doc info (e.g. iterators) to note that node is being removed + child->document()->nodeWillBeRemoved(child); + child->document()->incDOMTreeVersion(); // fire removed from document mutation events. dispatchChildRemovalEvents(child); - if (ec) - return ec; if (child->attached()) child->willRemove(); - - return 0; +} + +static void willRemoveChildren(ContainerNode* container) +{ + container->document()->nodeChildrenWillBeRemoved(container); + container->document()->incDOMTreeVersion(); + + // FIXME: Adding new children from event handlers can cause an infinite loop here. + for (RefPtr child = container->firstChild(); child; child = child->nextSibling()) { + // fire removed from document mutation events. + dispatchChildRemovalEvents(child.get()); + + if (child->attached()) + child->willRemove(); + } } bool ContainerNode::removeChild(Node* oldChild, ExceptionCode& ec) @@ -328,10 +341,7 @@ bool ContainerNode::removeChild(Node* oldChild, ExceptionCode& ec) } RefPtr child = oldChild; - - ec = willRemoveChild(child.get()); - if (ec) - return false; + willRemoveChild(child.get()); // Mutation events might have moved this child into a different parent. if (child->parentNode() != this) { @@ -399,14 +409,12 @@ bool ContainerNode::removeChildren() return false; // The container node can be removed from event handlers. - RefPtr protect(this); - + RefPtr protect(this); + // Do any prep work needed before actually starting to detach // and remove... e.g. stop loading frames, fire unload events. - // FIXME: Adding new children from event handlers can cause an infinite loop here. - for (RefPtr n = m_firstChild; n; n = n->nextSibling()) - willRemoveChild(n.get()); - + willRemoveChildren(protect.get()); + // exclude this node when looking for removed focusedNode since only children will be removed document()->removeFocusedNodeOfSubtree(this, true); @@ -936,6 +944,8 @@ static void dispatchChildInsertionEvents(Node* child) static void dispatchChildRemovalEvents(Node* child) { + ASSERT(!eventDispatchForbidden()); + #if ENABLE(INSPECTOR) if (Page* page = child->document()->page()) { if (InspectorController* inspectorController = page->inspectorController()) @@ -946,11 +956,6 @@ static void dispatchChildRemovalEvents(Node* child) RefPtr c = child; RefPtr document = child->document(); - // update auxiliary doc info (e.g. iterators) to note that node is being removed - document->nodeWillBeRemoved(child); - - document->incDOMTreeVersion(); - // dispatch pre-removal mutation events if (c->parentNode() && document->hasListenerType(Document::DOMNODEREMOVED_LISTENER)) c->dispatchEvent(MutationEvent::create(eventNames().DOMNodeRemovedEvent, true, c->parentNode())); diff --git a/src/3rdparty/webkit/WebCore/dom/Document.cpp b/src/3rdparty/webkit/WebCore/dom/Document.cpp index 545819d..9803cf5 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Document.cpp @@ -2957,6 +2957,28 @@ void Document::nodeChildrenChanged(ContainerNode* container) } } +void Document::nodeChildrenWillBeRemoved(ContainerNode* container) +{ + if (!disableRangeMutation(page())) { + HashSet::const_iterator end = m_ranges.end(); + for (HashSet::const_iterator it = m_ranges.begin(); it != end; ++it) + (*it)->nodeChildrenWillBeRemoved(container); + } + + HashSet::const_iterator nodeIteratorsEnd = m_nodeIterators.end(); + for (HashSet::const_iterator it = m_nodeIterators.begin(); it != nodeIteratorsEnd; ++it) { + for (Node* n = container->firstChild(); n; n = n->nextSibling()) + (*it)->nodeWillBeRemoved(n); + } + + if (Frame* frame = this->frame()) { + for (Node* n = container->firstChild(); n; n = n->nextSibling()) { + frame->selection()->nodeWillBeRemoved(n); + frame->dragCaretController()->nodeWillBeRemoved(n); + } + } +} + void Document::nodeWillBeRemoved(Node* n) { HashSet::const_iterator nodeIteratorsEnd = m_nodeIterators.end(); diff --git a/src/3rdparty/webkit/WebCore/dom/Document.h b/src/3rdparty/webkit/WebCore/dom/Document.h index 44cdf0d..68927f4 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.h +++ b/src/3rdparty/webkit/WebCore/dom/Document.h @@ -616,6 +616,9 @@ public: void detachRange(Range*); void nodeChildrenChanged(ContainerNode*); + // nodeChildrenWillBeRemoved is used when removing all node children at once. + void nodeChildrenWillBeRemoved(ContainerNode*); + // nodeWillBeRemoved is only safe when removing one node at a time. void nodeWillBeRemoved(Node*); void textInserted(Node*, unsigned offset, unsigned length); diff --git a/src/3rdparty/webkit/WebCore/dom/Element.cpp b/src/3rdparty/webkit/WebCore/dom/Element.cpp index 6bd512d..a02bb4c 100644 --- a/src/3rdparty/webkit/WebCore/dom/Element.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Element.cpp @@ -937,7 +937,7 @@ void Element::recalcStyle(StyleChange change) newStyle->setChildrenAffectedByDirectAdjacentRules(); } - if (ch != NoChange || pseudoStyleCacheIsInvalid(currentStyle.get(), newStyle.get())) { + if (ch != NoChange || pseudoStyleCacheIsInvalid(currentStyle.get(), newStyle.get()) || change == Force && renderer() && renderer()->requiresForcedStyleRecalcPropagation()) { setRenderStyle(newStyle); } else if (needsStyleRecalc() && (styleChangeType() != SyntheticStyleChange) && (document()->usesSiblingRules() || document()->usesDescendantRules())) { // Although no change occurred, we use the new style so that the cousin style sharing code won't get @@ -1429,9 +1429,15 @@ void Element::normalizeAttributes() NamedNodeMap* attrs = attributes(true); if (!attrs) return; - unsigned numAttrs = attrs->length(); - for (unsigned i = 0; i < numAttrs; i++) { - if (Attr* attr = attrs->attributeItem(i)->attr()) + + if (attrs->isEmpty()) + return; + + Vector > attributeVector; + attrs->copyAttributesToVector(attributeVector); + size_t numAttrs = attributeVector.size(); + for (size_t i = 0; i < numAttrs; ++i) { + if (Attr* attr = attributeVector[i]->attr()) attr->normalize(); } } diff --git a/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp b/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp index d8a6ba8..ee979cf 100644 --- a/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp +++ b/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp @@ -172,6 +172,11 @@ PassRefPtr NamedNodeMap::item(unsigned index) const return m_attributes[index]->createAttrIfNeeded(m_element); } +void NamedNodeMap::copyAttributesToVector(Vector >& copy) +{ + copy = m_attributes; +} + Attribute* NamedNodeMap::getAttributeItemSlowCase(const String& name, bool shouldIgnoreAttributeCase) const { unsigned len = length(); diff --git a/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h b/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h index d5136b5..e292576 100644 --- a/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h +++ b/src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h @@ -72,6 +72,8 @@ public: Attribute* attributeItem(unsigned index) const { return m_attributes[index].get(); } Attribute* getAttributeItem(const QualifiedName&) const; + void copyAttributesToVector(Vector >&); + void shrinkToLength() { m_attributes.shrinkCapacity(length()); } void reserveInitialCapacity(unsigned capacity) { m_attributes.reserveInitialCapacity(capacity); } diff --git a/src/3rdparty/webkit/WebCore/dom/NamedNodeMap.idl b/src/3rdparty/webkit/WebCore/dom/NamedNodeMap.idl index 4d36577..7bfbf23 100644 --- a/src/3rdparty/webkit/WebCore/dom/NamedNodeMap.idl +++ b/src/3rdparty/webkit/WebCore/dom/NamedNodeMap.idl @@ -28,7 +28,7 @@ module core { Node getNamedItem(in DOMString name); - Node setNamedItem(in Node node) + [Custom] Node setNamedItem(in Node node) raises(DOMException); Node removeNamedItem(in DOMString name) @@ -46,7 +46,7 @@ module core { // FIXME: the implementation does take an exceptioncode parameter. /*raises(DOMException)*/; - Node setNamedItemNS(in Node node) + [Custom] Node setNamedItemNS(in Node node) raises(DOMException); [OldStyleObjC] Node removeNamedItemNS(in [ConvertNullToNullString] DOMString namespaceURI, diff --git a/src/3rdparty/webkit/WebCore/dom/Node.idl b/src/3rdparty/webkit/WebCore/dom/Node.idl index 0489316..22d9a85 100644 --- a/src/3rdparty/webkit/WebCore/dom/Node.idl +++ b/src/3rdparty/webkit/WebCore/dom/Node.idl @@ -51,7 +51,7 @@ module core { readonly attribute [ConvertNullStringTo=Null] DOMString nodeName; // FIXME: the spec says this can also raise on retrieval. - attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString nodeValue + attribute [CustomSetter, ConvertNullStringTo=Null, ConvertNullToNullString] DOMString nodeValue setter raises(DOMException); readonly attribute unsigned short nodeType; @@ -96,7 +96,7 @@ module core { readonly attribute [ConvertNullStringTo=Null] DOMString baseURI; // FIXME: the spec says this can also raise on retrieval. - attribute [ConvertNullStringTo=Null, ConvertNullToNullString] DOMString textContent + attribute [CustomSetter, ConvertNullStringTo=Null, ConvertNullToNullString] DOMString textContent setter raises(DOMException); boolean isSameNode(in Node other); diff --git a/src/3rdparty/webkit/WebCore/dom/Range.cpp b/src/3rdparty/webkit/WebCore/dom/Range.cpp index 52d1785..689b590 100644 --- a/src/3rdparty/webkit/WebCore/dom/Range.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Range.cpp @@ -1716,6 +1716,31 @@ void Range::nodeChildrenChanged(ContainerNode* container) boundaryNodeChildrenChanged(m_end, container); } +static inline void boundaryNodeChildrenWillBeRemoved(RangeBoundaryPoint& boundary, ContainerNode* container) +{ + for (Node* nodeToBeRemoved = container->firstChild(); nodeToBeRemoved; nodeToBeRemoved = nodeToBeRemoved->nextSibling()) { + if (boundary.childBefore() == nodeToBeRemoved) { + boundary.setToStartOfNode(container); + return; + } + + for (Node* n = boundary.container(); n; n = n->parentNode()) { + if (n == nodeToBeRemoved) { + boundary.setToStartOfNode(container); + return; + } + } + } +} + +void Range::nodeChildrenWillBeRemoved(ContainerNode* container) +{ + ASSERT(container); + ASSERT(container->document() == m_ownerDocument); + boundaryNodeChildrenWillBeRemoved(m_start, container); + boundaryNodeChildrenWillBeRemoved(m_end, container); +} + static inline void boundaryNodeWillBeRemoved(RangeBoundaryPoint& boundary, Node* nodeToBeRemoved) { if (boundary.childBefore() == nodeToBeRemoved) { diff --git a/src/3rdparty/webkit/WebCore/dom/Range.h b/src/3rdparty/webkit/WebCore/dom/Range.h index fd0f66a..bfddd32 100644 --- a/src/3rdparty/webkit/WebCore/dom/Range.h +++ b/src/3rdparty/webkit/WebCore/dom/Range.h @@ -111,6 +111,7 @@ public: void textQuads(Vector&, bool useSelectionHeight = false); void nodeChildrenChanged(ContainerNode*); + void nodeChildrenWillBeRemoved(ContainerNode*); void nodeWillBeRemoved(Node*); void textInserted(Node*, unsigned offset, unsigned length); diff --git a/src/3rdparty/webkit/WebCore/editing/EditorCommand.cpp b/src/3rdparty/webkit/WebCore/editing/EditorCommand.cpp index 34fa46d..4cb34ac 100644 --- a/src/3rdparty/webkit/WebCore/editing/EditorCommand.cpp +++ b/src/3rdparty/webkit/WebCore/editing/EditorCommand.cpp @@ -1069,6 +1069,21 @@ static bool supportedFromMenuOrKeyBinding(Frame*, EditorCommandSource source) return source == CommandFromMenuOrKeyBinding; } +static bool supportedCopyCut(Frame* frame, EditorCommandSource source) +{ + switch (source) { + case CommandFromMenuOrKeyBinding: + return true; + case CommandFromDOM: + case CommandFromDOMWithUserInterface: { + Settings* settings = frame ? frame->settings() : 0; + return settings && settings->javaScriptCanAccessClipboard(); + } + } + ASSERT_NOT_REACHED(); + return false; +} + static bool supportedPaste(Frame* frame, EditorCommandSource source) { switch (source) { @@ -1077,7 +1092,7 @@ static bool supportedPaste(Frame* frame, EditorCommandSource source) case CommandFromDOM: case CommandFromDOMWithUserInterface: { Settings* settings = frame ? frame->settings() : 0; - return settings && settings->isDOMPasteAllowed(); + return settings && (settings->javaScriptCanAccessClipboard() ? settings->isDOMPasteAllowed() : 0); } } ASSERT_NOT_REACHED(); @@ -1304,9 +1319,9 @@ static const CommandMap& createCommandMap() { "BackColor", { executeBackColor, supported, enabledInRichlyEditableText, stateNone, valueBackColor, notTextInsertion, doNotAllowExecutionWhenDisabled } }, { "BackwardDelete", { executeDeleteBackward, supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled } }, // FIXME: remove BackwardDelete when Safari for Windows stops using it. { "Bold", { executeToggleBold, supported, enabledInRichlyEditableText, stateBold, valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled } }, - { "Copy", { executeCopy, supported, enabledCopy, stateNone, valueNull, notTextInsertion, allowExecutionWhenDisabled } }, + { "Copy", { executeCopy, supportedCopyCut, enabledCopy, stateNone, valueNull, notTextInsertion, allowExecutionWhenDisabled } }, { "CreateLink", { executeCreateLink, supported, enabledInRichlyEditableText, stateNone, valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled } }, - { "Cut", { executeCut, supported, enabledCut, stateNone, valueNull, notTextInsertion, allowExecutionWhenDisabled } }, + { "Cut", { executeCut, supportedCopyCut, enabledCut, stateNone, valueNull, notTextInsertion, allowExecutionWhenDisabled } }, { "Delete", { executeDelete, supported, enabledDelete, stateNone, valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled } }, { "DeleteBackward", { executeDeleteBackward, supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled } }, { "DeleteBackwardByDecomposingPreviousCharacter", { executeDeleteBackwardByDecomposingPreviousCharacter, supportedFromMenuOrKeyBinding, enabledInEditableText, stateNone, valueNull, notTextInsertion, doNotAllowExecutionWhenDisabled } }, diff --git a/src/3rdparty/webkit/WebCore/editing/markup.cpp b/src/3rdparty/webkit/WebCore/editing/markup.cpp index 787dad9..7e90107 100644 --- a/src/3rdparty/webkit/WebCore/editing/markup.cpp +++ b/src/3rdparty/webkit/WebCore/editing/markup.cpp @@ -404,10 +404,12 @@ static void appendStartMarkup(Vector& result, const Node* node, const Ran if (Node* parent = node->parentNode()) { if (parent->hasTagName(scriptTag) || parent->hasTagName(styleTag) - || parent->hasTagName(textareaTag) || parent->hasTagName(xmpTag)) { appendUCharRange(result, ucharRange(node, range)); break; + } else if (parent->hasTagName(textareaTag)) { + appendEscapedContent(result, ucharRange(node, range), documentIsHTML); + break; } } if (!annotate) { diff --git a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp index 7aed66c..1232cfc 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp @@ -264,14 +264,7 @@ JSValue JSC_HOST_CALL jsNamedNodeMapPrototypeFunctionSetNamedItem(ExecState* exe if (!thisValue.inherits(&JSNamedNodeMap::s_info)) return throwError(exec, TypeError); JSNamedNodeMap* castedThisObj = static_cast(asObject(thisValue)); - NamedNodeMap* imp = static_cast(castedThisObj->impl()); - ExceptionCode ec = 0; - Node* node = toNode(args.at(0)); - - - JSC::JSValue result = toJS(exec, castedThisObj->globalObject(), WTF::getPtr(imp->setNamedItem(node, ec))); - setDOMException(exec, ec); - return result; + return castedThisObj->setNamedItem(exec, args); } JSValue JSC_HOST_CALL jsNamedNodeMapPrototypeFunctionRemoveNamedItem(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) @@ -325,14 +318,7 @@ JSValue JSC_HOST_CALL jsNamedNodeMapPrototypeFunctionSetNamedItemNS(ExecState* e if (!thisValue.inherits(&JSNamedNodeMap::s_info)) return throwError(exec, TypeError); JSNamedNodeMap* castedThisObj = static_cast(asObject(thisValue)); - NamedNodeMap* imp = static_cast(castedThisObj->impl()); - ExceptionCode ec = 0; - Node* node = toNode(args.at(0)); - - - JSC::JSValue result = toJS(exec, castedThisObj->globalObject(), WTF::getPtr(imp->setNamedItemNS(node, ec))); - setDOMException(exec, ec); - return result; + return castedThisObj->setNamedItemNS(exec, args); } JSValue JSC_HOST_CALL jsNamedNodeMapPrototypeFunctionRemoveNamedItemNS(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args) diff --git a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h index 0fa1fdf..b79e97c 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h +++ b/src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h @@ -50,6 +50,10 @@ public: virtual void getOwnPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties); static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); + + // Custom functions + JSC::JSValue setNamedItem(JSC::ExecState*, const JSC::ArgList&); + JSC::JSValue setNamedItemNS(JSC::ExecState*, const JSC::ArgList&); NamedNodeMap* impl() const { return m_impl.get(); } private: diff --git a/src/3rdparty/webkit/WebCore/generated/JSNode.cpp b/src/3rdparty/webkit/WebCore/generated/JSNode.cpp index 47dafd4..1e16be6 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNode.cpp +++ b/src/3rdparty/webkit/WebCore/generated/JSNode.cpp @@ -394,11 +394,7 @@ void JSNode::put(ExecState* exec, const Identifier& propertyName, JSValue value, void setJSNodeNodeValue(ExecState* exec, JSObject* thisObject, JSValue value) { - JSNode* castedThisObj = static_cast(thisObject); - Node* imp = static_cast(castedThisObj->impl()); - ExceptionCode ec = 0; - imp->setNodeValue(valueToStringWithNullCheck(exec, value), ec); - setDOMException(exec, ec); + static_cast(thisObject)->setNodeValue(exec, value); } void setJSNodePrefix(ExecState* exec, JSObject* thisObject, JSValue value) @@ -412,11 +408,7 @@ void setJSNodePrefix(ExecState* exec, JSObject* thisObject, JSValue value) void setJSNodeTextContent(ExecState* exec, JSObject* thisObject, JSValue value) { - JSNode* castedThisObj = static_cast(thisObject); - Node* imp = static_cast(castedThisObj->impl()); - ExceptionCode ec = 0; - imp->setTextContent(valueToStringWithNullCheck(exec, value), ec); - setDOMException(exec, ec); + static_cast(thisObject)->setTextContent(exec, value); } JSValue JSNode::getConstructor(ExecState* exec, JSGlobalObject* globalObject) diff --git a/src/3rdparty/webkit/WebCore/generated/JSNode.h b/src/3rdparty/webkit/WebCore/generated/JSNode.h index be6dd23..e2c82c4 100644 --- a/src/3rdparty/webkit/WebCore/generated/JSNode.h +++ b/src/3rdparty/webkit/WebCore/generated/JSNode.h @@ -54,6 +54,10 @@ public: static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*); + // Custom attributes + void setNodeValue(JSC::ExecState*, JSC::JSValue); + void setTextContent(JSC::ExecState*, JSC::JSValue); + // Custom functions JSC::JSValue insertBefore(JSC::ExecState*, const JSC::ArgList&); JSC::JSValue replaceChild(JSC::ExecState*, const JSC::ArgList&); diff --git a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp index 9cec7a9..73a572e 100644 --- a/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp +++ b/src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp @@ -1215,7 +1215,7 @@ PassRefPtr CanvasRenderingContext2D::createPattern(HTMLImageEleme if (!cachedImage || !image->cachedImage()->image()) return CanvasPattern::create(Image::nullImage(), repeatX, repeatY, true); - bool originClean = !canvas()->document()->securityOrigin()->taintsCanvas(KURL(KURL(), cachedImage->url())); + bool originClean = !canvas()->document()->securityOrigin()->taintsCanvas(KURL(KURL(), cachedImage->url())) && cachedImage->image()->hasSingleSecurityOrigin(); return CanvasPattern::create(cachedImage->image(), repeatX, repeatY, originClean); } diff --git a/src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp b/src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp index de0a0b0..55f51ac 100644 --- a/src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp +++ b/src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp @@ -81,16 +81,19 @@ DocumentThreadableLoader::DocumentThreadableLoader(Document* document, Threadabl ASSERT(m_options.crossOriginRequestPolicy == UseAccessControl); - if (!m_options.forcePreflight && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())) - makeSimpleCrossOriginAccessRequest(request); + OwnPtr crossOriginRequest(new ResourceRequest(request)); + crossOriginRequest->removeCredentials(); + crossOriginRequest->setAllowCookies(m_options.allowCredentials); + + if (!m_options.forcePreflight && isSimpleCrossOriginAccessRequest(crossOriginRequest->httpMethod(), crossOriginRequest->httpHeaderFields())) + makeSimpleCrossOriginAccessRequest(*crossOriginRequest); else { - m_actualRequest.set(new ResourceRequest(request)); - m_actualRequest->setAllowCookies(m_options.allowCredentials); + m_actualRequest.set(crossOriginRequest.release()); - if (CrossOriginPreflightResultCache::shared().canSkipPreflight(document->securityOrigin()->toString(), request.url(), m_options.allowCredentials, request.httpMethod(), request.httpHeaderFields())) + if (CrossOriginPreflightResultCache::shared().canSkipPreflight(document->securityOrigin()->toString(), m_actualRequest->url(), m_options.allowCredentials, m_actualRequest->httpMethod(), m_actualRequest->httpHeaderFields())) preflightSuccess(); else - makeCrossOriginAccessRequestWithPreflight(request); + makeCrossOriginAccessRequestWithPreflight(*m_actualRequest); } } @@ -106,8 +109,6 @@ void DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest(const Resource // Make a copy of the passed request so that we can modify some details. ResourceRequest crossOriginRequest(request); - crossOriginRequest.removeCredentials(); - crossOriginRequest.setAllowCookies(m_options.allowCredentials); crossOriginRequest.setHTTPOrigin(m_document->securityOrigin()->toString()); loadRequest(crossOriginRequest, DoSecurityCheck); @@ -287,11 +288,17 @@ void DocumentThreadableLoader::preflightSuccess() void DocumentThreadableLoader::preflightFailure() { + m_actualRequest = 0; // Prevent didFinishLoading() from bypassing access check. m_client->didFail(ResourceError()); } void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, SecurityCheckPolicy securityCheck) { + // Any credential should have been removed from the cross-site requests. + const KURL& requestURL = request.url(); + ASSERT(m_sameOriginRequest || requestURL.user().isEmpty()); + ASSERT(m_sameOriginRequest || requestURL.pass().isEmpty()); + if (m_async) { // Don't sniff content or send load callbacks for the preflight request. bool sendLoadCallbacks = m_options.sendLoadCallbacks && !m_actualRequest; @@ -315,15 +322,15 @@ void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, Secur // No exception for file:/// resources, see . // Also, if we have an HTTP response, then it wasn't a network error in fact. - if (!error.isNull() && !request.url().isLocalFile() && response.httpStatusCode() <= 0) { + if (!error.isNull() && !requestURL.isLocalFile() && response.httpStatusCode() <= 0) { m_client->didFail(error); return; } // FIXME: FrameLoader::loadSynchronously() does not tell us whether a redirect happened or not, so we guess by comparing the // request and response URLs. This isn't a perfect test though, since a server can serve a redirect to the same URL that was - // requested. - if (request.url() != response.url() && !isAllowedRedirect(response.url())) { + // requested. Also comparing the request and response URLs as strings will fail if the requestURL still has its credentials. + if (requestURL != response.url() && !isAllowedRedirect(response.url())) { m_client->didFailRedirectCheck(); return; } diff --git a/src/3rdparty/webkit/WebCore/page/DragController.cpp b/src/3rdparty/webkit/WebCore/page/DragController.cpp index f238b27..0da6873 100644 --- a/src/3rdparty/webkit/WebCore/page/DragController.cpp +++ b/src/3rdparty/webkit/WebCore/page/DragController.cpp @@ -313,7 +313,7 @@ bool DragController::tryDocumentDrag(DragData* dragData, DragDestinationAction a } IntPoint point = frameView->windowToContents(dragData->clientPosition()); - Element* element = elementUnderMouse(m_documentUnderMouse, point); + Element* element = elementUnderMouse(m_documentUnderMouse.get(), point); if (!asFileInput(element)) { VisibleSelection dragCaret = m_documentUnderMouse->frame()->visiblePositionForPoint(point); m_page->dragCaretController()->setSelection(dragCaret); @@ -363,7 +363,7 @@ bool DragController::concludeEditDrag(DragData* dragData) return false; IntPoint point = m_documentUnderMouse->view()->windowToContents(dragData->clientPosition()); - Element* element = elementUnderMouse(m_documentUnderMouse, point); + Element* element = elementUnderMouse(m_documentUnderMouse.get(), point); Frame* innerFrame = element->ownerDocument()->frame(); ASSERT(innerFrame); @@ -439,7 +439,7 @@ bool DragController::concludeEditDrag(DragData* dragData) applyCommand(MoveSelectionCommand::create(fragment, dragCaret.base(), smartInsert, smartDelete)); } else { if (setSelectionToDragCaret(innerFrame, dragCaret, range, point)) - applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse, fragment, true, dragData->canSmartReplace(), chosePlainText)); + applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse.get(), fragment, true, dragData->canSmartReplace(), chosePlainText)); } } else { String text = dragData->asPlainText(); @@ -450,7 +450,7 @@ bool DragController::concludeEditDrag(DragData* dragData) m_client->willPerformDragDestinationAction(DragDestinationActionEdit, dragData); if (setSelectionToDragCaret(innerFrame, dragCaret, range, point)) - applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse, createFragmentFromText(range.get(), text), true, false, true)); + applyCommand(ReplaceSelectionCommand::create(m_documentUnderMouse.get(), createFragmentFromText(range.get(), text), true, false, true)); } loader->setAllowStaleResources(false); diff --git a/src/3rdparty/webkit/WebCore/page/DragController.h b/src/3rdparty/webkit/WebCore/page/DragController.h index 3b2b083..712f9ab 100644 --- a/src/3rdparty/webkit/WebCore/page/DragController.h +++ b/src/3rdparty/webkit/WebCore/page/DragController.h @@ -67,13 +67,11 @@ namespace WebCore { DragOperation sourceDragOperation() const { return m_sourceDragOperation; } void setDraggingImageURL(const KURL& url) { m_draggingImageURL = url; } const KURL& draggingImageURL() const { return m_draggingImageURL; } - void setDragInitiator(Document* initiator) { m_dragInitiator = initiator; m_didInitiateDrag = true; } - Document* dragInitiator() const { return m_dragInitiator; } void setDragOffset(const IntPoint& offset) { m_dragOffset = offset; } const IntPoint& dragOffset() const { return m_dragOffset; } DragSourceAction dragSourceAction() const { return m_dragSourceAction; } - Document* documentUnderMouse() const { return m_documentUnderMouse; } + Document* documentUnderMouse() const { return m_documentUnderMouse.get(); } DragDestinationAction dragDestinationAction() const { return m_dragDestinationAction; } DragSourceAction delegateDragSourceAction(const IntPoint& pagePoint); @@ -114,8 +112,8 @@ namespace WebCore { Page* m_page; DragClient* m_client; - Document* m_documentUnderMouse; // The document the mouse was last dragged over. - Document* m_dragInitiator; // The Document (if any) that initiated the drag. + RefPtr m_documentUnderMouse; // The document the mouse was last dragged over. + RefPtr m_dragInitiator; // The Document (if any) that initiated the drag. DragDestinationAction m_dragDestinationAction; DragSourceAction m_dragSourceAction; diff --git a/src/3rdparty/webkit/WebCore/page/EventHandler.cpp b/src/3rdparty/webkit/WebCore/page/EventHandler.cpp index 1654257..f1ee742 100644 --- a/src/3rdparty/webkit/WebCore/page/EventHandler.cpp +++ b/src/3rdparty/webkit/WebCore/page/EventHandler.cpp @@ -2163,7 +2163,9 @@ bool EventHandler::keyEvent(const PlatformKeyboardEvent& initialKeyEvent) if (initialKeyEvent.type() == PlatformKeyboardEvent::RawKeyDown) { node->dispatchEvent(keydown, ec); - return keydown->defaultHandled() || keydown->defaultPrevented(); + // If frame changed as a result of keydown dispatch, then return true to avoid sending a subsequent keypress message to the new frame. + bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->focusController()->focusedOrMainFrame(); + return keydown->defaultHandled() || keydown->defaultPrevented() || changedFocusedFrame; } // Run input method in advance of DOM event handling. This may result in the IM @@ -2183,7 +2185,9 @@ bool EventHandler::keyEvent(const PlatformKeyboardEvent& initialKeyEvent) } node->dispatchEvent(keydown, ec); - bool keydownResult = keydown->defaultHandled() || keydown->defaultPrevented(); + // If frame changed as a result of keydown dispatch, then return early to avoid sending a subsequent keypress message to the new frame. + bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->focusController()->focusedOrMainFrame(); + bool keydownResult = keydown->defaultHandled() || keydown->defaultPrevented() || changedFocusedFrame; if (handledByInputMethod || (keydownResult && !backwardCompatibilityMode)) return keydownResult; diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp index 639414b..01f0375 100644 --- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp +++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp @@ -1315,14 +1315,13 @@ void FrameView::scheduleRelayoutOfSubtree(RenderObject* relayoutRoot) { ASSERT(m_frame->view() == this); - if (!m_layoutSchedulingEnabled || (m_frame->contentRenderer() - && m_frame->contentRenderer()->needsLayout())) { + if (m_frame->contentRenderer() && m_frame->contentRenderer()->needsLayout()) { if (relayoutRoot) relayoutRoot->markContainingBlocksForLayout(false); return; } - if (layoutPending()) { + if (layoutPending() || !m_layoutSchedulingEnabled) { if (m_layoutRoot != relayoutRoot) { if (isObjectAncestorContainerOf(m_layoutRoot, relayoutRoot)) { // Keep the current root @@ -1339,7 +1338,7 @@ void FrameView::scheduleRelayoutOfSubtree(RenderObject* relayoutRoot) relayoutRoot->markContainingBlocksForLayout(false); } } - } else { + } else if (m_layoutSchedulingEnabled) { int delay = m_frame->document()->minimumLayoutDelay(); m_layoutRoot = relayoutRoot; m_delayedLayout = delay != 0; diff --git a/src/3rdparty/webkit/WebCore/page/SecurityOrigin.cpp b/src/3rdparty/webkit/WebCore/page/SecurityOrigin.cpp index c0b3e22..516c533 100644 --- a/src/3rdparty/webkit/WebCore/page/SecurityOrigin.cpp +++ b/src/3rdparty/webkit/WebCore/page/SecurityOrigin.cpp @@ -90,6 +90,20 @@ static URLSchemesMap& schemesWithUniqueOrigins() return schemesWithUniqueOrigins; } +static bool schemeRequiresAuthority(const String& scheme) +{ + DEFINE_STATIC_LOCAL(URLSchemesMap, schemes, ()); + + if (schemes.isEmpty()) { + schemes.add("http"); + schemes.add("https"); + schemes.add("ftp"); + } + + return schemes.contains(scheme); +} + + SecurityOrigin::SecurityOrigin(const KURL& url, SandboxFlags sandboxFlags) : m_sandboxFlags(sandboxFlags) , m_protocol(url.protocol().isNull() ? "" : url.protocol().lower()) @@ -103,6 +117,10 @@ SecurityOrigin::SecurityOrigin(const KURL& url, SandboxFlags sandboxFlags) if (m_protocol == "about" || m_protocol == "javascript") m_protocol = ""; + // For edge case URLs that were probably misparsed, make sure that the origin is unique. + if (schemeRequiresAuthority(m_protocol) && m_host.isEmpty()) + m_isUnique = true; + // document.domain starts as m_host, but can be set by the DOM. m_domain = m_host; diff --git a/src/3rdparty/webkit/WebCore/page/Settings.cpp b/src/3rdparty/webkit/WebCore/page/Settings.cpp index 475d373..c0659d2 100644 --- a/src/3rdparty/webkit/WebCore/page/Settings.cpp +++ b/src/3rdparty/webkit/WebCore/page/Settings.cpp @@ -79,6 +79,7 @@ Settings::Settings(Page* page) , m_allowUniversalAccessFromFileURLs(true) , m_allowFileAccessFromFileURLs(true) , m_javaScriptCanOpenWindowsAutomatically(false) + , m_javaScriptCanAccessClipboard(false) , m_shouldPrintBackgrounds(false) , m_textAreasAreResizable(false) #if ENABLE(DASHBOARD_SUPPORT) @@ -291,6 +292,11 @@ void Settings::setJavaScriptCanOpenWindowsAutomatically(bool javaScriptCanOpenWi m_javaScriptCanOpenWindowsAutomatically = javaScriptCanOpenWindowsAutomatically; } +void Settings::setJavaScriptCanAccessClipboard(bool javaScriptCanAccessClipboard) +{ + m_javaScriptCanAccessClipboard = javaScriptCanAccessClipboard; +} + void Settings::setDefaultTextEncodingName(const String& defaultTextEncodingName) { m_defaultTextEncodingName = defaultTextEncodingName; diff --git a/src/3rdparty/webkit/WebCore/page/Settings.h b/src/3rdparty/webkit/WebCore/page/Settings.h index b677712..a6653ce 100644 --- a/src/3rdparty/webkit/WebCore/page/Settings.h +++ b/src/3rdparty/webkit/WebCore/page/Settings.h @@ -122,6 +122,9 @@ namespace WebCore { void setJavaScriptCanOpenWindowsAutomatically(bool); bool javaScriptCanOpenWindowsAutomatically() const { return m_javaScriptCanOpenWindowsAutomatically; } + void setJavaScriptCanAccessClipboard(bool); + bool javaScriptCanAccessClipboard() const { return m_javaScriptCanAccessClipboard; } + void setSpatialNavigationEnabled(bool); bool isSpatialNavigationEnabled() const { return m_isSpatialNavigationEnabled; } @@ -330,6 +333,7 @@ namespace WebCore { bool m_allowUniversalAccessFromFileURLs: 1; bool m_allowFileAccessFromFileURLs: 1; bool m_javaScriptCanOpenWindowsAutomatically : 1; + bool m_javaScriptCanAccessClipboard : 1; bool m_shouldPrintBackgrounds : 1; bool m_textAreasAreResizable : 1; #if ENABLE(DASHBOARD_SUPPORT) diff --git a/src/3rdparty/webkit/WebCore/platform/KURL.cpp b/src/3rdparty/webkit/WebCore/platform/KURL.cpp index 40adfbc..3c8d50f 100644 --- a/src/3rdparty/webkit/WebCore/platform/KURL.cpp +++ b/src/3rdparty/webkit/WebCore/platform/KURL.cpp @@ -215,6 +215,9 @@ static const unsigned char characterClassTable[256] = { /* 252 */ BadChar, /* 253 */ BadChar, /* 254 */ BadChar, /* 255 */ BadChar }; +static const unsigned maximumValidPortNumber = 0xFFFE; +static const unsigned invalidPortNumber = 0xFFFF; + static int copyPathRemovingDots(char* dst, const char* src, int srcStart, int srcEnd); static void encodeRelativeString(const String& rel, const TextEncoding&, CharBuffer& ouput); static String substituteBackslashes(const String&); @@ -573,12 +576,17 @@ String KURL::host() const unsigned short KURL::port() const { - if (m_hostEnd == m_portEnd) + // We return a port of 0 if there is no port specified. This can happen in two situations: + // 1) The URL contains no colon after the host name and before the path component of the URL. + // 2) The URL contains a colon but there's no port number before the path component of the URL begins. + if (m_hostEnd == m_portEnd || m_hostEnd == m_portEnd - 1) return 0; - int number = m_string.substring(m_hostEnd + 1, m_portEnd - m_hostEnd - 1).toInt(); - if (number < 0 || number > 0xFFFF) - return 0; + const UChar* stringData = m_string.characters(); + bool ok = false; + unsigned number = charactersToUIntStrict(stringData + m_hostEnd + 1, m_portEnd - m_hostEnd - 1, &ok); + if (!ok || number > maximumValidPortNumber) + return invalidPortNumber; return number; } @@ -1757,7 +1765,7 @@ bool portAllowed(const KURL& url) 6667, // Standard IRC [Apple addition] 6668, // Alternate IRC [Apple addition] 6669, // Alternate IRC [Apple addition] - + invalidPortNumber, // Used to block all invalid port numbers }; const unsigned short* const blockedPortListEnd = blockedPortList + sizeof(blockedPortList) / sizeof(blockedPortList[0]); diff --git a/src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp b/src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp index 8be7009..10b9bb8 100644 --- a/src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp +++ b/src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp @@ -57,6 +57,8 @@ using std::binary_search; namespace WebCore { +static const unsigned invalidPortNumber = 0xFFFF; + // Wraps WebCore's text encoding in a character set converter for the // canonicalizer. class KURLCharsetConverter : public url_canon::CharsetConverter { @@ -499,7 +501,7 @@ String KURL::host() const unsigned short KURL::port() const { if (!m_url.m_isValid || m_url.m_parsed.port.len <= 0) - return 0; + return invalidPortNumber; int port = url_parse::ParsePort(m_url.utf8String().data(), m_url.m_parsed.port); if (port == url_parse::PORT_UNSPECIFIED) return 0; @@ -853,6 +855,12 @@ bool portAllowed(const KURL& url) 3659, // apple-sasl / PasswordServer [Apple addition] 4045, // lockd 6000, // X11 + 6665, // Alternate IRC [Apple addition] + 6666, // Alternate IRC [Apple addition] + 6667, // Standard IRC [Apple addition] + 6668, // Alternate IRC [Apple addition] + 6669, // Alternate IRC [Apple addition] + invalidPortNumber, // Used to block all invalid port numbers }; const unsigned short* const blockedPortListEnd = blockedPortList + sizeof(blockedPortList) / sizeof(blockedPortList[0]); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp index a7351a0..c96fe25 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp @@ -69,23 +69,31 @@ Path& Path::operator=(const Path& other) return *this; } +static inline bool areCollinear(const QPointF& a, const QPointF& b, const QPointF& c) +{ + // Solved from comparing the slopes of a to b and b to c: (ay-by)/(ax-bx) == (cy-by)/(cx-bx) + return qFuzzyCompare((c.y() - b.y()) * (a.x() - b.x()), (a.y() - b.y()) * (c.x() - b.x())); +} + +static inline bool withinRange(qreal p, qreal a, qreal b) +{ + return (p >= a && p <= b) || (p >= b && p <= a); +} + // Check whether a point is on the border -bool isPointOnPathBorder(const QPolygonF& border, const QPointF& p) +static bool isPointOnPathBorder(const QPolygonF& border, const QPointF& p) { QPointF p1 = border.at(0); QPointF p2; for (int i = 1; i < border.size(); ++i) { p2 = border.at(i); - // (x1<=x<=x2||x1=>x>=x2) && (y1<=y<=y2||y1=>y>=y2) && (y2-y1)(x-x1) == (y-y1)(x2-x1) - // In which, (y2-y1)(x-x1) == (y-y1)(x2-x1) is from (y2-y1)/(x2-x1) == (y-y1)/(x-x1) - // it want to check the slope between p1 and p2 is same with slope between p and p1, - // if so then the three points lie on the same line. - // In which, (x1<=x<=x2||x1=>x>=x2) && (y1<=y<=y2||y1=>y>=y2) want to make sure p is - // between p1 and p2, not outside. - if (((p.x() <= p1.x() && p.x() >= p2.x()) || (p.x() >= p1.x() && p.x() <= p2.x())) - && ((p.y() <= p1.y() && p.y() >= p2.y()) || (p.y() >= p1.y() && p.y() <= p2.y())) - && (p2.y() - p1.y()) * (p.x() - p1.x()) == (p.y() - p1.y()) * (p2.x() - p1.x())) { + if (areCollinear(p, p1, p2) + // Once we know that the points are collinear we + // only need to check one of the coordinates + && (qAbs(p2.x() - p1.x()) > qAbs(p2.y() - p1.y()) ? + withinRange(p.x(), p1.x(), p2.x()) : + withinRange(p.y(), p1.y(), p2.y()))) { return true; } p1 = p2; @@ -199,19 +207,14 @@ void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius) float p1p2_length = sqrtf(p1p2.x() * p1p2.x() + p1p2.y() * p1p2.y()); double cos_phi = (p1p0.x() * p1p2.x() + p1p0.y() * p1p2.y()) / (p1p0_length * p1p2_length); - // all points on a line logic - if (cos_phi == -1) { + + // The points p0, p1, and p2 are on the same straight line (HTML5, 4.8.11.1.8) + // We could have used areCollinear() here, but since we're reusing + // the variables computed above later on we keep this logic. + if (qFuzzyCompare(qAbs(cos_phi), 1.0)) { m_path.lineTo(p1); return; } - if (cos_phi == 1) { - // add infinite far away point - unsigned int max_length = 65535; - double factor_max = max_length / p1p0_length; - FloatPoint ep((p0.x() + factor_max * p1p0.x()), (p0.y() + factor_max * p1p0.y())); - m_path.lineTo(ep); - return; - } float tangent = radius / tan(acos(cos_phi) / 2); float factor_p1p0 = tangent / p1p0_length; diff --git a/src/3rdparty/webkit/WebCore/platform/network/ProtectionSpace.h b/src/3rdparty/webkit/WebCore/platform/network/ProtectionSpace.h index 126b499..42cbc8a 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/ProtectionSpace.h +++ b/src/3rdparty/webkit/WebCore/platform/network/ProtectionSpace.h @@ -47,6 +47,7 @@ enum ProtectionSpaceAuthenticationScheme { ProtectionSpaceAuthenticationSchemeHTMLForm = 4, ProtectionSpaceAuthenticationSchemeNTLM = 5, ProtectionSpaceAuthenticationSchemeNegotiate = 6, + ProtectionSpaceAuthenticationSchemeUnknown = 100, }; class ProtectionSpace { diff --git a/src/3rdparty/webkit/WebCore/rendering/FixedTableLayout.cpp b/src/3rdparty/webkit/WebCore/rendering/FixedTableLayout.cpp index 09af518..4d6b88c 100644 --- a/src/3rdparty/webkit/WebCore/rendering/FixedTableLayout.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/FixedTableLayout.cpp @@ -166,8 +166,7 @@ int FixedTableLayout::calcWidthArray(int) int usedSpan = 0; int i = 0; - while (usedSpan < span) { - ASSERT(cCol + i < nEffCols); + while (usedSpan < span && cCol + i < nEffCols) { int eSpan = m_table->spanOfEffCol(cCol + i); // Only set if no col element has already set it. if (m_width[cCol + i].isAuto() && w.type() != Auto) { diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderButton.h b/src/3rdparty/webkit/WebCore/rendering/RenderButton.h index 7fd6ab0..1fc5eb6 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderButton.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderButton.h @@ -57,12 +57,14 @@ public: virtual bool canHaveChildren() const; -protected: +private: virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle); virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); virtual bool hasLineIfEmpty() const { return true; } + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + void timerFired(Timer*); RenderTextFragment* m_buttonText; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderDataGrid.h b/src/3rdparty/webkit/WebCore/rendering/RenderDataGrid.h index 467edcc..ce221ea 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderDataGrid.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderDataGrid.h @@ -53,6 +53,8 @@ public: private: virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + RenderStyle* columnStyle(DataGridColumn*); RenderStyle* headerStyle(DataGridColumn*); void recalcStyleForColumns(); diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.h b/src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.h index 99dd35c..a5f3367 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.h @@ -56,6 +56,8 @@ private: virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + // FileChooserClient methods. void valueChanged(); void repaint() { RenderBlock::repaint(); } diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderInline.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderInline.cpp index 1d76742..5b1deff 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderInline.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderInline.cpp @@ -274,7 +274,7 @@ void RenderInline::splitInlines(RenderBlock* fromBlock, RenderBlock* toBlock, // has to move into the inline continuation. Call updateBeforeAfterContent to ensure that the inline's :after // content gets properly destroyed. if (document()->usesBeforeAfterRules()) - inlineCurr->children()->updateBeforeAfterContent(this, AFTER); + inlineCurr->children()->updateBeforeAfterContent(inlineCurr, AFTER); // Now we need to take all of the children starting from the first child // *after* currChild and append them all to the clone. diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp index a012868..2aec361 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp @@ -3178,22 +3178,33 @@ void RenderLayer::updateHoverActiveState(const HitTestRequest& request, HitTestR // Locate the common ancestor render object for the two renderers. RenderObject* ancestor = commonAncestor(oldHoverObj, newHoverObj); + Vector, 32> nodesToRemoveFromChain; + Vector, 32> nodesToAddToChain; + if (oldHoverObj != newHoverObj) { // The old hover path only needs to be cleared up to (and not including) the common ancestor; for (RenderObject* curr = oldHoverObj; curr && curr != ancestor; curr = curr->hoverAncestor()) { - if (curr->node() && !curr->isText() && (!mustBeInActiveChain || curr->node()->inActiveChain())) { - curr->node()->setActive(false); - curr->node()->setHovered(false); - } + if (curr->node() && !curr->isText() && (!mustBeInActiveChain || curr->node()->inActiveChain())) + nodesToRemoveFromChain.append(curr->node()); } } // Now set the hover state for our new object up to the root. for (RenderObject* curr = newHoverObj; curr; curr = curr->hoverAncestor()) { - if (curr->node() && !curr->isText() && (!mustBeInActiveChain || curr->node()->inActiveChain())) { - curr->node()->setActive(request.active()); - curr->node()->setHovered(true); - } + if (curr->node() && !curr->isText() && (!mustBeInActiveChain || curr->node()->inActiveChain())) + nodesToAddToChain.append(curr->node()); + } + + size_t removeCount = nodesToRemoveFromChain.size(); + for (size_t i = 0; i < removeCount; ++i) { + nodesToRemoveFromChain[i]->setActive(false); + nodesToRemoveFromChain[i]->setHovered(false); + } + + size_t addCount = nodesToAddToChain.size(); + for (size_t i = 0; i < addCount; ++i) { + nodesToAddToChain[i]->setActive(request.active()); + nodesToAddToChain[i]->setHovered(true); } } diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderListItem.h b/src/3rdparty/webkit/WebCore/rendering/RenderListItem.h index c4c41dc..d140979 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderListItem.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderListItem.h @@ -63,6 +63,8 @@ private: virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + void updateMarkerLocation(); inline int calcValue() const; void updateValueNow() const; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderListMarker.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderListMarker.cpp index d0353ee..6c8f769 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderListMarker.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderListMarker.cpp @@ -101,8 +101,10 @@ static inline String toAlphabeticOrNumeric(int number, const UChar* sequence, in int length = 1; if (type == AlphabeticSequence) { - while ((numberShadow /= sequenceSize) > 0) - letters[lettersSize - ++length] = sequence[numberShadow % sequenceSize - 1]; + while ((numberShadow /= sequenceSize) > 0) { + --numberShadow; + letters[lettersSize - ++length] = sequence[numberShadow % sequenceSize]; + } } else { while ((numberShadow /= sequenceSize) > 0) letters[lettersSize - ++length] = sequence[numberShadow % sequenceSize]; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderMedia.h b/src/3rdparty/webkit/WebCore/rendering/RenderMedia.h index 0d24c4c..32d6d65 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderMedia.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderMedia.h @@ -118,6 +118,8 @@ private: virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + RefPtr m_controlsShadowRoot; RefPtr m_panel; RefPtr m_muteButton; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.h b/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.h index aeb6205..5ee8588 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderMenuList.h @@ -78,6 +78,8 @@ private: virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + // PopupMenuClient methods virtual String itemText(unsigned listIndex) const; virtual String itemToolTip(unsigned listIndex) const; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderObject.h b/src/3rdparty/webkit/WebCore/rendering/RenderObject.h index d928521..593fa52 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderObject.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderObject.h @@ -322,6 +322,8 @@ public: bool cellWidthChanged() const { return m_cellWidthChanged; } void setCellWidthChanged(bool b = true) { m_cellWidthChanged = b; } + virtual bool requiresForcedStyleRecalcPropagation() const { return false; } + #if ENABLE(MATHML) virtual bool isRenderMathMLBlock() const { return false; } #endif // ENABLE(MATHML) @@ -412,7 +414,6 @@ public: void drawArcForBoxSide(GraphicsContext*, int x, int y, float thickness, IntSize radius, int angleStart, int angleSpan, BoxSide, Color, const Color& textcolor, EBorderStyle, bool firstCorner); -public: // The pseudo element style can be cached or uncached. Use the cached method if the pseudo element doesn't respect // any pseudo classes (and therefore has no concept of changing state). RenderStyle* getCachedPseudoStyle(PseudoId, RenderStyle* parentStyle = 0) const; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderProgress.h b/src/3rdparty/webkit/WebCore/rendering/RenderProgress.h index 0a90fde..7aa1efe 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderProgress.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderProgress.h @@ -40,6 +40,8 @@ private: virtual void calcPrefWidths(); virtual void layout(); virtual void updateFromElement(); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + int m_position; }; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderSlider.h b/src/3rdparty/webkit/WebCore/rendering/RenderSlider.h index 92ad73b..fc8ce24 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderSlider.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderSlider.h @@ -58,6 +58,8 @@ namespace WebCore { virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + PassRefPtr createThumbStyle(const RenderStyle* parentStyle); int trackSize(); diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp index 307db64..c08adc2 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp @@ -203,7 +203,7 @@ void RenderText::deleteTextBoxes() PassRefPtr RenderText::originalText() const { Node* e = node(); - return e ? static_cast(e)->dataImpl() : 0; + return (e && e->isTextNode()) ? static_cast(e)->dataImpl() : 0; } void RenderText::absoluteRects(Vector& rects, int tx, int ty) diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderTextControl.h b/src/3rdparty/webkit/WebCore/rendering/RenderTextControl.h index 2fc8edc..984f41d 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderTextControl.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderTextControl.h @@ -107,6 +107,8 @@ private: virtual bool canBeProgramaticallyScrolled(bool) const { return true; } + virtual bool requiresForcedStyleRecalcPropagation() const { return true; } + String finishText(Vector&) const; bool m_wasChangedSinceLastChangeEvent; diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderTextFragment.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderTextFragment.cpp index f3398a3..1e15d66 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderTextFragment.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderTextFragment.cpp @@ -47,7 +47,7 @@ RenderTextFragment::RenderTextFragment(Node* node, StringImpl* str) PassRefPtr RenderTextFragment::originalText() const { Node* e = node(); - RefPtr result = (e ? static_cast(e)->dataImpl() : contentString()); + RefPtr result = ((e && e->isTextNode()) ? static_cast(e)->dataImpl() : contentString()); if (result && (start() > 0 || start() < result->length())) result = result->substring(start(), end()); return result.release(); @@ -80,7 +80,7 @@ UChar RenderTextFragment::previousCharacter() { if (start()) { Node* e = node(); - StringImpl* original = (e ? static_cast(e)->dataImpl() : contentString()); + StringImpl* original = ((e && e->isTextNode()) ? static_cast(e)->dataImpl() : contentString()); if (original) return (*original)[start() - 1]; } diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp index 47b4f3b..d907d86 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp @@ -187,6 +187,7 @@ void QWebSettingsPrivate::apply() value = attributes.value(QWebSettings::JavascriptCanAccessClipboard, global->attributes.value(QWebSettings::JavascriptCanAccessClipboard)); settings->setDOMPasteAllowed(value); + settings->setJavaScriptCanAccessClipboard(value); value = attributes.value(QWebSettings::DeveloperExtrasEnabled, global->attributes.value(QWebSettings::DeveloperExtrasEnabled)); @@ -235,8 +236,8 @@ void QWebSettingsPrivate::apply() global->attributes.value(QWebSettings::LocalContentCanAccessFileUrls)); settings->setAllowFileAccessFromFileURLs(value); - value = attributes.value(QWebSettings::XSSAuditorEnabled, - global->attributes.value(QWebSettings::XSSAuditorEnabled)); + value = attributes.value(QWebSettings::XSSAuditingEnabled, + global->attributes.value(QWebSettings::XSSAuditingEnabled)); settings->setXSSAuditorEnabled(value); #if ENABLE(TILED_BACKING_STORE) diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h index 207a9b6..156f633 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h @@ -68,7 +68,7 @@ public: #endif LocalContentCanAccessRemoteUrls, DnsPrefetchEnabled, - XSSAuditorEnabled, + XSSAuditingEnabled, AcceleratedCompositingEnabled, SpatialNavigationEnabled, LocalContentCanAccessFileUrls, diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 9dd129e..63d5568 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,65 @@ +2010-07-09 Simon Hausmann + + Unreviewed trivial Symbian build fix. + + [Qt] Fix the Symbian build when compiling without S60 + + Use Q_OS_SYMBIAN instead of Q_WS_S60 for the user agent + determination. + + * Api/qwebpage.cpp: + (QWebPage::userAgentForUrl): + +2010-07-09 Kristian Amlie + + Reviewed by Simon Hausmann. + + [Qt] Fixed Qt symbian/linux-armcc mkspec when configured with -qtlibinfix. + + * declarative/declarative.pro: Use QT_LIBINFIX. + +2010-06-01 Raine Makelainen + + Reviewed by Simon Hausmann. + + [Qt]: REGRESSION(r58703): QWebSettings::JavascriptCanAccessClipboard has wrong case in "Javascript" part. + https://bugs.webkit.org/show_bug.cgi?id=39878 + + QWebSettings::JavaScriptCanAccessClipboard reverted back to + QWebSettings::JavascriptCanAccessClipboard. QWebSettings::DOMPasteAllowed enum removed. + + Value of QWebSettings::JavascriptCanAccessClipboard to setDOMPasteAllowed and + setJavaScriptCanAccessClipboard of WebCore::Settings. + + * Api/qwebsettings.cpp: + (QWebSettingsPrivate::apply): + * Api/qwebsettings.h: + +2010-05-03 Abhishek Arya + + Reviewed by Adam Barth. + + Add support for controlling clipboard access from javascript. + Clipboard access from javascript is disabled by default. + https://bugs.webkit.org/show_bug.cgi?id=27751 + + * Api/qwebsettings.cpp: + (QWebSettingsPrivate::apply): + * Api/qwebsettings.h: + +2010-03-24 Kent Hansen + + Reviewed by Simon Hausmann. + + [Qt] Rename QWebSettings::XSSAuditorEnabled to XSSAuditingEnabled + https://bugs.webkit.org/show_bug.cgi?id=36522 + + For consistency with other QWebSettings attributes. + + * Api/qwebsettings.cpp: + (QWebSettingsPrivate::apply): + * Api/qwebsettings.h: + 2010-05-19 Antti Koivisto Rubber-stamped by Kenneth Rohde Christiansen. -- cgit v0.12 From c950283638f05176f80b1fc6711a5340184e25e3 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Fri, 9 Jul 2010 12:01:07 +0200 Subject: Fix license headers on new files imported from Qt Creator Reviewed-by: Trust Me --- tools/runonphone/symbianutils/json.cpp | 40 ++++++++++++++++--------- tools/runonphone/symbianutils/json.h | 40 ++++++++++++++++--------- tools/runonphone/symbianutils/tcftrkdevice.cpp | 40 ++++++++++++++++--------- tools/runonphone/symbianutils/tcftrkdevice.h | 40 ++++++++++++++++--------- tools/runonphone/symbianutils/tcftrkmessage.cpp | 40 ++++++++++++++++--------- tools/runonphone/symbianutils/tcftrkmessage.h | 40 ++++++++++++++++--------- 6 files changed, 156 insertions(+), 84 deletions(-) diff --git a/tools/runonphone/symbianutils/json.cpp b/tools/runonphone/symbianutils/json.cpp index 4171125..2d58824 100644 --- a/tools/runonphone/symbianutils/json.cpp +++ b/tools/runonphone/symbianutils/json.cpp @@ -1,20 +1,19 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +/**************************************************************************** ** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** Commercial Usage +** This file is part of the tools applications of the Qt Toolkit. ** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage -** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the @@ -22,10 +21,23 @@ ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ ** -**************************************************************************/ +****************************************************************************/ #include "json.h" diff --git a/tools/runonphone/symbianutils/json.h b/tools/runonphone/symbianutils/json.h index ef574bd..ffcb7ab 100644 --- a/tools/runonphone/symbianutils/json.h +++ b/tools/runonphone/symbianutils/json.h @@ -1,20 +1,19 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +/**************************************************************************** ** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** Commercial Usage +** This file is part of the tools applications of the Qt Toolkit. ** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage -** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the @@ -22,10 +21,23 @@ ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ ** -**************************************************************************/ +****************************************************************************/ #ifndef SYMBIANUTILS_JSON_H #define SYMBIANUTILS_JSON_H diff --git a/tools/runonphone/symbianutils/tcftrkdevice.cpp b/tools/runonphone/symbianutils/tcftrkdevice.cpp index 723d5e9..50e3937 100644 --- a/tools/runonphone/symbianutils/tcftrkdevice.cpp +++ b/tools/runonphone/symbianutils/tcftrkdevice.cpp @@ -1,20 +1,19 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +/**************************************************************************** ** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** Commercial Usage +** This file is part of the tools applications of the Qt Toolkit. ** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage -** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the @@ -22,10 +21,23 @@ ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ ** -**************************************************************************/ +****************************************************************************/ #include "tcftrkdevice.h" #include "json.h" diff --git a/tools/runonphone/symbianutils/tcftrkdevice.h b/tools/runonphone/symbianutils/tcftrkdevice.h index bb4c184..67955e5 100644 --- a/tools/runonphone/symbianutils/tcftrkdevice.h +++ b/tools/runonphone/symbianutils/tcftrkdevice.h @@ -1,20 +1,19 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +/**************************************************************************** ** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** Commercial Usage +** This file is part of the tools applications of the Qt Toolkit. ** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage -** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the @@ -22,10 +21,23 @@ ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ ** -**************************************************************************/ +****************************************************************************/ #ifndef TCFTRKENGINE_H #define TCFTRKENGINE_H diff --git a/tools/runonphone/symbianutils/tcftrkmessage.cpp b/tools/runonphone/symbianutils/tcftrkmessage.cpp index 929bb8d..06035ab 100644 --- a/tools/runonphone/symbianutils/tcftrkmessage.cpp +++ b/tools/runonphone/symbianutils/tcftrkmessage.cpp @@ -1,20 +1,19 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +/**************************************************************************** ** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** Commercial Usage +** This file is part of the tools applications of the Qt Toolkit. ** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage -** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the @@ -22,10 +21,23 @@ ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ ** -**************************************************************************/ +****************************************************************************/ #include "tcftrkmessage.h" #include "json.h" diff --git a/tools/runonphone/symbianutils/tcftrkmessage.h b/tools/runonphone/symbianutils/tcftrkmessage.h index 8b073c8..510b485 100644 --- a/tools/runonphone/symbianutils/tcftrkmessage.h +++ b/tools/runonphone/symbianutils/tcftrkmessage.h @@ -1,20 +1,19 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +/**************************************************************************** ** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** -** Commercial Usage +** This file is part of the tools applications of the Qt Toolkit. ** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Lesser General Public License Usage -** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the @@ -22,10 +21,23 @@ ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ ** -**************************************************************************/ +****************************************************************************/ #ifndef TRCFTRKMESSAGE_H #define TRCFTRKMESSAGE_H -- cgit v0.12 From e55781212532e2abcdd1cef8548b146fb14f0713 Mon Sep 17 00:00:00 2001 From: Lasse Holmstedt Date: Fri, 9 Jul 2010 11:37:48 +0200 Subject: Resetting bindings through debugger interface Reviewed-by: Aaron Kennedy --- src/declarative/debugger/qdeclarativedebug.cpp | 15 ++++++++++++++ src/declarative/debugger/qdeclarativedebug_p.h | 1 + src/declarative/qml/qdeclarativeenginedebug.cpp | 27 +++++++++++++++++++++++++ src/declarative/qml/qdeclarativeenginedebug_p.h | 1 + 4 files changed, 44 insertions(+) diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativedebug.cpp index 0c0cf2e..b950aef 100644 --- a/src/declarative/debugger/qdeclarativedebug.cpp +++ b/src/declarative/debugger/qdeclarativedebug.cpp @@ -579,6 +579,21 @@ bool QDeclarativeEngineDebug::setBindingForObject(int objectDebugId, const QStri } } +bool QDeclarativeEngineDebug::resetBindingForObject(int objectDebugId, const QString &propertyName) +{ + Q_D(QDeclarativeEngineDebug); + + if (d->client->isConnected() && objectDebugId != -1) { + QByteArray message; + QDataStream ds(&message, QIODevice::WriteOnly); + ds << QByteArray("RESET_BINDING") << objectDebugId << propertyName; + d->client->sendMessage(message); + return true; + } else { + return false; + } +} + bool QDeclarativeEngineDebug::setMethodBody(int objectDebugId, const QString &methodName, const QString &methodBody) { diff --git a/src/declarative/debugger/qdeclarativedebug_p.h b/src/declarative/debugger/qdeclarativedebug_p.h index 9c38184..2e79c5d 100644 --- a/src/declarative/debugger/qdeclarativedebug_p.h +++ b/src/declarative/debugger/qdeclarativedebug_p.h @@ -96,6 +96,7 @@ public: QObject *parent = 0); bool setBindingForObject(int objectDebugId, const QString &propertyName, const QVariant &bindingExpression, bool isLiteralValue); + bool resetBindingForObject(int objectDebugId, const QString &propertyName); bool setMethodBody(int objectDebugId, const QString &methodName, const QString &methodBody); private: diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index acd7ab6..001da46 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -461,6 +461,11 @@ void QDeclarativeEngineDebugServer::messageReceived(const QByteArray &message) bool isLiteralValue; ds >> objectId >> propertyName >> expr >> isLiteralValue; setBinding(objectId, propertyName, expr, isLiteralValue); + } else if (type == "RESET_BINDING") { + int objectId; + QString propertyName; + ds >> objectId >> propertyName; + resetBinding(objectId, propertyName); } else if (type == "SET_METHOD_BODY") { int objectId; QString methodName; @@ -502,6 +507,28 @@ void QDeclarativeEngineDebugServer::setBinding(int objectId, } } +void QDeclarativeEngineDebugServer::resetBinding(int objectId, const QString &propertyName) +{ + QObject *object = objectForId(objectId); + QDeclarativeContext *context = qmlContext(object); + + if (object && context) { + if (object->property(propertyName.toLatin1()).isValid()) { + QDeclarativeProperty property(object, propertyName); + QDeclarativeAbstractBinding *oldBinding = QDeclarativePropertyPrivate::binding(property); + if (oldBinding) { + QDeclarativeAbstractBinding *oldBinding = QDeclarativePropertyPrivate::setBinding(property, 0); + if (oldBinding) + oldBinding->destroy(); + } else { + if (property.isResettable()) { + property.reset(); + } + } + } + } +} + void QDeclarativeEngineDebugServer::setMethodBody(int objectId, const QString &method, const QString &body) { QObject *object = objectForId(objectId); diff --git a/src/declarative/qml/qdeclarativeenginedebug_p.h b/src/declarative/qml/qdeclarativeenginedebug_p.h index ce6df0d..ea35b40 100644 --- a/src/declarative/qml/qdeclarativeenginedebug_p.h +++ b/src/declarative/qml/qdeclarativeenginedebug_p.h @@ -108,6 +108,7 @@ private: QDeclarativeObjectProperty propertyData(QObject *, int); QVariant valueContents(const QVariant &defaultValue) const; void setBinding(int objectId, const QString &propertyName, const QVariant &expression, bool isLiteralValue); + void resetBinding(int objectId, const QString &propertyName); void setMethodBody(int objectId, const QString &method, const QString &body); static QList m_engines; -- cgit v0.12 From 7201ba64bc001791f769038f1801502baf415a8e Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Fri, 9 Jul 2010 13:29:31 +0200 Subject: Replace 4.6 in all .qdocconf files Reviewed-by: David Boddie --- tools/qdoc3/doc/files/qt.qdocconf | 10 +++++----- tools/qdoc3/test/qdeclarative.qdocconf | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/qdoc3/doc/files/qt.qdocconf b/tools/qdoc3/doc/files/qt.qdocconf index 942d023..09c112a 100644 --- a/tools/qdoc3/doc/files/qt.qdocconf +++ b/tools/qdoc3/doc/files/qt.qdocconf @@ -8,7 +8,7 @@ project = Qt versionsym = version = %VERSION% description = Qt Reference Documentation -url = http://qt.nokia.com/doc/4.6 +url = http://qt.nokia.com/doc/4.7 edition.Console.modules = QtCore QtDBus QtNetwork QtScript QtSql QtXml \ QtXmlPatterns QtTest @@ -22,7 +22,7 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.460 +qhp.Qt.namespace = com.trolltech.qt.470 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation qhp.Qt.indexRoot = @@ -36,9 +36,9 @@ qhp.Qt.extraFiles = classic.css \ images/dynamiclayouts-example.png \ images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.6.0 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.6.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.6.0 +qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.7.0 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf index 0433c9f..facec5c 100644 --- a/tools/qdoc3/test/qdeclarative.qdocconf +++ b/tools/qdoc3/test/qdeclarative.qdocconf @@ -55,9 +55,9 @@ qhp.Qml.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.Qml.filterAttributes = qt 4.6.0 qtrefdoc -qhp.Qml.customFilters.Qt.name = Qt 4.6.0 -qhp.Qml.customFilters.Qt.filterAttributes = qt 4.6.0 +qhp.Qml.filterAttributes = qt 4.7.0 qtrefdoc +qhp.Qml.customFilters.Qt.name = Qt 4.7.0 +qhp.Qml.customFilters.Qt.filterAttributes = qt 4.7.0 qhp.Qml.subprojects = classes qhp.Qml.subprojects.classes.title = Elements qhp.Qml.subprojects.classes.indexTitle = Qml Elements -- cgit v0.12 From 767aa8d648bf81a3303da66a4fef98657ea5ece3 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Fri, 9 Jul 2010 12:16:35 +0200 Subject: Fix USB serial port detection of the Nokia N95 on linux The interface numbers in /dev/serial/by-id are hex rather than decimal. Also added code to read the manufacturer name and product name from string descriptors in order to get a better match. Unfortunately, root privilege is needed or the API returns an error. In this case, we still use the weak matching on interface number only. Task-Number: QTBUG-11794 Reviewed-By: Thomas Zander --- tools/runonphone/main.cpp | 2 +- tools/runonphone/serenum.h | 2 +- tools/runonphone/serenum_unix.cpp | 62 +++++++++++++++++++++++++++++++++++---- tools/runonphone/serenum_win.cpp | 2 +- 4 files changed, 59 insertions(+), 9 deletions(-) diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp index dc83044..7767e4b 100644 --- a/tools/runonphone/main.cpp +++ b/tools/runonphone/main.cpp @@ -155,7 +155,7 @@ int main(int argc, char *argv[]) if (serialPortName.isEmpty()) { if (loglevel > 0) outstream << "Detecting serial ports" << endl; - foreach (const SerialPortId &id, enumerateSerialPorts()) { + foreach (const SerialPortId &id, enumerateSerialPorts(loglevel)) { if (loglevel > 0) outstream << "Port Name: " << id.portName << ", " << "Friendly Name:" << id.friendlyName << endl; diff --git a/tools/runonphone/serenum.h b/tools/runonphone/serenum.h index b794b97..a65c8cb 100644 --- a/tools/runonphone/serenum.h +++ b/tools/runonphone/serenum.h @@ -51,6 +51,6 @@ struct SerialPortId QString friendlyName; }; -QList enumerateSerialPorts(); +QList enumerateSerialPorts(int loglevel); #endif // WIN32SERENUM_H diff --git a/tools/runonphone/serenum_unix.cpp b/tools/runonphone/serenum_unix.cpp index b6f0293..4c90d7a 100644 --- a/tools/runonphone/serenum_unix.cpp +++ b/tools/runonphone/serenum_unix.cpp @@ -48,7 +48,7 @@ #include -QList enumerateSerialPorts() +QList enumerateSerialPorts(int loglevel) { QList eligableInterfaces; QList list; @@ -85,6 +85,41 @@ QList enumerateSerialPorts() } } } + + if (usableInterfaces.isEmpty()) + continue; + + QString manufacturerString; + QString productString; + + usb_dev_handle *devh = usb_open(device); + if (devh) { + QByteArray buf; + buf.resize(256); + int err = usb_get_string_simple(devh, device->descriptor.iManufacturer, buf.data(), buf.size()); + if (err < 0) { + if (loglevel > 1) + qDebug() << " can't read manufacturer name, error:" << err; + } else { + manufacturerString = QString::fromAscii(buf); + if (loglevel > 1) + qDebug() << " manufacturer:" << manufacturerString; + } + + buf.resize(256); + err = usb_get_string_simple(devh, device->descriptor.iProduct, buf.data(), buf.size()); + if (err < 0) { + if (loglevel > 1) + qDebug() << " can't read product name, error:" << err; + } else { + productString = QString::fromAscii(buf); + if (loglevel > 1) + qDebug() << " product:" << productString; + } + usb_close(devh); + } else if (loglevel > 0) { + qDebug() << " can't open usb device"; + } // second loop to find the actual data interface. foreach (int i, usableInterfaces) { @@ -94,11 +129,21 @@ QList enumerateSerialPorts() if (descriptor.bInterfaceNumber != i) continue; if (descriptor.bInterfaceClass == 10) { // "CDC Data" - // qDebug() << " found the data port" - // << "bus:" << bus->dirname - // << "device" << device->filename - // << "interface" << descriptor.bInterfaceNumber; - eligableInterfaces << QString("if%1").arg(QString::number(i), 2, QChar('0')); // fix! + if (loglevel > 1) { + qDebug() << " found the data port" + << "bus:" << bus->dirname + << "device" << device->filename + << "interface" << descriptor.bInterfaceNumber; + } + // ### manufacturer and product strings are only readable as root :( + if (!manufacturerString.isEmpty() && !productString.isEmpty()) { + eligableInterfaces << QString("usb-%1_%2-if%3") + .arg(manufacturerString.replace(QChar(' '), QChar('_'))) + .arg(productString.replace(QChar(' '), QChar('_'))) + .arg(i, 2, 16, QChar('0')); + } else { + eligableInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix! + } } } } @@ -106,6 +151,9 @@ QList enumerateSerialPorts() } } } + + if (loglevel > 1) + qDebug() << " searching for interfaces:" << eligableInterfaces; QDir dir("/dev/serial/by-id/"); foreach (const QFileInfo &info, dir.entryInfoList()) { @@ -113,6 +161,8 @@ QList enumerateSerialPorts() bool usable = eligableInterfaces.isEmpty(); foreach (const QString &iface, eligableInterfaces) { if (info.fileName().contains(iface)) { + if (loglevel > 1) + qDebug() << " found device file:" << info.fileName() << endl; usable = true; break; } diff --git a/tools/runonphone/serenum_win.cpp b/tools/runonphone/serenum_win.cpp index 572161c..070cac2 100644 --- a/tools/runonphone/serenum_win.cpp +++ b/tools/runonphone/serenum_win.cpp @@ -53,7 +53,7 @@ //{4d36e978-e325-11ce-bfc1-08002be10318} //DEFINE_GUID(GUID_DEVCLASS_PORTS, 0x4D36E978, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 ); -QList enumerateSerialPorts() +QList enumerateSerialPorts(int) { DWORD index=0; SP_DEVINFO_DATA info; -- cgit v0.12 From 0efc71b7af2818f2f40438b2807efe361352f7a9 Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Fri, 9 Jul 2010 14:31:04 +0200 Subject: Linux runonphone - tell the user which driver to load The linux usbserial driver doesn't attach to devices automatically, to avoid conflicts with the real driver (if there is one). So the user must run modprobe to load the driver before runonphone can be used. Since runonphone has found the correct device(s) using libusb, this patch will tell the user the modprobe command that is required to load the generic usbserial driver. Reviewed-By: Gareth Stockwell --- tools/runonphone/serenum_unix.cpp | 51 ++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/tools/runonphone/serenum_unix.cpp b/tools/runonphone/serenum_unix.cpp index 4c90d7a..db6375e 100644 --- a/tools/runonphone/serenum_unix.cpp +++ b/tools/runonphone/serenum_unix.cpp @@ -48,9 +48,32 @@ #include +class InterfaceInfo +{ +public: + InterfaceInfo(const QString &mf, const QString &pr, int mfid, int prid); + QString manufacturer; + QString product; + int manufacturerid; + int productid; +}; + +InterfaceInfo::InterfaceInfo(const QString &mf, const QString &pr, int mfid, int prid) : + manufacturer(mf), + product(pr), + manufacturerid(mfid), + productid(prid) +{ + if(mf.isEmpty()) + manufacturer = QString("[%1]").arg(mfid, 4, 16, QChar('0')); + if(pr.isEmpty()) + product = QString("[%1]").arg(prid, 4, 16, QChar('0')); +} + QList enumerateSerialPorts(int loglevel) { - QList eligableInterfaces; + QList eligibleInterfaces; + QList eligibleInterfacesInfo; QList list; usb_init(); @@ -137,13 +160,14 @@ QList enumerateSerialPorts(int loglevel) } // ### manufacturer and product strings are only readable as root :( if (!manufacturerString.isEmpty() && !productString.isEmpty()) { - eligableInterfaces << QString("usb-%1_%2-if%3") + eligibleInterfaces << QString("usb-%1_%2-if%3") .arg(manufacturerString.replace(QChar(' '), QChar('_'))) .arg(productString.replace(QChar(' '), QChar('_'))) .arg(i, 2, 16, QChar('0')); } else { - eligableInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix! + eligibleInterfaces << QString("if%1").arg(i, 2, 16, QChar('0')); // fix! } + eligibleInterfacesInfo << InterfaceInfo(manufacturerString, productString, device->descriptor.idVendor, device->descriptor.idProduct); } } } @@ -153,13 +177,13 @@ QList enumerateSerialPorts(int loglevel) } if (loglevel > 1) - qDebug() << " searching for interfaces:" << eligableInterfaces; + qDebug() << " searching for interfaces:" << eligibleInterfaces; QDir dir("/dev/serial/by-id/"); foreach (const QFileInfo &info, dir.entryInfoList()) { if (!info.isDir()) { - bool usable = eligableInterfaces.isEmpty(); - foreach (const QString &iface, eligableInterfaces) { + bool usable = eligibleInterfaces.isEmpty(); + foreach (const QString &iface, eligibleInterfaces) { if (info.fileName().contains(iface)) { if (loglevel > 1) qDebug() << " found device file:" << info.fileName() << endl; @@ -176,6 +200,21 @@ QList enumerateSerialPorts(int loglevel) list << id; } } + + if (list.isEmpty() && !eligibleInterfacesInfo.isEmpty() && loglevel > 0) { + qDebug() << "Possible USB devices found, but without serial drivers:"; + foreach(const InterfaceInfo &iface, eligibleInterfacesInfo) { + qDebug() << " Manufacturer:" + << iface.manufacturer + << "Product:" + << iface.product + << endl + << " Load generic driver using:" + << QString("sudo modprobe usbserial vendor=0x%1 product=0x%2") + .arg(iface.manufacturerid, 4, 16, QChar('0')) + .arg(iface.productid, 4, 16, QChar('0')); + } + } return list; } -- cgit v0.12 From 6f6c25b61f6d83e86e93c5f82e2d699619d00d5e Mon Sep 17 00:00:00 2001 From: mae Date: Fri, 9 Jul 2010 19:48:01 +0200 Subject: Fix QTextDocument::markContentsDirty() The function markContentsDirty(from,length) is documented to inform the document that it needs to lay out again the part from from to from + length. Trouble was that the function was implemented using beginEditBlock()/endEditBlock(), which has the negative side effect that it does increase the document's revision number and emits all sorts of contentChanged() signals. This did not matter from the one case where Qt uses the method itself in QSyntaxHighlighter, because here a private flag inContentsChange avoided the issue. Without the change, we cannot implement semantic syntax highlighting in creator without expensive extra selections or triggering a full rehighlight via QSyntaxHighlighter. Done-with: Roberto Raggi Reviewed-by: Roberto Raggi --- src/gui/text/qtextdocument.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index e0386f1..195dc28 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -583,11 +583,11 @@ void QTextDocument::setDefaultTextOption(const QTextOption &option) void QTextDocument::markContentsDirty(int from, int length) { Q_D(QTextDocument); - if (!d->inContentsChange) - d->beginEditBlock(); d->documentChange(from, length); - if (!d->inContentsChange) - d->endEditBlock(); + if (!d->inContentsChange) { + d->lout->documentChanged(d->docChangeFrom, d->docChangeOldLength, d->docChangeLength); + d->docChangeFrom = -1; + } } /*! -- cgit v0.12 From b4ceee6ee8f8bd45567c900be0b89dc13af57c3d Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 12 Jul 2010 08:55:32 +1000 Subject: Fix .pro file after class/test rename. --- tests/auto/declarative/declarative.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index daffdef..a7fb3b8 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -52,7 +52,7 @@ SUBDIRS += \ qdeclarativeqt \ qdeclarativerepeater \ qdeclarativesmoothedanimation \ - qdeclarativespringfollow \ + qdeclarativespringanimation \ qdeclarativesqldatabase \ qdeclarativestates \ qdeclarativestyledtext \ -- cgit v0.12 From 0fdf5122c72eb86d49cba2b69f80d3a9c5949da6 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Mon, 12 Jul 2010 11:22:16 +1000 Subject: Add copy(), cut() and paste() support to TextInput Task-number: QTBUG-12086 Reviewed-by: Michael Brasser --- src/declarative/QmlChanges.txt | 5 +++ .../graphicsitems/qdeclarativetextinput.cpp | 36 +++++++++++++++++++++ .../graphicsitems/qdeclarativetextinput_p.h | 5 +++ .../tst_qdeclarativetextedit.cpp | 35 ++++++++++++++++++++ .../tst_qdeclarativetextinput.cpp | 37 +++++++++++++++++++++- 5 files changed, 117 insertions(+), 1 deletion(-) diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt index 259d9a9..872f6cb 100644 --- a/src/declarative/QmlChanges.txt +++ b/src/declarative/QmlChanges.txt @@ -1,4 +1,9 @@ ============================================================================= +The changes below are pre Qt 4.7.0 tech preview + +TextInput + - copy(), cut() and paste() functions added + The changes below are pre Qt 4.7.0 beta 2 QDeclarativeView diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index 5325f25..f6af1f4 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -1142,6 +1142,42 @@ void QDeclarativeTextInput::selectAll() d->control->setSelection(0, d->control->text().length()); } +#ifndef QT_NO_CLIPBOARD +/*! + \qmlmethod TextInput::cut() + + Moves the currently selected text to the system clipboard. +*/ +void QDeclarativeTextInput::cut() +{ + Q_D(QDeclarativeTextInput); + d->control->copy(); + d->control->del(); +} + +/*! + \qmlmethod TextInput::copy() + + Copies the currently selected text to the system clipboard. +*/ +void QDeclarativeTextInput::copy() +{ + Q_D(QDeclarativeTextInput); + d->control->copy(); +} + +/*! + \qmlmethod TextInput::paste() + + Replaces the currently selected text by the contents of the system clipboard. +*/ +void QDeclarativeTextInput::paste() +{ + Q_D(QDeclarativeTextInput); + d->control->paste(); +} +#endif // QT_NO_CLIPBOARD + /*! \qmlmethod void TextInput::selectWord() diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h index ded0d09..b1862c6 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h +++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h @@ -232,6 +232,11 @@ public Q_SLOTS: void selectAll(); void selectWord(); void select(int start, int end); +#ifndef QT_NO_CLIPBOARD + void cut(); + void copy(); + void paste(); +#endif private Q_SLOTS: void updateSize(bool needsRedraw = true); diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 5a81881..3e6a38c 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -114,6 +114,7 @@ private slots: void delegateLoading(); void navigation(); void readOnly(); + void copyAndPaste(); void openInputPanelOnClick(); void openInputPanelOnFocus(); void geometrySignals(); @@ -850,6 +851,40 @@ void tst_qdeclarativetextedit::navigation() QVERIFY(input->hasFocus() == true); } +void tst_qdeclarativetextedit::copyAndPaste() { +#ifndef QT_NO_CLIPBOARD + QString componentStr = "import Qt 4.7\nTextEdit { text: \"Hello world!\" }"; + QDeclarativeComponent textEditComponent(&engine); + textEditComponent.setData(componentStr.toLatin1(), QUrl()); + QDeclarativeTextEdit *textEdit = qobject_cast(textEditComponent.create()); + QVERIFY(textEdit != 0); + + // copy and paste + QCOMPARE(textEdit->text().length(), 12); + textEdit->select(0, textEdit->text().length());; + textEdit->copy(); + QCOMPARE(textEdit->selectedText(), QString("Hello world!")); + QCOMPARE(textEdit->selectedText().length(), 12); + textEdit->setCursorPosition(0); + textEdit->paste(); + QCOMPARE(textEdit->text(), QString("Hello world!Hello world!")); + QCOMPARE(textEdit->text().length(), 24); + + // select word + textEdit->setCursorPosition(0); + textEdit->selectWord(); + QCOMPARE(textEdit->selectedText(), QString("Hello")); + + // select all and cut + textEdit->selectAll(); + textEdit->cut(); + QCOMPARE(textEdit->text().length(), 0); + textEdit->paste(); + QCOMPARE(textEdit->text(), QString("Hello world!Hello world!")); + QCOMPARE(textEdit->text().length(), 24); +#endif +} + void tst_qdeclarativetextedit::readOnly() { QDeclarativeView *canvas = createView(SRCDIR "/data/readOnly.qml"); diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 859221e..c8767b5 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -100,6 +100,7 @@ private slots: void cursorDelegate(); void navigation(); + void copyAndPaste(); void readOnly(); void openInputPanelOnClick(); @@ -697,6 +698,40 @@ void tst_qdeclarativetextinput::navigation() delete canvas; } +void tst_qdeclarativetextinput::copyAndPaste() { +#ifndef QT_NO_CLIPBOARD + QString componentStr = "import Qt 4.7\nTextInput { text: \"Hello world!\" }"; + QDeclarativeComponent textInputComponent(&engine); + textInputComponent.setData(componentStr.toLatin1(), QUrl()); + QDeclarativeTextInput *textInput = qobject_cast(textInputComponent.create()); + QVERIFY(textInput != 0); + + // copy and paste + QCOMPARE(textInput->text().length(), 12); + textInput->select(0, textInput->text().length());; + textInput->copy(); + QCOMPARE(textInput->selectedText(), QString("Hello world!")); + QCOMPARE(textInput->selectedText().length(), 12); + textInput->setCursorPosition(0); + textInput->paste(); + QCOMPARE(textInput->text(), QString("Hello world!Hello world!")); + QCOMPARE(textInput->text().length(), 24); + + // select word + textInput->setCursorPosition(0); + textInput->selectWord(); + QCOMPARE(textInput->selectedText(), QString("Hello")); + + // select all and cut + textInput->selectAll(); + textInput->cut(); + QCOMPARE(textInput->text().length(), 0); + textInput->paste(); + QCOMPARE(textInput->text(), QString("Hello world!Hello world!")); + QCOMPARE(textInput->text().length(), 24); +#endif +} + void tst_qdeclarativetextinput::cursorDelegate() { QDeclarativeView* view = createView(SRCDIR "/data/cursorTest.qml"); @@ -1008,7 +1043,7 @@ void tst_qdeclarativetextinput::openInputPanelOnFocus() QCOMPARE(ic.openInputPanelReceived, false); // input method should be disabled - // if TextEdit loses focus + // if TextInput loses focus input.setFocus(false); QApplication::processEvents(); QVERIFY(view.inputContext() == 0); -- cgit v0.12 From e45b8dceca9c424815c6b08355a95cb34382186c Mon Sep 17 00:00:00 2001 From: Jason McDonald Date: Mon, 12 Jul 2010 12:10:45 +1000 Subject: Fix qdoc error. Task-number: QTBUG-12078 Reviewed-By: Trust Me --- doc/src/external-resources.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc index cbd66ee..61c9da2 100644 --- a/doc/src/external-resources.qdoc +++ b/doc/src/external-resources.qdoc @@ -416,5 +416,5 @@ /*! \externalpage http://opensource.org/licenses/bsd-license.php - \title New and Modified BSD Licenses -*/ \ No newline at end of file + \title BSD License +*/ -- cgit v0.12 From d69671cf3fc6bf51e7cbb322dce51fa0719ae6bc Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Mon, 12 Jul 2010 14:35:24 +1000 Subject: Fix Mac CI --- .../qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 12 ++++++++++++ .../qdeclarativetextinput/tst_qdeclarativetextinput.cpp | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index 3e6a38c..4783bc7 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -853,6 +853,18 @@ void tst_qdeclarativetextedit::navigation() void tst_qdeclarativetextedit::copyAndPaste() { #ifndef QT_NO_CLIPBOARD + +#ifdef Q_WS_MAC + { + PasteboardRef pasteboard; + OSStatus status = PasteboardCreate(0, &pasteboard); + if (status == noErr) + CFRelease(pasteboard); + else + QSKIP("This machine doesn't support the clipboard", SkipAll); + } +#endif + QString componentStr = "import Qt 4.7\nTextEdit { text: \"Hello world!\" }"; QDeclarativeComponent textEditComponent(&engine); textEditComponent.setData(componentStr.toLatin1(), QUrl()); diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index c8767b5..a48bc39 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -700,6 +700,18 @@ void tst_qdeclarativetextinput::navigation() void tst_qdeclarativetextinput::copyAndPaste() { #ifndef QT_NO_CLIPBOARD + +#ifdef Q_WS_MAC + { + PasteboardRef pasteboard; + OSStatus status = PasteboardCreate(0, &pasteboard); + if (status == noErr) + CFRelease(pasteboard); + else + QSKIP("This machine doesn't support the clipboard", SkipAll); + } +#endif + QString componentStr = "import Qt 4.7\nTextInput { text: \"Hello world!\" }"; QDeclarativeComponent textInputComponent(&engine); textInputComponent.setData(componentStr.toLatin1(), QUrl()); -- cgit v0.12 From cbc7a0251a727827418707c7a05ea44241a06efb Mon Sep 17 00:00:00 2001 From: Bea Lam Date: Mon, 12 Jul 2010 15:34:21 +1000 Subject: Remove use of SpringFollow and SmoothedFollow in qmlvisual test (onvert to use SpringAnimation and SmoothedAnimation instead) --- .../smoothedfollow.qml | 20 ++++++++-------- .../qmlvisual/qdeclarativespringfollow/clock.qml | 27 ++++++++++++---------- .../qmlvisual/qdeclarativespringfollow/follow.qml | 26 +++++++++++++-------- 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml index 7ca0ca5..0df727b 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml @@ -14,27 +14,27 @@ Rectangle { } Rectangle { - width: 50; height: 20; y: 60; color: "red" - SmoothedFollow on x { to: rect.x; velocity: 400; enabled: true } + width: 50; height: 20; x: rect.x; y: 60; color: "red" + Behavior on x { SmoothedAnimation { velocity: 400 } } } Rectangle { - width: 50; height: 20; y: 90; color: "yellow" - SmoothedFollow on x { to: rect.x; velocity: 300; reversingMode: SmoothedAnimation.Immediate; enabled: true } + width: 50; height: 20; x: rect.x; y: 90; color: "yellow" + Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } } } Rectangle { - width: 50; height: 20; y: 120; color: "green" - SmoothedFollow on x { to: rect.x; reversingMode: SmoothedAnimation.Sync; enabled: true } + width: 50; height: 20; x: rect.x; y: 120; color: "green" + Behavior on x { SmoothedAnimation { reversingMode: SmoothedAnimation.Sync } } } Rectangle { - width: 50; height: 20; y: 150; color: "purple" - SmoothedFollow on x { to: rect.x; maximumEasingTime: 200; enabled: true } + width: 50; height: 20; x: rect.x; y: 150; color: "purple" + Behavior on x { SmoothedAnimation { maximumEasingTime: 200 } } } Rectangle { - width: 50; height: 20; y: 180; color: "blue" - SmoothedFollow on x { to: rect.x; duration: 300; enabled: true } + width: 50; height: 20; x: rect.x; y: 180; color: "blue" + Behavior on x { SmoothedAnimation { duration: 300 } } } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml index d981763..c64497a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml @@ -22,10 +22,11 @@ Rectangle { smooth: true transform: Rotation { id: hourRotation - origin.x: 7.5; origin.y: 73; angle: 0 - SpringFollow on angle { - spring: 2; damping: 0.2; modulus: 360 - to: (clock.hours * 30) + (clock.minutes * 0.5) + origin.x: 7.5; origin.y: 73 + angle: (clock.hours * 30) + (clock.minutes * 0.5) + + Behavior on angle { + SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } } } } @@ -36,10 +37,11 @@ Rectangle { smooth: true transform: Rotation { id: minuteRotation - origin.x: 6.5; origin.y: 83; angle: 0 - SpringFollow on angle { - spring: 2; damping: 0.2; modulus: 360 - to: clock.minutes * 6 + origin.x: 6.5; origin.y: 83 + angle: clock.minutes * 6 + + Behavior on angle { + SpringAnimation { spring: 2; damping: 0.2; modulus: 360 } } } } @@ -50,10 +52,11 @@ Rectangle { smooth: true transform: Rotation { id: secondRotation - origin.x: 2.5; origin.y: 80; angle: 0 - SpringFollow on angle { - spring: 5; damping: 0.25; modulus: 360 - to: clock.seconds * 6 + origin.x: 2.5; origin.y: 80 + angle: clock.seconds * 6 + + Behavior on angle { + SpringAnimation { spring: 5; damping: 0.25; modulus: 360 } } } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml index cabdce7..05b93df 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml @@ -3,6 +3,7 @@ import Qt 4.7 Rectangle { color: "#ffffff" width: 320; height: 240 + Rectangle { id: rect color: "#00ff00" @@ -25,22 +26,22 @@ Rectangle { Rectangle { color: "#ff0000" x: rect.width; width: rect.width; height: 20 - y: 200 - SpringFollow on y { to: rect.y; velocity: 200 } + y: rect.y + Behavior on y { SpringAnimation { velocity: 200 } } } // Spring Rectangle { color: "#ff0000" x: rect.width * 2; width: rect.width/2; height: 20 - y: 200 - SpringFollow on y { to: rect.y; spring: 1.0; damping: 0.2 } + y: rect.y + Behavior on y { SpringAnimation { spring: 1.0; damping: 0.2 } } } Rectangle { color: "#880000" x: rect.width * 2.5; width: rect.width/2; height: 20 - y: 200 - SpringFollow on y { to: rect.y; spring: 1.0; damping: 0.2; mass: 3.0 } // "heavier" object + y: rect.y + Behavior on y { SpringAnimation { spring: 1.0; damping: 0.2; mass: 3.0 } } // "heavier" object } // Follow mouse @@ -49,15 +50,22 @@ Rectangle { anchors.fill: parent Rectangle { id: ball + property int targetX: mouseRegion.mouseX - 10 + property int targetY: mouseRegion.mouseY - 10 + + x: targetX + y: targetY width: 20; height: 20 radius: 10 color: "#0000ff" - SpringFollow on x { id: f1; to: mouseRegion.mouseX-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } - SpringFollow on y { id: f2; to: mouseRegion.mouseY-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } + + Behavior on x { SpringAnimation { spring: 1.0; damping: 0.05; epsilon: 0.25 } } + Behavior on y { SpringAnimation { spring: 1.0; damping: 0.05; epsilon: 0.25 } } + states: [ State { name: "following" - when: !f1.inSync || !f2.inSync + when: ball.x != ball.targetX || ball.y != ball.targetY PropertyChanges { target: ball; color: "#ff0000" } } ] -- cgit v0.12 From d7b41ca83bd11647a90b78fa388d278cf98189ab Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 1 Feb 2010 09:46:44 +0100 Subject: Make cacheGlyphs() function (and the destructor) virtual. This class will be implemented differently on Symbian due to the presence of a class that allows cross process sharing of glyph images so make this function virtual. Reviewed-by: Rhys Weatherley --- src/openvg/qpaintengine_vg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 4b22d5e..9290b79 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -84,9 +84,9 @@ class QVGFontGlyphCache { public: QVGFontGlyphCache(); - ~QVGFontGlyphCache(); + virtual ~QVGFontGlyphCache(); - void cacheGlyphs(QVGPaintEnginePrivate *d, QFontEngine *fontEngine, const glyph_t *g, int count); + virtual void cacheGlyphs(QVGPaintEnginePrivate *d, QFontEngine *fontEngine, const glyph_t *g, int count); void setScaleFromText(const QFont &font, QFontEngine *fontEngine); -- cgit v0.12 From 8757747b05940d8ce6e9550b382a7ea196db90b4 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 1 Feb 2010 09:50:51 +0100 Subject: Move QVGFontGlyphCache from source file into a separate header Needed in order to subclass and override in the Symbian specific implementation. Reviewed-by: Rhys Weatherley --- src/openvg/openvg.pro | 3 +- src/openvg/qpaintengine_vg.cpp | 19 +-------- src/openvg/qpaintengine_vg_p.h | 1 - src/openvg/qvgfontglyphcache_p.h | 84 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 src/openvg/qvgfontglyphcache_p.h diff --git a/src/openvg/openvg.pro b/src/openvg/openvg.pro index 883f0f3..0000db8 100644 --- a/src/openvg/openvg.pro +++ b/src/openvg/openvg.pro @@ -17,7 +17,8 @@ HEADERS += \ qpixmapdata_vg_p.h \ qpixmapfilter_vg_p.h \ qvgcompositionhelper_p.h \ - qvgimagepool_p.h + qvgimagepool_p.h \ + qvgfontglyphcache_p.h SOURCES += \ qpaintengine_vg.cpp \ qpixmapdata_vg.cpp \ diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 9290b79..564b390 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -44,6 +44,7 @@ #include "qpixmapfilter_vg_p.h" #include "qvgcompositionhelper_p.h" #include "qvgimagepool_p.h" +#include "qvgfontglyphcache_p.h" #if !defined(QT_NO_EGL) #include #include "qwindowsurface_vgegl_p.h" @@ -80,24 +81,6 @@ Q_DECL_IMPORT extern int qt_defaultDpiY(); class QVGPaintEnginePrivate; -class QVGFontGlyphCache -{ -public: - QVGFontGlyphCache(); - virtual ~QVGFontGlyphCache(); - - virtual void cacheGlyphs(QVGPaintEnginePrivate *d, QFontEngine *fontEngine, const glyph_t *g, int count); - - void setScaleFromText(const QFont &font, QFontEngine *fontEngine); - - VGFont font; - VGfloat scaleX; - VGfloat scaleY; - - uint cachedGlyphsMask[256 / 32]; - QSet cachedGlyphs; -}; - typedef QHash QVGFontCache; #endif diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h index 33c49ba..75cf053 100644 --- a/src/openvg/qpaintengine_vg_p.h +++ b/src/openvg/qpaintengine_vg_p.h @@ -172,7 +172,6 @@ private: bool clearRect(const QRectF &rect, const QColor &color); }; - QT_END_NAMESPACE #endif diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h new file mode 100644 index 0000000..ced0d735 --- /dev/null +++ b/src/openvg/qvgfontglyphcache_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtOpenVG module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVGFONTGLYPHCACHE_H +#define QVGFONTGLYPHCACHE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QVGPaintEnginePrivate; + +class QVGFontGlyphCache +{ +public: + QVGFontGlyphCache(); + virtual ~QVGFontGlyphCache(); + + virtual void cacheGlyphs(QVGPaintEnginePrivate *d, + QFontEngine *fontEngine, + const glyph_t *g, int count); + void setScaleFromText(const QFont &font, QFontEngine *fontEngine); + + VGFont font; + VGfloat scaleX; + VGfloat scaleY; + + uint cachedGlyphsMask[256 / 32]; + QSet cachedGlyphs; +}; + +QT_END_NAMESPACE + +#endif // QVGFONTGLYPHCACHE_H -- cgit v0.12 From a07ae6df3c274639ff68856cd2e68689a3ddbf3f Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 1 Feb 2010 10:54:53 +0100 Subject: Add new file for Symbian specific VG stuff and add Symbian glyph cache. Factor out the Symbian specific bits of QVGPixmapData into a separate file and introduce our subclassed implementation of the VG font cache. Also make our font cache a friend of the S60 font engine because the cache needs to access the CFont member to create the glyph image. Reviewed-by: Alessandro Portale --- src/gui/text/qfontengine_s60_p.h | 1 + src/openvg/openvg.pro | 6 +- src/openvg/qpixmapdata_vg.cpp | 259 ----------------------------- src/openvg/qvg_symbian.cpp | 348 +++++++++++++++++++++++++++++++++++++++ src/openvg/qvgfontglyphcache_p.h | 9 + 5 files changed, 363 insertions(+), 260 deletions(-) create mode 100644 src/openvg/qvg_symbian.cpp diff --git a/src/gui/text/qfontengine_s60_p.h b/src/gui/text/qfontengine_s60_p.h index beeb4cc..9400d55 100644 --- a/src/gui/text/qfontengine_s60_p.h +++ b/src/gui/text/qfontengine_s60_p.h @@ -134,6 +134,7 @@ public: private: friend class QFontPrivate; + friend class QSymbianVGFontGlyphCache; QFixed glyphAdvance(HB_Glyph glyph) const; CFont *fontWithSize(qreal size) const; diff --git a/src/openvg/openvg.pro b/src/openvg/openvg.pro index 0000db8..eb60331 100644 --- a/src/openvg/openvg.pro +++ b/src/openvg/openvg.pro @@ -34,7 +34,11 @@ contains(QT_CONFIG, egl) { qwindowsurface_vgegl.cpp } -symbian: DEFINES += QVG_RECREATE_ON_SIZE_CHANGE QVG_BUFFER_SCROLLING +symbian { + DEFINES += QVG_RECREATE_ON_SIZE_CHANGE QVG_BUFFER_SCROLLING + SOURCES += \ + qvg_symbian.cpp +} include(../qbase.pri) diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp index a4afc95..cb413d0 100644 --- a/src/openvg/qpixmapdata_vg.cpp +++ b/src/openvg/qpixmapdata_vg.cpp @@ -48,15 +48,6 @@ #include "qvg_p.h" #include "qvgimagepool_p.h" -#if defined(Q_OS_SYMBIAN) -#include -#include -#endif -#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE -#include -typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR); -#endif // QT_SYMBIAN_SUPPORTS_SGIMAGE - QT_BEGIN_NAMESPACE static int qt_vg_pixmap_serial = 0; @@ -421,254 +412,4 @@ Q_OPENVG_EXPORT VGImage qPixmapToVGImage(const QPixmap& pixmap) return VG_INVALID_HANDLE; } -#if defined(Q_OS_SYMBIAN) - -static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap) -{ - CFbsBitmap *copy = q_check_ptr(new CFbsBitmap); - if(!copy) - return 0; - - if (copy->Create(bitmap->SizeInPixels(), bitmap->DisplayMode()) != KErrNone) { - delete copy; - copy = 0; - - return 0; - } - - CFbsBitmapDevice* bitmapDevice = 0; - CFbsBitGc *bitmapGc = 0; - QT_TRAP_THROWING(bitmapDevice = CFbsBitmapDevice::NewL(copy)); - QT_TRAP_THROWING(bitmapGc = CFbsBitGc::NewL()); - bitmapGc->Activate(bitmapDevice); - - bitmapGc->BitBlt(TPoint(), bitmap); - - delete bitmapGc; - delete bitmapDevice; - - return copy; -} - -void QVGPixmapData::cleanup() -{ - is_null = w = h = 0; - recreate = false; - source = QImage(); -} - -void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) -{ - if (type == QPixmapData::SgImage && pixmap) { -#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) - RSgImage *sgImage = reinterpret_cast(pixmap); - - destroyImages(); - prevSize = QSize(); - - TInt err = 0; - - RSgDriver driver; - err = driver.Open(); - if (err != KErrNone) { - cleanup(); - return; - } - - if (sgImage->IsNull()) { - cleanup(); - driver.Close(); - return; - } - - TSgImageInfo sgImageInfo; - err = sgImage->GetInfo(sgImageInfo); - if (err != KErrNone) { - cleanup(); - driver.Close(); - return; - } - - pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); - - if (eglGetError() != EGL_SUCCESS || !(QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) || !vgCreateEGLImageTargetKHR) { - cleanup(); - driver.Close(); - return; - } - - const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; - EGLImageKHR eglImage = QEgl::eglCreateImageKHR(QEgl::display(), - EGL_NO_CONTEXT, - EGL_NATIVE_PIXMAP_KHR, - (EGLClientBuffer)sgImage, - (EGLint*)KEglImageAttribs); - - if (eglGetError() != EGL_SUCCESS) { - cleanup(); - driver.Close(); - return; - } - - vgImage = vgCreateEGLImageTargetKHR(eglImage); - if (vgGetError() != VG_NO_ERROR) { - cleanup(); - QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); - driver.Close(); - return; - } - - w = sgImageInfo.iSizeInPixels.iWidth; - h = sgImageInfo.iSizeInPixels.iHeight; - d = 32; // We always use ARGB_Premultiplied for VG pixmaps. - is_null = (w <= 0 || h <= 0); - source = QImage(); - recreate = false; - prevSize = QSize(w, h); - setSerialNumber(++qt_vg_pixmap_serial); - // release stuff - QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); - driver.Close(); -#endif - } else if (type == QPixmapData::FbsBitmap) { - CFbsBitmap *bitmap = reinterpret_cast(pixmap); - - bool deleteSourceBitmap = false; - -#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE - - // Rasterize extended bitmaps - - TUid extendedBitmapType = bitmap->ExtendedBitmapType(); - if (extendedBitmapType != KNullUid) { - bitmap = createBlitCopy(bitmap); - deleteSourceBitmap = true; - } -#endif - - if (bitmap->IsCompressedInRAM()) { - bitmap = createBlitCopy(bitmap); - deleteSourceBitmap = true; - } - - TDisplayMode displayMode = bitmap->DisplayMode(); - QImage::Format format = qt_TDisplayMode2Format(displayMode); - - TSize size = bitmap->SizeInPixels(); - - bitmap->BeginDataAccess(); - uchar *bytes = (uchar*)bitmap->DataAddress(); - QImage img = QImage(bytes, size.iWidth, size.iHeight, format); - img = img.copy(); - bitmap->EndDataAccess(); - - if(displayMode == EGray2) { - //Symbian thinks set pixels are white/transparent, Qt thinks they are foreground/solid - //So invert mono bitmaps so that masks work correctly. - img.invertPixels(); - } else if(displayMode == EColor16M) { - img = img.rgbSwapped(); // EColor16M is BGR - } - - fromImage(img, Qt::AutoColor); - - if(deleteSourceBitmap) - delete bitmap; - } -} - -void* QVGPixmapData::toNativeType(NativeType type) -{ - if (type == QPixmapData::SgImage) { -#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) - toVGImage(); - - if (!isValid() || vgImage == VG_INVALID_HANDLE) - return 0; - - TInt err = 0; - - RSgDriver driver; - err = driver.Open(); - if (err != KErrNone) - return 0; - - TSgImageInfo sgInfo; - sgInfo.iPixelFormat = EUidPixelFormatARGB_8888_PRE; - sgInfo.iSizeInPixels.SetSize(w, h); - sgInfo.iUsage = ESgUsageBitOpenVgImage | ESgUsageBitOpenVgSurface; - - RSgImage *sgImage = q_check_ptr(new RSgImage()); - err = sgImage->Create(sgInfo, NULL, NULL); - if (err != KErrNone) { - driver.Close(); - return 0; - } - - pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); - - if (eglGetError() != EGL_SUCCESS || !(QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) || !vgCreateEGLImageTargetKHR) { - driver.Close(); - return 0; - } - - const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; - EGLImageKHR eglImage = QEgl::eglCreateImageKHR(QEgl::display(), - EGL_NO_CONTEXT, - EGL_NATIVE_PIXMAP_KHR, - (EGLClientBuffer)sgImage, - (EGLint*)KEglImageAttribs); - if (eglGetError() != EGL_SUCCESS) { - sgImage->Close(); - driver.Close(); - return 0; - } - - VGImage dstVgImage = vgCreateEGLImageTargetKHR(eglImage); - if (vgGetError() != VG_NO_ERROR) { - QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); - sgImage->Close(); - driver.Close(); - return 0; - } - - vgCopyImage(dstVgImage, 0, 0, - vgImage, 0, 0, - w, h, VG_FALSE); - - if (vgGetError() != VG_NO_ERROR) { - sgImage->Close(); - sgImage = 0; - } - // release stuff - vgDestroyImage(dstVgImage); - QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); - driver.Close(); - return reinterpret_cast(sgImage); -#endif - } else if (type == QPixmapData::FbsBitmap) { - CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); - - if (bitmap) { - if (bitmap->Create(TSize(source.width(), source.height()), - EColor16MAP) == KErrNone) { - const uchar *sptr = source.constBits(); - bitmap->BeginDataAccess(); - - uchar *dptr = (uchar*)bitmap->DataAddress(); - Mem::Copy(dptr, sptr, source.byteCount()); - - bitmap->EndDataAccess(); - } else { - delete bitmap; - bitmap = 0; - } - } - - return reinterpret_cast(bitmap); - } - return 0; -} -#endif //Q_OS_SYMBIAN - QT_END_NAMESPACE diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp new file mode 100644 index 0000000..4a429d5 --- /dev/null +++ b/src/openvg/qvg_symbian.cpp @@ -0,0 +1,348 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qpixmapdata_vg_p.h" +#include "qvgfontglyphcache_p.h" + +#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE +#include +#include +#include +typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*); +typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR); +typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR); +#endif + +#if 1//defined(SYMBIAN_GDI_GLYPHDATA) && defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) +#include +#include +#endif + +QT_BEGIN_NAMESPACE + +extern int qt_vg_pixmap_serial; + +static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap) +{ + CFbsBitmap *copy = q_check_ptr(new CFbsBitmap); + if(!copy) + return 0; + + if (copy->Create(bitmap->SizeInPixels(), bitmap->DisplayMode()) != KErrNone) { + delete copy; + copy = 0; + + return 0; + } + + CFbsBitmapDevice* bitmapDevice = 0; + CFbsBitGc *bitmapGc = 0; + QT_TRAP_THROWING(bitmapDevice = CFbsBitmapDevice::NewL(copy)); + QT_TRAP_THROWING(bitmapGc = CFbsBitGc::NewL()); + bitmapGc->Activate(bitmapDevice); + + bitmapGc->BitBlt(TPoint(), bitmap); + + delete bitmapGc; + delete bitmapDevice; + + return copy; +} + +void QVGPixmapData::cleanup() +{ + is_null = w = h = 0; + recreate = false; + source = QImage(); +} + +void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) +{ +#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) + if (type == QPixmapData::SgImage && pixmap) { + RSgImage *sgImage = reinterpret_cast(pixmap); + // when "0" used as argument then + // default display, context are used + if (!context) + context = qt_vg_create_context(0, QInternal::Pixmap); + + destroyImages(); + prevSize = QSize(); + + TInt err = 0; + + RSgDriver driver; + err = driver.Open(); + if (err != KErrNone) { + cleanup(); + return; + } + + if (sgImage->IsNull()) { + cleanup(); + driver.Close(); + return; + } + + TSgImageInfo sgImageInfo; + err = sgImage->GetInfo(sgImageInfo); + if (err != KErrNone) { + cleanup(); + driver.Close(); + return; + } + + pfnEglCreateImageKHR eglCreateImageKHR = (pfnEglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR"); + pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR"); + pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); + + if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { + cleanup(); + driver.Close(); + return; + } + + const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; + EGLImageKHR eglImage = eglCreateImageKHR(context->display(), + EGL_NO_CONTEXT, + EGL_NATIVE_PIXMAP_KHR, + (EGLClientBuffer)sgImage, + (EGLint*)KEglImageAttribs); + + if (eglGetError() != EGL_SUCCESS) { + cleanup(); + driver.Close(); + return; + } + + vgImage = vgCreateEGLImageTargetKHR(eglImage); + if (vgGetError() != VG_NO_ERROR) { + cleanup(); + eglDestroyImageKHR(context->display(), eglImage); + driver.Close(); + return; + } + + w = sgImageInfo.iSizeInPixels.iWidth; + h = sgImageInfo.iSizeInPixels.iHeight; + d = 32; // We always use ARGB_Premultiplied for VG pixmaps. + is_null = (w <= 0 || h <= 0); + source = QImage(); + recreate = false; + prevSize = QSize(w, h); + //setSerialNumber(++qt_vg_pixmap_serial); + // release stuff + eglDestroyImageKHR(context->display(), eglImage); + driver.Close(); + } else if (type == QPixmapData::FbsBitmap) { + CFbsBitmap *bitmap = reinterpret_cast(pixmap); + + bool deleteSourceBitmap = false; + +#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE + + // Rasterize extended bitmaps + + TUid extendedBitmapType = bitmap->ExtendedBitmapType(); + if (extendedBitmapType != KNullUid) { + bitmap = createBlitCopy(bitmap); + deleteSourceBitmap = true; + } +#endif + + if (bitmap->IsCompressedInRAM()) { + bitmap = createBlitCopy(bitmap); + deleteSourceBitmap = true; + } + + TDisplayMode displayMode = bitmap->DisplayMode(); + QImage::Format format = qt_TDisplayMode2Format(displayMode); + + TSize size = bitmap->SizeInPixels(); + + bitmap->BeginDataAccess(); + uchar *bytes = (uchar*)bitmap->DataAddress(); + QImage img = QImage(bytes, size.iWidth, size.iHeight, format); + img = img.copy(); + bitmap->EndDataAccess(); + + if(displayMode == EGray2) { + //Symbian thinks set pixels are white/transparent, Qt thinks they are foreground/solid + //So invert mono bitmaps so that masks work correctly. + img.invertPixels(); + } else if(displayMode == EColor16M) { + img = img.rgbSwapped(); // EColor16M is BGR + } + + fromImage(img, Qt::AutoColor); + + if(deleteSourceBitmap) + delete bitmap; + } +#else + Q_UNUSED(pixmap); + Q_UNUSED(type); +#endif +} + +void* QVGPixmapData::toNativeType(NativeType type) +{ +#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) + if (type == QPixmapData::SgImage) { + toVGImage(); + + if (!isValid() || vgImage == VG_INVALID_HANDLE) + return 0; + + TInt err = 0; + + RSgDriver driver; + err = driver.Open(); + if (err != KErrNone) + return 0; + + TSgImageInfo sgInfo; + sgInfo.iPixelFormat = EUidPixelFormatARGB_8888_PRE; + sgInfo.iSizeInPixels.SetSize(w, h); + sgInfo.iUsage = ESgUsageBitOpenVgImage | ESgUsageBitOpenVgSurface; + + RSgImage *sgImage = q_check_ptr(new RSgImage()); + err = sgImage->Create(sgInfo, NULL, NULL); + if (err != KErrNone) { + driver.Close(); + return 0; + } + + pfnEglCreateImageKHR eglCreateImageKHR = (pfnEglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR"); + pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR"); + pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); + + if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { + driver.Close(); + return 0; + } + + const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; + EGLImageKHR eglImage = eglCreateImageKHR(context->display(), + EGL_NO_CONTEXT, + EGL_NATIVE_PIXMAP_KHR, + (EGLClientBuffer)sgImage, + (EGLint*)KEglImageAttribs); + if (eglGetError() != EGL_SUCCESS) { + sgImage->Close(); + driver.Close(); + return 0; + } + + VGImage dstVgImage = vgCreateEGLImageTargetKHR(eglImage); + if (vgGetError() != VG_NO_ERROR) { + eglDestroyImageKHR(context->display(), eglImage); + sgImage->Close(); + driver.Close(); + return 0; + } + + vgCopyImage(dstVgImage, 0, 0, + vgImage, 0, 0, + w, h, VG_FALSE); + + if (vgGetError() != VG_NO_ERROR) { + sgImage->Close(); + sgImage = 0; + } + // release stuff + vgDestroyImage(dstVgImage); + eglDestroyImageKHR(context->display(), eglImage); + driver.Close(); + return reinterpret_cast(sgImage); + } else if (type == QPixmapData::FbsBitmap) { + CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); + + if (bitmap) { + if (bitmap->Create(TSize(source.width(), source.height()), + EColor16MAP) == KErrNone) { + const uchar *sptr = qt_vg_imageBits(source); + bitmap->BeginDataAccess(); + + uchar *dptr = (uchar*)bitmap->DataAddress(); + Mem::Copy(dptr, sptr, source.byteCount()); + + bitmap->EndDataAccess(); + } else { + delete bitmap; + bitmap = 0; + } + } + + return reinterpret_cast(bitmap); + } +#else + Q_UNUSED(type); + return 0; +#endif +} + +void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, + const QTextItemInt &ti, + const QVarLengthArray &glyphs) +{ + QFontEngineS60 *fontEngine = static_cast(ti.fontEngine); + CFont *font = fontEngine->m_font; + + RGlyphDataIterator iter; + int err = iter.Open(*font, glyphs.data(), glyphs.count()); + +// for (; err == KErrNone; err = iter.Next()) { +// const RSgImage& image = iter.Image(); +// const TRect& rect = iter.Rect(); +// const TOpenFontCharMetrics& metrics = iter.Metrics(); +// +// QPixmap pix = QPixmap::fromSymbianRSgImage(*image); +// +// } +// iter.Close(); +// +// if (err != KErrNotFound) { +// // Handle the error... +// } +} + +QT_END_NAMESPACE diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h index ced0d735..4ba07ba 100644 --- a/src/openvg/qvgfontglyphcache_p.h +++ b/src/openvg/qvgfontglyphcache_p.h @@ -79,6 +79,15 @@ public: QSet cachedGlyphs; }; +#if defined( Q_OS_SYMBIAN) +class QSymbianVGFontGlyphCache : public QVGFontGlyphCache +{ + void cacheGlyphs(QVGPaintEnginePrivate *d, + const QTextItemInt &ti, + const QVarLengthArray &glyphs); +}; +#endif + QT_END_NAMESPACE #endif // QVGFONTGLYPHCACHE_H -- cgit v0.12 From 4c392ee7f9f7445620269fbd3250a17a982e2369 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 15 Feb 2010 16:19:04 +0100 Subject: Factor out RSgImage -> VGImage conversion to separate function. This code will now be used by both the fromNativeType() function and the upcoming glyph cache implementation. We also change the #ifdef's location here slightly because even if we do not have support for RSgImage, we still want to be able to support the CFbsBitmap conversion functions for the OpenVG graphics system. Reviewed-by: Alessandro Portale --- src/openvg/qvg_symbian.cpp | 148 +++++++++++++++++++++++---------------------- 1 file changed, 75 insertions(+), 73 deletions(-) diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp index 4a429d5..09962f6 100644 --- a/src/openvg/qvg_symbian.cpp +++ b/src/openvg/qvg_symbian.cpp @@ -87,6 +87,70 @@ static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap) return copy; } +static VGImage sgImageToVGImage(QEglContext *context, const RSgImage &sgImage) +{ + // when "0" used as argument then + // default display, context are used + if (!context) + context = qt_vg_create_context(0, QInternal::Pixmap); + + VGImage vgImage = VG_INVALID_HANDLE; + + TInt err = 0; + + RSgDriver driver; + err = driver.Open(); + if (err != KErrNone) { + return vgImage; + } + + if (sgImage.IsNull()) { + driver.Close(); + return vgImage; + } + + TSgImageInfo sgImageInfo; + err = sgImage.GetInfo(sgImageInfo); + if (err != KErrNone) { + driver.Close(); + return vgImage; + } + + pfnEglCreateImageKHR eglCreateImageKHR = (pfnEglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR"); + pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR"); + pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); + + if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { + driver.Close(); + return vgImage; + } + + const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; + EGLImageKHR eglImage = eglCreateImageKHR(context->display(), + EGL_NO_CONTEXT, + EGL_NATIVE_PIXMAP_KHR, + (EGLClientBuffer)&sgImage, + (EGLint*)KEglImageAttribs); + + if (eglGetError() != EGL_SUCCESS) { + driver.Close(); + return vgImage; + } + + vgImage = vgCreateEGLImageTargetKHR(eglImage); + if (vgGetError() != VG_NO_ERROR) { + eglDestroyImageKHR(context->display(), eglImage); + driver.Close(); + return vgImage; + } + + //setSerialNumber(++qt_vg_pixmap_serial); + // release stuff + eglDestroyImageKHR(context->display(), eglImage); + driver.Close(); + return vgImage; +} + void QVGPixmapData::cleanup() { is_null = w = h = 0; @@ -96,82 +160,25 @@ void QVGPixmapData::cleanup() void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) { -#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) if (type == QPixmapData::SgImage && pixmap) { +#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) RSgImage *sgImage = reinterpret_cast(pixmap); - // when "0" used as argument then - // default display, context are used - if (!context) - context = qt_vg_create_context(0, QInternal::Pixmap); - destroyImages(); prevSize = QSize(); - TInt err = 0; - - RSgDriver driver; - err = driver.Open(); - if (err != KErrNone) { - cleanup(); - return; - } - - if (sgImage->IsNull()) { - cleanup(); - driver.Close(); - return; + VGImage vgImage = sgImageToVGImage(context, *sgImage); + if (vgImage != VG_INVALID_HANDLE) { + w = vgGetParameteri(vgImage, VG_IMAGE_WIDTH); + h = vgGetParameteri(vgImage, VG_IMAGE_HEIGHT); + d = 32; // We always use ARGB_Premultiplied for VG pixmaps. } - TSgImageInfo sgImageInfo; - err = sgImage->GetInfo(sgImageInfo); - if (err != KErrNone) { - cleanup(); - driver.Close(); - return; - } - - pfnEglCreateImageKHR eglCreateImageKHR = (pfnEglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR"); - pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR"); - pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); - - if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { - cleanup(); - driver.Close(); - return; - } - - const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; - EGLImageKHR eglImage = eglCreateImageKHR(context->display(), - EGL_NO_CONTEXT, - EGL_NATIVE_PIXMAP_KHR, - (EGLClientBuffer)sgImage, - (EGLint*)KEglImageAttribs); - - if (eglGetError() != EGL_SUCCESS) { - cleanup(); - driver.Close(); - return; - } - - vgImage = vgCreateEGLImageTargetKHR(eglImage); - if (vgGetError() != VG_NO_ERROR) { - cleanup(); - eglDestroyImageKHR(context->display(), eglImage); - driver.Close(); - return; - } - - w = sgImageInfo.iSizeInPixels.iWidth; - h = sgImageInfo.iSizeInPixels.iHeight; - d = 32; // We always use ARGB_Premultiplied for VG pixmaps. is_null = (w <= 0 || h <= 0); - source = QImage(); + source = QImage(); // vgGetImageSubData() some day? recreate = false; prevSize = QSize(w, h); //setSerialNumber(++qt_vg_pixmap_serial); - // release stuff - eglDestroyImageKHR(context->display(), eglImage); - driver.Close(); +#endif } else if (type == QPixmapData::FbsBitmap) { CFbsBitmap *bitmap = reinterpret_cast(pixmap); @@ -217,16 +224,12 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type) if(deleteSourceBitmap) delete bitmap; } -#else - Q_UNUSED(pixmap); - Q_UNUSED(type); -#endif } void* QVGPixmapData::toNativeType(NativeType type) { -#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) if (type == QPixmapData::SgImage) { +#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL) toVGImage(); if (!isValid() || vgImage == VG_INVALID_HANDLE) @@ -293,13 +296,14 @@ void* QVGPixmapData::toNativeType(NativeType type) eglDestroyImageKHR(context->display(), eglImage); driver.Close(); return reinterpret_cast(sgImage); +#endif } else if (type == QPixmapData::FbsBitmap) { CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); if (bitmap) { if (bitmap->Create(TSize(source.width(), source.height()), EColor16MAP) == KErrNone) { - const uchar *sptr = qt_vg_imageBits(source); + const uchar *sptr = const_cast(source).bits(); bitmap->BeginDataAccess(); uchar *dptr = (uchar*)bitmap->DataAddress(); @@ -314,8 +318,6 @@ void* QVGPixmapData::toNativeType(NativeType type) return reinterpret_cast(bitmap); } -#else - Q_UNUSED(type); return 0; #endif } -- cgit v0.12 From 940930dd8102511e6890ed661cf3d2dd88c2e1f4 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 15 Feb 2010 16:23:23 +0100 Subject: Enable cross-process glyph cache for OpenVG graphics system on Symbian. This introduces a specialized OpenVG font cache for the Symbian platform. By using RGlyphDataIterator we can create a VGImage to store inside a VGFont without having to upload our own glyph image. This works by utilizing RSgImage which can be used to share handles to graphics memory across processes thus allowing glyph images to be shared by multiple processes and reducing graphics memory usage. Reviewed-by: Alessandro Portale --- src/gui/text/qfontengine_s60_p.h | 2 +- src/openvg/qpaintengine_vg.cpp | 4 +++ src/openvg/qvg_symbian.cpp | 75 +++++++++++++++++++++++++++++----------- src/openvg/qvgfontglyphcache_p.h | 2 +- 4 files changed, 61 insertions(+), 22 deletions(-) diff --git a/src/gui/text/qfontengine_s60_p.h b/src/gui/text/qfontengine_s60_p.h index 9400d55..d65f13b 100644 --- a/src/gui/text/qfontengine_s60_p.h +++ b/src/gui/text/qfontengine_s60_p.h @@ -54,7 +54,7 @@ // #include "qconfig.h" -#include "qfontengine_p.h" +#include #include "qsize.h" #include diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 564b390..01c7a7e 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -3406,7 +3406,11 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem) if (it != d->fontCache.constEnd()) { glyphCache = it.value(); } else { +#ifdef Q_OS_SYMBIAN + glyphCache = new QSymbianVGFontGlyphCache(); +#else glyphCache = new QVGFontGlyphCache(); +#endif if (glyphCache->font == VG_INVALID_HANDLE) { qWarning("QVGPaintEngine::drawTextItem: OpenVG fonts are not supported by the OpenVG engine"); delete glyphCache; diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp index 09962f6..e6086d0 100644 --- a/src/openvg/qvg_symbian.cpp +++ b/src/openvg/qvg_symbian.cpp @@ -45,16 +45,17 @@ #ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE #include #include +#include #include typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*); typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR); typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR); -#endif - -#if 1//defined(SYMBIAN_GDI_GLYPHDATA) && defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) +#ifdef SYMBIAN_GDI_GLYPHDATA // defined in gdi.h +#define QT_SYMBIAN_HARDWARE_GLYPH_CACHE #include #include #endif +#endif QT_BEGIN_NAMESPACE @@ -319,32 +320,66 @@ void* QVGPixmapData::toNativeType(NativeType type) return reinterpret_cast(bitmap); } return 0; -#endif } void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, const QTextItemInt &ti, const QVarLengthArray &glyphs) { +#ifdef QT_SYMBIAN_HARDWARE_GLYPH_CACHE QFontEngineS60 *fontEngine = static_cast(ti.fontEngine); - CFont *font = fontEngine->m_font; + CFont *cfont = fontEngine->m_activeFont; + +// QVarLengthArray adjustedGlyphs(glyphs); +// for (int i = 0; i < glyphs.count(); ++i) +// adjustedGlyphs[i] |= 0x80000000; RGlyphDataIterator iter; - int err = iter.Open(*font, glyphs.data(), glyphs.count()); - -// for (; err == KErrNone; err = iter.Next()) { -// const RSgImage& image = iter.Image(); -// const TRect& rect = iter.Rect(); -// const TOpenFontCharMetrics& metrics = iter.Metrics(); -// -// QPixmap pix = QPixmap::fromSymbianRSgImage(*image); -// -// } -// iter.Close(); -// -// if (err != KErrNotFound) { -// // Handle the error... -// } + int err = iter.Open(*cfont, (const unsigned int*)glyphs.constData(), glyphs.count()); + + if (err == KErrNotSupported || err == KErrInUse) { // Fallback in possibly supported error cases + iter.Close(); + qWarning("Falling back to default QVGFontGlyphCache"); + return QVGFontGlyphCache::cacheGlyphs(d, ti, glyphs); + } + + for (; err == KErrNone; err = iter.Next()) { + // Skip this glyph if we have already cached it before. + const unsigned int glyph = iter.GlyphCode(); + if (((glyph < 256) && ((cachedGlyphsMask[glyph / 32] & (1 << (glyph % 32))) != 0)) + || cachedGlyphs.contains(glyph)) + continue; + + const RSgImage& image = iter.Image(); + const TOpenFontCharMetrics& metrics = iter.Metrics(); + + TRect glyphBounds; + metrics.GetHorizBounds(glyphBounds); + VGImage vgImage = sgImageToVGImage(0, image); + VGfloat origin[2]; + VGfloat escapement[2]; + origin[0] = -glyphBounds.iTl.iX + 0.5f; + origin[1] = -glyphBounds.iTl.iY + 0.5f; + escapement[0] = metrics.HorizAdvance(); + escapement[1] = 0; + vgSetGlyphToImage(font, iter.GlyphCode(), vgImage, origin, escapement); + vgDestroyImage(vgImage); + + // Add to cache + if (glyph < 256) + cachedGlyphsMask[glyph / 32] |= (1 << (glyph % 32)); + else + cachedGlyphs.insert(glyph); + } + iter.Close(); + + if (err == KErrNoMemory || err == KErrNoGraphicsMemory) + qWarning("Not enough memory to cache glyph"); + else if (err != KErrNotFound) + qWarning("Received error %d from glyph cache", err); +#else + QVGFontGlyphCache::cacheGlyphs(d, ti, glyphs); +#endif } QT_END_NAMESPACE diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h index 4ba07ba..ee11082 100644 --- a/src/openvg/qvgfontglyphcache_p.h +++ b/src/openvg/qvgfontglyphcache_p.h @@ -79,7 +79,7 @@ public: QSet cachedGlyphs; }; -#if defined( Q_OS_SYMBIAN) +#if defined(Q_OS_SYMBIAN) class QSymbianVGFontGlyphCache : public QVGFontGlyphCache { void cacheGlyphs(QVGPaintEnginePrivate *d, -- cgit v0.12 From 8c6bfd9f2d34822e39812c07e821fa17ab3fdcb2 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Fri, 26 Feb 2010 13:47:45 +0100 Subject: Ensure glyphs are upright instead of upside-down. The OpenVG paint engine traditionally takes glyph images from the alphaMapForGlyph() function which returns the glyph image in the upright projection. When it constructs a VGImage from this image, it passes a positive data stride which will read the top scanline of the source image into the bottom scanline of the VGImage due to the VG coordinate system. It then uses the path transform where the 'sy' value of the matrix is set to -1 and this re-inverts everything when drawing. With the Symbian based glyph cache, the VGImage is constructed from a RSgImage which is a hardware resource and compensates for the coordinate system used by VG and GL at the time it is created. In the case of the hardware glyph cache, the glyph image is read into the RSgImage using a negative data stride so it does not need to be inverted when drawn. To allow for this, introduce a flag which indicates that the 'sy' entry of the matrix should be flipped such that the glyph is drawn normally. Also in this patch is a change to the glyph origin which now uses the bottom of the glyph metric bounding rect instead of the top due to orientation of the glyph inside the VGImage. Reviewed-by: Alessandro Portale --- src/openvg/qpaintengine_vg.cpp | 6 ++++++ src/openvg/qvg_symbian.cpp | 7 ++++++- src/openvg/qvgfontglyphcache_p.h | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index 01c7a7e..4992ef5 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -3272,6 +3272,7 @@ QVGFontGlyphCache::QVGFontGlyphCache() { font = vgCreateFont(0); scaleX = scaleY = 0.0; + invertedGlyphs = false; memset(cachedGlyphsMask, 0, sizeof(cachedGlyphsMask)); } @@ -3430,6 +3431,11 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem) #if defined(QVG_NO_IMAGE_GLYPHS) glyphTransform.scale(glyphCache->scaleX, glyphCache->scaleY); #endif + + // Some glyph caches can create the VGImage upright + if (glyphCache->invertedGlyphs) + glyphTransform.scale(1, -1); + d->setTransform(VG_MATRIX_GLYPH_USER_TO_SURFACE, glyphTransform); // Add the glyphs from the text item into the glyph cache. diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp index e6086d0..8c954e6 100644 --- a/src/openvg/qvg_symbian.cpp +++ b/src/openvg/qvg_symbian.cpp @@ -322,6 +322,11 @@ void* QVGPixmapData::toNativeType(NativeType type) return 0; } +QSymbianVGFontGlyphCache::QSymbianVGFontGlyphCache() : QVGFontGlyphCache() +{ + invertedGlyphs = true; +} + void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, const QTextItemInt &ti, const QVarLengthArray &glyphs) @@ -359,7 +364,7 @@ void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, VGfloat origin[2]; VGfloat escapement[2]; origin[0] = -glyphBounds.iTl.iX + 0.5f; - origin[1] = -glyphBounds.iTl.iY + 0.5f; + origin[1] = glyphBounds.iBr.iY + 0.5f; escapement[0] = metrics.HorizAdvance(); escapement[1] = 0; vgSetGlyphToImage(font, iter.GlyphCode(), vgImage, origin, escapement); diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h index ee11082..8f25322 100644 --- a/src/openvg/qvgfontglyphcache_p.h +++ b/src/openvg/qvgfontglyphcache_p.h @@ -74,6 +74,7 @@ public: VGFont font; VGfloat scaleX; VGfloat scaleY; + bool invertedGlyphs; uint cachedGlyphsMask[256 / 32]; QSet cachedGlyphs; @@ -82,6 +83,8 @@ public: #if defined(Q_OS_SYMBIAN) class QSymbianVGFontGlyphCache : public QVGFontGlyphCache { +public: + QSymbianVGFontGlyphCache(); void cacheGlyphs(QVGPaintEnginePrivate *d, const QTextItemInt &ti, const QVarLengthArray &glyphs); -- cgit v0.12 From 420f10e0e13a744dc6a6b47f55f39138a9618641 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 1 Feb 2010 09:50:51 +0100 Subject: Move QVGFontGlyphCache from source file into a separate header Needed in order to subclass and override in the Symbian specific implementation. Reviewed-by: Rhys Weatherley --- src/openvg/qvgfontglyphcache_p.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h index 8f25322..2bf79aa 100644 --- a/src/openvg/qvgfontglyphcache_p.h +++ b/src/openvg/qvgfontglyphcache_p.h @@ -75,7 +75,6 @@ public: VGfloat scaleX; VGfloat scaleY; bool invertedGlyphs; - uint cachedGlyphsMask[256 / 32]; QSet cachedGlyphs; }; -- cgit v0.12 From 3606cd38f7fbcfb9a9d6cb43d5a99da65891e0b1 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Tue, 9 Mar 2010 10:07:32 +0100 Subject: Don't invert glyphs for the default VG font cache on Symbian. If the hardware glyph cache API is not represent and in use, then the glyphs will not be inverted. Reviewed-by: TrustMe --- src/openvg/qvg_symbian.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp index 8c954e6..214fedf 100644 --- a/src/openvg/qvg_symbian.cpp +++ b/src/openvg/qvg_symbian.cpp @@ -324,7 +324,9 @@ void* QVGPixmapData::toNativeType(NativeType type) QSymbianVGFontGlyphCache::QSymbianVGFontGlyphCache() : QVGFontGlyphCache() { +#ifdef QT_SYMBIAN_HARDWARE_GLYPH_CACHE invertedGlyphs = true; +#endif } void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, -- cgit v0.12 From edd3ffa92df8c6e0fb68f3eb6e10872e69532c90 Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Thu, 17 Jun 2010 08:33:58 +0200 Subject: Convert to new EGL API. Recent changes in Qt's EGL layer required some changes in the code used to convert RSgImage to/from VGImage. Reviewed-by: Gunnar Sletta --- src/openvg/qvg_symbian.cpp | 85 +++++++++++++++++++--------------------- src/openvg/qvgfontglyphcache_p.h | 4 +- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp index 214fedf..9bcb6f5 100644 --- a/src/openvg/qvg_symbian.cpp +++ b/src/openvg/qvg_symbian.cpp @@ -43,22 +43,35 @@ #include "qvgfontglyphcache_p.h" #ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE -#include -#include -#include -#include -typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*); -typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR); -typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR); -#ifdef SYMBIAN_GDI_GLYPHDATA // defined in gdi.h -#define QT_SYMBIAN_HARDWARE_GLYPH_CACHE -#include -#include -#endif +# include +# include +# include +# include +# ifdef SYMBIAN_GDI_GLYPHDATA // defined in gdi.h +# define QT_SYMBIAN_HARDWARE_GLYPH_CACHE +# include +# include +# endif #endif QT_BEGIN_NAMESPACE +typedef VGImage (*_vgCreateEGLImageTargetKHR)(VGeglImageKHR); +static _vgCreateEGLImageTargetKHR qt_vgCreateEGLImageTargetKHR = 0; + +namespace QVG +{ + VGImage vgCreateEGLImageTargetKHR(VGeglImageKHR eglImage); +} + +VGImage QVG::vgCreateEGLImageTargetKHR(VGeglImageKHR eglImage) +{ + if (!qt_vgCreateEGLImageTargetKHR && QEgl::hasExtension("EGL_KHR_image")) + qt_vgCreateEGLImageTargetKHR = (_vgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); + + return qt_vgCreateEGLImageTargetKHR ? qt_vgCreateEGLImageTargetKHR(eglImage) : 0; +} + extern int qt_vg_pixmap_serial; static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap) @@ -117,37 +130,28 @@ static VGImage sgImageToVGImage(QEglContext *context, const RSgImage &sgImage) return vgImage; } - pfnEglCreateImageKHR eglCreateImageKHR = (pfnEglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR"); - pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR"); - pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); - - if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { - driver.Close(); - return vgImage; - } - const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; - EGLImageKHR eglImage = eglCreateImageKHR(context->display(), + EGLImageKHR eglImage = QEgl::eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR, (EGLClientBuffer)&sgImage, (EGLint*)KEglImageAttribs); - if (eglGetError() != EGL_SUCCESS) { + if (!eglImage || eglGetError() != EGL_SUCCESS) { driver.Close(); return vgImage; } - vgImage = vgCreateEGLImageTargetKHR(eglImage); - if (vgGetError() != VG_NO_ERROR) { - eglDestroyImageKHR(context->display(), eglImage); + vgImage = QVG::vgCreateEGLImageTargetKHR(eglImage); + if (!vgImage || vgGetError() != VG_NO_ERROR) { + QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); driver.Close(); return vgImage; } //setSerialNumber(++qt_vg_pixmap_serial); // release stuff - eglDestroyImageKHR(context->display(), eglImage); + QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); driver.Close(); return vgImage; } @@ -255,30 +259,21 @@ void* QVGPixmapData::toNativeType(NativeType type) return 0; } - pfnEglCreateImageKHR eglCreateImageKHR = (pfnEglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR"); - pfnEglDestroyImageKHR eglDestroyImageKHR = (pfnEglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR"); - pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR"); - - if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) { - driver.Close(); - return 0; - } - const EGLint KEglImageAttribs[] = {EGL_IMAGE_PRESERVED_SYMBIAN, EGL_TRUE, EGL_NONE}; - EGLImageKHR eglImage = eglCreateImageKHR(context->display(), + EGLImageKHR eglImage = QEgl::eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR, (EGLClientBuffer)sgImage, (EGLint*)KEglImageAttribs); - if (eglGetError() != EGL_SUCCESS) { + if (!eglImage || eglGetError() != EGL_SUCCESS) { sgImage->Close(); driver.Close(); return 0; } - VGImage dstVgImage = vgCreateEGLImageTargetKHR(eglImage); - if (vgGetError() != VG_NO_ERROR) { - eglDestroyImageKHR(context->display(), eglImage); + VGImage dstVgImage = QVG::vgCreateEGLImageTargetKHR(eglImage); + if (!dstVgImage || vgGetError() != VG_NO_ERROR) { + QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); sgImage->Close(); driver.Close(); return 0; @@ -294,7 +289,7 @@ void* QVGPixmapData::toNativeType(NativeType type) } // release stuff vgDestroyImage(dstVgImage); - eglDestroyImageKHR(context->display(), eglImage); + QEgl::eglDestroyImageKHR(QEgl::display(), eglImage); driver.Close(); return reinterpret_cast(sgImage); #endif @@ -330,8 +325,8 @@ QSymbianVGFontGlyphCache::QSymbianVGFontGlyphCache() : QVGFontGlyphCache() } void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, - const QTextItemInt &ti, - const QVarLengthArray &glyphs) + QFontEngine *fontEngine, + const glyph_t *g, int count) { #ifdef QT_SYMBIAN_HARDWARE_GLYPH_CACHE QFontEngineS60 *fontEngine = static_cast(ti.fontEngine); @@ -385,7 +380,7 @@ void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, else if (err != KErrNotFound) qWarning("Received error %d from glyph cache", err); #else - QVGFontGlyphCache::cacheGlyphs(d, ti, glyphs); + QVGFontGlyphCache::cacheGlyphs(d, fontEngine, g, count); #endif } diff --git a/src/openvg/qvgfontglyphcache_p.h b/src/openvg/qvgfontglyphcache_p.h index 2bf79aa..b32a873 100644 --- a/src/openvg/qvgfontglyphcache_p.h +++ b/src/openvg/qvgfontglyphcache_p.h @@ -85,8 +85,8 @@ class QSymbianVGFontGlyphCache : public QVGFontGlyphCache public: QSymbianVGFontGlyphCache(); void cacheGlyphs(QVGPaintEnginePrivate *d, - const QTextItemInt &ti, - const QVarLengthArray &glyphs); + QFontEngine *fontEngine, + const glyph_t *g, int count); }; #endif -- cgit v0.12 From 0113025720a1a07ac6a40b1f9c95746a904fdf4e Mon Sep 17 00:00:00 2001 From: Jason Barron Date: Mon, 5 Jul 2010 16:38:57 +0200 Subject: Minor modifications and optimizations to the Symbian HW glyph cache. After the latest round of API reviews, the Symbian glyph cache has now been moved from GDI to FBS and this required some changes in Qt's implementation. Also incorporate an optimization where we first iterate over the glyph vector to eliminate glyphs that are already cached in Qt's glyph cache. This way we only open the glyph iterator on glyphs that we need. Reviewed-by: Alessandro Portale --- src/openvg/qvg_symbian.cpp | 109 +++++++++++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 49 deletions(-) diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp index 9bcb6f5..0e6e773 100644 --- a/src/openvg/qvg_symbian.cpp +++ b/src/openvg/qvg_symbian.cpp @@ -41,15 +41,16 @@ #include "qpixmapdata_vg_p.h" #include "qvgfontglyphcache_p.h" +#include + +#include +#include #ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE -# include -# include -# include # include -# ifdef SYMBIAN_GDI_GLYPHDATA // defined in gdi.h +# ifdef SYMBIAN_FBSERV_GLYPHDATA // defined in fbs.h # define QT_SYMBIAN_HARDWARE_GLYPH_CACHE -# include +# include # include # endif #endif @@ -101,6 +102,7 @@ static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap) return copy; } +#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE static VGImage sgImageToVGImage(QEglContext *context, const RSgImage &sgImage) { // when "0" used as argument then @@ -155,6 +157,7 @@ static VGImage sgImageToVGImage(QEglContext *context, const RSgImage &sgImage) driver.Close(); return vgImage; } +#endif void QVGPixmapData::cleanup() { @@ -329,56 +332,64 @@ void QSymbianVGFontGlyphCache::cacheGlyphs(QVGPaintEnginePrivate *d, const glyph_t *g, int count) { #ifdef QT_SYMBIAN_HARDWARE_GLYPH_CACHE - QFontEngineS60 *fontEngine = static_cast(ti.fontEngine); - CFont *cfont = fontEngine->m_activeFont; - -// QVarLengthArray adjustedGlyphs(glyphs); -// for (int i = 0; i < glyphs.count(); ++i) -// adjustedGlyphs[i] |= 0x80000000; - - RGlyphDataIterator iter; - int err = iter.Open(*cfont, (const unsigned int*)glyphs.constData(), glyphs.count()); - - if (err == KErrNotSupported || err == KErrInUse) { // Fallback in possibly supported error cases - iter.Close(); - qWarning("Falling back to default QVGFontGlyphCache"); - return QVGFontGlyphCache::cacheGlyphs(d, ti, glyphs); - } + QFontEngineS60 *s60fontEngine = static_cast(fontEngine); + if (s60fontEngine->m_activeFont->TypeUid() != KCFbsFontUid) + return QVGFontGlyphCache::cacheGlyphs(d, fontEngine, g, count); - for (; err == KErrNone; err = iter.Next()) { + QVector uncachedGlyphs; + while (count-- > 0) { // Skip this glyph if we have already cached it before. - const unsigned int glyph = iter.GlyphCode(); + glyph_t glyph = *g++; if (((glyph < 256) && ((cachedGlyphsMask[glyph / 32] & (1 << (glyph % 32))) != 0)) || cachedGlyphs.contains(glyph)) - continue; - - const RSgImage& image = iter.Image(); - const TOpenFontCharMetrics& metrics = iter.Metrics(); - - TRect glyphBounds; - metrics.GetHorizBounds(glyphBounds); - VGImage vgImage = sgImageToVGImage(0, image); - VGfloat origin[2]; - VGfloat escapement[2]; - origin[0] = -glyphBounds.iTl.iX + 0.5f; - origin[1] = glyphBounds.iBr.iY + 0.5f; - escapement[0] = metrics.HorizAdvance(); - escapement[1] = 0; - vgSetGlyphToImage(font, iter.GlyphCode(), vgImage, origin, escapement); - vgDestroyImage(vgImage); - - // Add to cache - if (glyph < 256) - cachedGlyphsMask[glyph / 32] |= (1 << (glyph % 32)); - else - cachedGlyphs.insert(glyph); + continue; + if (!uncachedGlyphs.contains(glyph)) + uncachedGlyphs.append(glyph); } - iter.Close(); - if (err == KErrNoMemory || err == KErrNoGraphicsMemory) - qWarning("Not enough memory to cache glyph"); - else if (err != KErrNotFound) - qWarning("Received error %d from glyph cache", err); + if (!uncachedGlyphs.isEmpty()) { + CFbsFont *cfbsFont = static_cast(s60fontEngine->m_activeFont); + RFbsGlyphDataIterator iter; + + int err = iter.Open(*cfbsFont, (const unsigned int*)uncachedGlyphs.constData(), uncachedGlyphs.count()); + + if (err == KErrNotSupported || err == KErrInUse) { // Fallback in possibly supported error cases + iter.Close(); + qWarning("Falling back to default QVGFontGlyphCache"); + return QVGFontGlyphCache::cacheGlyphs(d, fontEngine, g, count); + } + + for (; err == KErrNone; err = iter.Next()) { + const unsigned int glyph = iter.GlyphCode(); + + const RSgImage& image = iter.Image(); + const TOpenFontCharMetrics& metrics = iter.Metrics(); + + TRect glyphBounds; + metrics.GetHorizBounds(glyphBounds); + VGImage vgImage = sgImageToVGImage(0, image); + VGfloat origin[2]; + VGfloat escapement[2]; + origin[0] = -glyphBounds.iTl.iX; + origin[1] = glyphBounds.iBr.iY; + escapement[0] = 0; + escapement[1] = 0; + vgSetGlyphToImage(font, glyph, vgImage, origin, escapement); + vgDestroyImage(vgImage); + + // Add to cache + if (glyph < 256) + cachedGlyphsMask[glyph / 32] |= (1 << (glyph % 32)); + else + cachedGlyphs.insert(glyph); + } + iter.Close(); + + if (err == KErrNoMemory || err == KErrNoGraphicsMemory) + qWarning("Not enough memory to cache glyph"); + else if (err != KErrNotFound) + qWarning("Received error %d from glyph cache", err); + } #else QVGFontGlyphCache::cacheGlyphs(d, fontEngine, g, count); #endif -- cgit v0.12 From c042003a831ace1ffe4cc399668293200ffe829f Mon Sep 17 00:00:00 2001 From: axis Date: Mon, 12 Jul 2010 11:32:48 +0200 Subject: Added some asserts to avoid race conditions in networking. Task: QT-3358 RevBy: Markus Goetz --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index e86efb2..c3e0808 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -495,6 +495,8 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta start(); } + Q_ASSERT(QThread::currentThread() == this->thread()); + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); Q_ASSERT(!m_AOStatuses.contains(notifier)); @@ -506,6 +508,8 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) { + Q_ASSERT(QThread::currentThread() == this->thread()); + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); m_AOStatuses.remove(notifier); @@ -515,6 +519,8 @@ void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) void QSelectThread::restart() { + Q_ASSERT(QThread::currentThread() == this->thread()); + QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); m_waitCond.wakeAll(); -- cgit v0.12 From 07321dfceed41c1851781841e03c4148da47e41e Mon Sep 17 00:00:00 2001 From: Robert Griebl Date: Mon, 12 Jul 2010 14:35:33 +0200 Subject: Calling setMinimumSize(0, 0) on a top-level window sometimes triggers a bug in the Compiz window manager which leads to the QML viewer mainwindow not being composited anymore (at least until the next resize). Since we need to somehow switch between fixed size and freely resizable views, we have to work around that bug using the layout constraint hints. Task-number: QTBUG-11771 Reviewed-by: kkoehne --- .../qdeclarativeviewer/tst_qdeclarativeviewer.cpp | 26 +++++----- tools/qml/qmlruntime.cpp | 60 ++++++++++------------ tools/qml/qmlruntime.h | 4 +- 3 files changed, 40 insertions(+), 50 deletions(-) diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index 695c038..b08da0f 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -113,7 +113,6 @@ void tst_QDeclarativeViewer::orientation() viewer->rotateOrientation(); qApp->processEvents(); - qApp->processEvents(); // one extra round for the delayed updateSizeHints() call QCOMPARE(rootItem->width(), 300.0); QCOMPARE(rootItem->height(), 200.0); @@ -124,7 +123,6 @@ void tst_QDeclarativeViewer::orientation() viewer->rotateOrientation(); qApp->processEvents(); - qApp->processEvents(); // one extra round for the delayed updateSizeHints() call QCOMPARE(rootItem->width(), 200.0); QCOMPARE(rootItem->height(), 300.0); @@ -159,10 +157,10 @@ void tst_QDeclarativeViewer::loading() // window resized QTRY_COMPARE(rootItem->width(), 400.0); - QTRY_COMPARE(rootItem->height(), 500.0-viewer->menuBar()->height()); - QCOMPARE(viewer->view()->size(), QSize(400, 500-viewer->menuBar()->height())); + QTRY_COMPARE(rootItem->height(), 500.0 - MENUBAR_HEIGHT(viewer)); + QCOMPARE(viewer->view()->size(), QSize(400, 500 - MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); - QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(400, 500-viewer->menuBar()->height())); + QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(400, 500 - MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->size(), QSize(400, 500)); QCOMPARE(viewer->size(), viewer->sizeHint()); @@ -176,7 +174,7 @@ void tst_QDeclarativeViewer::loading() QCOMPARE(viewer->view()->size(), QSize(200, 300)); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300)); - QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height())); + QCOMPARE(viewer->size(), QSize(200, 300 + MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->size(), viewer->sizeHint()); viewer->resize(QSize(400, 500)); @@ -184,10 +182,10 @@ void tst_QDeclarativeViewer::loading() // window resized again QTRY_COMPARE(rootItem->width(), 400.0); - QTRY_COMPARE(rootItem->height(), 500.0-viewer->menuBar()->height()); - QCOMPARE(viewer->view()->size(), QSize(400, 500-viewer->menuBar()->height())); + QTRY_COMPARE(rootItem->height(), 500.0 - MENUBAR_HEIGHT(viewer)); + QCOMPARE(viewer->view()->size(), QSize(400, 500 - MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); - QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(400, 500-viewer->menuBar()->height())); + QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(400, 500 - MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->size(), QSize(400, 500)); QCOMPARE(viewer->size(), viewer->sizeHint()); @@ -201,7 +199,7 @@ void tst_QDeclarativeViewer::loading() QCOMPARE(viewer->view()->size(), QSize(200, 300)); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(200, 300)); - QCOMPARE(viewer->size(), QSize(200, 300+viewer->menuBar()->height())); + QCOMPARE(viewer->size(), QSize(200, 300 + MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->size(), viewer->sizeHint()); delete viewer; @@ -272,7 +270,7 @@ void tst_QDeclarativeViewer::resizing() QTRY_COMPARE(viewer->view()->size(), QSize(150, 200)); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(150, 200)); - QCOMPARE(viewer->size(), QSize(150, 200+viewer->menuBar()->height())); + QCOMPARE(viewer->size(), QSize(150, 200 + MENUBAR_HEIGHT(viewer))); // do not size root object to view viewer->resize(QSize(180,250)); @@ -286,10 +284,10 @@ void tst_QDeclarativeViewer::resizing() qApp->processEvents(); QTRY_COMPARE(rootItem->width(), 250.0); - QTRY_COMPARE(rootItem->height(), 350.0-viewer->menuBar()->height()); - QTRY_COMPARE(viewer->view()->size(), QSize(250, 350-viewer->menuBar()->height())); + QTRY_COMPARE(rootItem->height(), 350.0 - MENUBAR_HEIGHT(viewer)); + QTRY_COMPARE(viewer->view()->size(), QSize(250, 350 - MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->view()->initialSize(), QSize(200, 300)); - QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(250, 350-viewer->menuBar()->height())); + QCOMPARE(viewer->view()->sceneRect().size(), QSizeF(250, 350 - MENUBAR_HEIGHT(viewer))); QCOMPARE(viewer->size(), QSize(250, 350)); // do not size view to root object diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 03ca798..951b187 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -944,13 +944,7 @@ void QDeclarativeViewer::statusChanged() if (canvas->status() == QDeclarativeView::Ready) { initialSize = canvas->initialSize(); - if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { - if (!isFullScreen() && !isMaximized()) { - canvas->setFixedSize(initialSize); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrink - QTimer::singleShot(0, this, SLOT(updateSizeHints())); - } - } + updateSizeHints(true); } } @@ -1075,13 +1069,9 @@ void QDeclarativeViewer::setRecordRate(int fps) record_rate = fps; } -void QDeclarativeViewer::sceneResized(QSize size) +void QDeclarativeViewer::sceneResized(QSize) { - if (size.width() > 0 && size.height() > 0) { - if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) { - updateSizeHints(); - } - } + updateSizeHints(); } void QDeclarativeViewer::keyPressEvent(QKeyEvent *event) @@ -1344,17 +1334,7 @@ void QDeclarativeViewer::changeOrientation(QAction *action) void QDeclarativeViewer::orientationChanged() { - if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { - if (canvas->rootObject()) { - QSizeF rootObjectSize = canvas->rootObject()->boundingRect().size(); - if (size() != rootObjectSize.toSize()) { - canvas->setMinimumSize(rootObjectSize.toSize()); - canvas->resize(rootObjectSize.toSize()); - resize(rootObjectSize.toSize()); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks - } - } - } + updateSizeHints(); } void QDeclarativeViewer::setDeviceKeys(bool on) @@ -1403,20 +1383,32 @@ void QDeclarativeViewer::setSizeToView(bool sizeToView) } } -void QDeclarativeViewer::updateSizeHints() +void QDeclarativeViewer::updateSizeHints(bool initial) { - if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) { - QSize newWindowSize = canvas->sizeHint(); + static bool isRecursive = false; + + if (isRecursive) + return; + isRecursive = true; + + if (initial || (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject)) { + QSize newWindowSize = initial ? initialSize : canvas->sizeHint(); + //qWarning() << "USH:" << (initial ? "INIT:" : "V2R:") << "setting fixed size " << newWindowSize; if (!isFullScreen() && !isMaximized()) { - canvas->setMinimumSize(newWindowSize); - canvas->resize(newWindowSize); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks - canvas->setMinimumSize(QSize(0, 0)); + canvas->setFixedSize(newWindowSize); + resize(1, 1); + layout()->setSizeConstraint(QLayout::SetFixedSize); + layout()->activate(); } - } else { // QDeclarativeView::SizeRootObjectToView - canvas->setMinimumSize(QSize(0,0)); - canvas->setMaximumSize(QSize(16777215,16777215)); } + //qWarning() << "USH: R2V: setting free size "; + layout()->setSizeConstraint(QLayout::SetNoConstraint); + layout()->activate(); + setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + canvas->setMinimumSize(QSize(0,0)); + canvas->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + + isRecursive = false; } void QDeclarativeViewer::registerTypes() diff --git a/tools/qml/qmlruntime.h b/tools/qml/qmlruntime.h index e70e69f..68d3452 100644 --- a/tools/qml/qmlruntime.h +++ b/tools/qml/qmlruntime.h @@ -145,9 +145,9 @@ private slots: void warningsWidgetOpened(); void warningsWidgetClosed(); - void updateSizeHints(); - private: + void updateSizeHints(bool initial = false); + QString getVideoFileName(); LoggerWidget *loggerWindow; -- cgit v0.12 From 10039e4b5bb80e5a9705126e7c62c588039acde6 Mon Sep 17 00:00:00 2001 From: Geir Vattekar Date: Mon, 12 Jul 2010 16:32:01 +0200 Subject: Doc: Removed links to Qt3 support in QHostAddress Task-number: QTBUG-12004 --- src/network/kernel/qhostaddress.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp index 5ae3acc..0bacf90 100644 --- a/src/network/kernel/qhostaddress.cpp +++ b/src/network/kernel/qhostaddress.cpp @@ -428,9 +428,9 @@ void QNetmaskAddress::setPrefixLength(QAbstractSocket::NetworkLayerProtocol prot QHostAddress is normally used with the QTcpSocket, QTcpServer, and QUdpSocket to connect to a host or to set up a server. - A host address is set with setAddress(), checked for its type - using isIPv4Address() or isIPv6Address(), and retrieved with - toIPv4Address(), toIPv6Address(), or toString(). + A host address is set with setAddress(), and retrieved with + toIPv4Address(), toIPv6Address(), or toString(). You can check the + type with protocol(). \note Please note that QHostAddress does not do DNS lookups. QHostInfo is needed for that. @@ -679,7 +679,8 @@ void QHostAddress::setAddress(const struct sockaddr *sockaddr) For example, if the address is 127.0.0.1, the returned value is 2130706433 (i.e. 0x7f000001). - This value is only valid if isIp4Addr() returns true. + This value is only valid if the Protocol() is + \l{QAbstractSocket::}{IPv4Protocol}. \sa toString() */ @@ -704,7 +705,8 @@ QAbstractSocket::NetworkLayerProtocol QHostAddress::protocol() const \snippet doc/src/snippets/code/src_network_kernel_qhostaddress.cpp 0 - This value is only valid if isIPv6Address() returns true. + This value is only valid if the protocol() is + \l{QAbstractSocket::}{IPv6Protocol}. \sa toString() */ -- cgit v0.12 From 686fca1c78e6d4d2ba597dd75d982c76647c7707 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 12 Jul 2010 16:21:34 +1000 Subject: wantsFocus should be based on FocusScope chain, not parent chain. Ancestors of the item with focus should only report wantsFocus as true when they are a FocusScope or a top-level item. Reviewed-by: Aaron Kennedy Reviewed-by: Yann Bodson --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 7 +++++- src/declarative/graphicsitems/qdeclarativeitem_p.h | 4 +++- .../qdeclarativefocusscope/data/chain.qml | 28 ++++++++++++++++++++++ .../qdeclarativefocusscope/data/forcefocus.qml | 4 ++-- .../qdeclarativefocusscope/data/test.qml | 2 +- .../qdeclarativefocusscope/data/test5.qml | 2 +- .../tst_qdeclarativefocusscope.cpp | 23 ++++++++++++++---- .../qdeclarativeitem/tst_qdeclarativeitem.cpp | 7 ++---- 8 files changed, 62 insertions(+), 15 deletions(-) create mode 100644 tests/auto/declarative/qdeclarativefocusscope/data/chain.qml diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index f5ea537..62a3215 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -2416,6 +2416,8 @@ QDeclarativeItem *QDeclarativeItem::childAt(qreal x, qreal y) const void QDeclarativeItemPrivate::focusChanged(bool flag) { Q_Q(QDeclarativeItem); + if (!(flags & QGraphicsItem::ItemIsFocusScope) && parent) + emit q->wantsFocusChanged(flag); //see also QDeclarativeItemPrivate::subFocusItemChange() emit q->focusChanged(flag); } @@ -3107,7 +3109,10 @@ void QDeclarativeItem::setSize(const QSizeF &size) /*! \internal */ bool QDeclarativeItem::wantsFocus() const { - return focusItem() != 0; + Q_D(const QDeclarativeItem); + return focusItem() == this || + (d->flags & QGraphicsItem::ItemIsFocusScope && focusItem() != 0) || + (!parentItem() && focusItem() != 0); } /*! diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h index fb416c2..84ae4ef 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem_p.h +++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h @@ -286,7 +286,9 @@ public: // Reimplemented from QGraphicsItemPrivate virtual void subFocusItemChange() { - emit q_func()->wantsFocusChanged(subFocusItem != 0); + if (flags & QGraphicsItem::ItemIsFocusScope || !parent) + emit q_func()->wantsFocusChanged(subFocusItem != 0); + //see also QDeclarativeItemPrivate::focusChanged } // Reimplemented from QGraphicsItemPrivate diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/chain.qml b/tests/auto/declarative/qdeclarativefocusscope/data/chain.qml new file mode 100644 index 0000000..6c39f20 --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/data/chain.qml @@ -0,0 +1,28 @@ +import Qt 4.7 + +Rectangle { + id: root + width:300; height:400 + + property bool focus1: root.wantsFocus + property bool focus2: item1.wantsFocus + property bool focus3: fs1.wantsFocus + property bool focus4: fs2.wantsFocus + property bool focus5: theItem.wantsFocus + + Item { + id: item1 + FocusScope { + id: fs1 + focus: true + FocusScope { + id: fs2 + focus: true + Item { + id: theItem + focus: true + } + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/forcefocus.qml b/tests/auto/declarative/qdeclarativefocusscope/data/forcefocus.qml index 5904fd6..af9c420 100644 --- a/tests/auto/declarative/qdeclarativefocusscope/data/forcefocus.qml +++ b/tests/auto/declarative/qdeclarativefocusscope/data/forcefocus.qml @@ -8,10 +8,10 @@ Rectangle { FocusScope { id: firstScope + objectName: "item0" focus: true Rectangle { - objectName: "item0" height: 120; width: 420 color: "transparent" @@ -44,9 +44,9 @@ Rectangle { FocusScope { id: secondScope + objectName: "item3" Rectangle { - objectName: "item3" y: 160; height: 120; width: 420 color: "transparent" diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test.qml index 6b09c29..aa43ba8 100644 --- a/tests/auto/declarative/qdeclarativefocusscope/data/test.qml +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test.qml @@ -9,12 +9,12 @@ Rectangle { FocusScope { id: myScope + objectName: "item0" focus: true Keys.onDigit9Pressed: console.log("Error - FocusScope") Rectangle { - objectName: "item0" height: 120 width: 420 diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml index d67ec57..cdb5164 100644 --- a/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml @@ -9,12 +9,12 @@ Rectangle { FocusScope { id: myScope + objectName: "item0" focus: true Keys.onReturnPressed: console.log("Error - FocusScope") Rectangle { - objectName: "item0" height: 120 width: 420 diff --git a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp index 7732e6d..2559087 100644 --- a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp +++ b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp @@ -68,6 +68,7 @@ private slots: void noFocus(); void textEdit(); void forceFocus(); + void noParentFocus(); }; /* @@ -97,7 +98,7 @@ void tst_qdeclarativefocusscope::basic() QDeclarativeView *view = new QDeclarativeView; view->setSource(QUrl::fromLocalFile(SRCDIR "/data/test.qml")); - QDeclarativeRectangle *item0 = findItem(view->rootObject(), QLatin1String("item0")); + QDeclarativeFocusScope *item0 = findItem(view->rootObject(), QLatin1String("item0")); QDeclarativeRectangle *item1 = findItem(view->rootObject(), QLatin1String("item1")); QDeclarativeRectangle *item2 = findItem(view->rootObject(), QLatin1String("item2")); QDeclarativeRectangle *item3 = findItem(view->rootObject(), QLatin1String("item3")); @@ -228,7 +229,7 @@ void tst_qdeclarativefocusscope::textEdit() QDeclarativeView *view = new QDeclarativeView; view->setSource(QUrl::fromLocalFile(SRCDIR "/data/test5.qml")); - QDeclarativeRectangle *item0 = findItem(view->rootObject(), QLatin1String("item0")); + QDeclarativeFocusScope *item0 = findItem(view->rootObject(), QLatin1String("item0")); QDeclarativeTextEdit *item1 = findItem(view->rootObject(), QLatin1String("item1")); QDeclarativeRectangle *item2 = findItem(view->rootObject(), QLatin1String("item2")); QDeclarativeTextEdit *item3 = findItem(view->rootObject(), QLatin1String("item3")); @@ -283,10 +284,10 @@ void tst_qdeclarativefocusscope::forceFocus() QDeclarativeView *view = new QDeclarativeView; view->setSource(QUrl::fromLocalFile(SRCDIR "/data/forcefocus.qml")); - QDeclarativeRectangle *item0 = findItem(view->rootObject(), QLatin1String("item0")); + QDeclarativeFocusScope *item0 = findItem(view->rootObject(), QLatin1String("item0")); QDeclarativeRectangle *item1 = findItem(view->rootObject(), QLatin1String("item1")); QDeclarativeRectangle *item2 = findItem(view->rootObject(), QLatin1String("item2")); - QDeclarativeRectangle *item3 = findItem(view->rootObject(), QLatin1String("item3")); + QDeclarativeFocusScope *item3 = findItem(view->rootObject(), QLatin1String("item3")); QDeclarativeRectangle *item4 = findItem(view->rootObject(), QLatin1String("item4")); QDeclarativeRectangle *item5 = findItem(view->rootObject(), QLatin1String("item5")); QVERIFY(item0 != 0); @@ -333,6 +334,20 @@ void tst_qdeclarativefocusscope::forceFocus() delete view; } +void tst_qdeclarativefocusscope::noParentFocus() +{ + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile(SRCDIR "/data/chain.qml")); + QVERIFY(view->rootObject()); + + QVERIFY(view->rootObject()->property("focus1") == true); + QVERIFY(view->rootObject()->property("focus2") == false); + QVERIFY(view->rootObject()->property("focus3") == true); + QVERIFY(view->rootObject()->property("focus4") == true); + QVERIFY(view->rootObject()->property("focus5") == true); + + delete view; +} QTEST_MAIN(tst_qdeclarativefocusscope) diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp index 4a57def..ffb2105 100644 --- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp +++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp @@ -703,11 +703,8 @@ void tst_QDeclarativeItem::propertyChanges() QCOMPARE(focusArguments.at(0).toBool(), true); QCOMPARE(parentItem->hasFocus(), false); - QCOMPARE(parentItem->wantsFocus(), true); - QCOMPARE(wantsFocusSpy.count(),1); - QList wantsFocusArguments = wantsFocusSpy.first(); - QVERIFY(wantsFocusArguments.count() == 1); - QCOMPARE(wantsFocusArguments.at(0).toBool(), true); + QCOMPARE(parentItem->wantsFocus(), false); + QCOMPARE(wantsFocusSpy.count(),0); delete canvas; } -- cgit v0.12 From bfa139ff61d1e5b495fe92be6073ccbdcdc91c77 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 12 Jul 2010 16:35:41 +1000 Subject: Private variable cleanup. --- src/declarative/graphicsitems/qdeclarativeitem.cpp | 22 +++++++++++----------- src/declarative/graphicsitems/qdeclarativeitem_p.h | 16 +++++++--------- src/imports/particles/qdeclarativeparticles.cpp | 2 +- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 62a3215..7022fac 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -1609,7 +1609,7 @@ QDeclarativeItem *QDeclarativeItem::parentItem() const bool QDeclarativeItem::isComponentComplete() const { Q_D(const QDeclarativeItem); - return d->_componentComplete; + return d->componentComplete; } void QDeclarativeItemPrivate::data_append(QDeclarativeListProperty *prop, QObject *o) @@ -1750,7 +1750,7 @@ QRectF QDeclarativeItem::childrenRect() Q_D(QDeclarativeItem); if (!d->_contents) { d->_contents = new QDeclarativeContents(this); - if (d->_componentComplete) + if (d->componentComplete) d->_contents->complete(); } return d->_contents->rectF(); @@ -2154,19 +2154,19 @@ QDeclarativeAnchorLine QDeclarativeItemPrivate::baseline() const qreal QDeclarativeItem::baselineOffset() const { Q_D(const QDeclarativeItem); - if (!d->_baselineOffset.isValid()) { + if (!d->baselineOffset.isValid()) { return 0.0; } else - return d->_baselineOffset; + return d->baselineOffset; } void QDeclarativeItem::setBaselineOffset(qreal offset) { Q_D(QDeclarativeItem); - if (offset == d->_baselineOffset) + if (offset == d->baselineOffset) return; - d->_baselineOffset = offset; + d->baselineOffset = offset; for(int ii = 0; ii < d->changeListeners.count(); ++ii) { const QDeclarativeItemPrivate::ChangeListener &change = d->changeListeners.at(ii); @@ -2295,7 +2295,7 @@ void QDeclarativeItem::setBaselineOffset(qreal offset) bool QDeclarativeItem::keepMouseGrab() const { Q_D(const QDeclarativeItem); - return d->_keepMouse; + return d->keepMouse; } /*! @@ -2319,7 +2319,7 @@ bool QDeclarativeItem::keepMouseGrab() const void QDeclarativeItem::setKeepMouseGrab(bool keep) { Q_D(QDeclarativeItem); - d->_keepMouse = keep; + d->keepMouse = keep; } /*! @@ -2592,7 +2592,7 @@ QDeclarativeListProperty QDeclarativeItem::transform() void QDeclarativeItem::classBegin() { Q_D(QDeclarativeItem); - d->_componentComplete = false; + d->componentComplete = false; if (d->_stateGroup) d->_stateGroup->classBegin(); if (d->_anchors) @@ -2610,7 +2610,7 @@ void QDeclarativeItem::classBegin() void QDeclarativeItem::componentComplete() { Q_D(QDeclarativeItem); - d->_componentComplete = true; + d->componentComplete = true; if (d->_stateGroup) d->_stateGroup->componentComplete(); if (d->_anchors) { @@ -2628,7 +2628,7 @@ QDeclarativeStateGroup *QDeclarativeItemPrivate::_states() Q_Q(QDeclarativeItem); if (!_stateGroup) { _stateGroup = new QDeclarativeStateGroup; - if (!_componentComplete) + if (!componentComplete) _stateGroup->classBegin(); QObject::connect(_stateGroup, SIGNAL(stateChanged(QString)), q, SIGNAL(stateChanged(QString))); diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h index 84ae4ef..bc5d809 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem_p.h +++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h @@ -120,11 +120,11 @@ class Q_DECLARATIVE_EXPORT QDeclarativeItemPrivate : public QGraphicsItemPrivate public: QDeclarativeItemPrivate() : _anchors(0), _contents(0), - _baselineOffset(0), + baselineOffset(0), _anchorLines(0), _stateGroup(0), origin(QDeclarativeItem::Center), widthValid(false), heightValid(false), - _componentComplete(true), _keepMouse(false), + componentComplete(true), keepMouse(false), smooth(false), transformOriginDirty(true), doneEventPreHandler(false), keyHandler(0), mWidth(0), mHeight(0), implicitWidth(0), implicitHeight(0) { @@ -144,12 +144,10 @@ public: QDeclarative_setParent_noEvent(q, parent); q->setParentItem(parent); } - _baselineOffset.invalidate(); + baselineOffset.invalidate(); mouseSetsFocus = false; } - QString _id; - // Private Properties qreal width() const; void setWidth(qreal); @@ -203,7 +201,7 @@ public: if (!_anchors) { Q_Q(QDeclarativeItem); _anchors = new QDeclarativeAnchors(q); - if (!_componentComplete) + if (!componentComplete) _anchors->classBegin(); } return _anchors; @@ -211,7 +209,7 @@ public: QDeclarativeAnchors *_anchors; QDeclarativeContents *_contents; - QDeclarativeNullableValue _baselineOffset; + QDeclarativeNullableValue baselineOffset; struct AnchorLines { AnchorLines(QGraphicsObject *); @@ -260,8 +258,8 @@ public: QDeclarativeItem::TransformOrigin origin:4; bool widthValid:1; bool heightValid:1; - bool _componentComplete:1; - bool _keepMouse:1; + bool componentComplete:1; + bool keepMouse:1; bool smooth:1; bool transformOriginDirty : 1; bool doneEventPreHandler : 1; diff --git a/src/imports/particles/qdeclarativeparticles.cpp b/src/imports/particles/qdeclarativeparticles.cpp index a7c445d..e95dfc7 100644 --- a/src/imports/particles/qdeclarativeparticles.cpp +++ b/src/imports/particles/qdeclarativeparticles.cpp @@ -1232,7 +1232,7 @@ void QDeclarativeParticles::burst(int count, int emissionRate) void QDeclarativeParticlesPainter::updateSize() { - if (!d->_componentComplete) + if (!d->componentComplete) return; const int parentX = parentItem()->x(); -- cgit v0.12 From 5efd577b1aea64f422e08ca8d54e041fa4b20783 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Tue, 13 Jul 2010 09:45:30 +1000 Subject: Autotest for QTBUG-5491 (Animation in a Behavior doesn't update running) --- .../qdeclarativebehaviors/data/runningTrue.qml | 20 ++++++++++++++++++++ .../tst_qdeclarativebehaviors.cpp | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 tests/auto/declarative/qdeclarativebehaviors/data/runningTrue.qml diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/runningTrue.qml b/tests/auto/declarative/qdeclarativebehaviors/data/runningTrue.qml new file mode 100644 index 0000000..d439875 --- /dev/null +++ b/tests/auto/declarative/qdeclarativebehaviors/data/runningTrue.qml @@ -0,0 +1,20 @@ +import Qt 4.7 + +Rectangle { + id: root + width:200; height:200 + + property real myValue: 0 + + Rectangle { + anchors.centerIn: parent + width: 100 + height: 100 + color: "green" + smooth: true + rotation: myValue + Behavior on rotation { + RotationAnimation { id: rotAnim; objectName: "rotAnim"; direction: RotationAnimation.Shortest } + } + } +} diff --git a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp index 70739fb..5c2c145 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp +++ b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp @@ -39,6 +39,7 @@ ** ****************************************************************************/ #include +#include #include #include #include @@ -78,6 +79,7 @@ private slots: void dontStart(); void startup(); void groupedPropertyCrash(); + void runningTrue(); }; void tst_qdeclarativebehaviors::simpleBehavior() @@ -366,6 +368,22 @@ void tst_qdeclarativebehaviors::groupedPropertyCrash() QVERIFY(rect); //don't crash } +//QTBUG-5491 +void tst_qdeclarativebehaviors::runningTrue() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/runningTrue.qml")); + QDeclarativeRectangle *rect = qobject_cast(c.create()); + QVERIFY(rect); + + QDeclarativeAbstractAnimation *animation = rect->findChild("rotAnim"); + QVERIFY(animation); + + QSignalSpy runningSpy(animation, SIGNAL(runningChanged(bool))); + rect->setProperty("myValue", 180); + QTRY_VERIFY(runningSpy.count() > 0); +} + QTEST_MAIN(tst_qdeclarativebehaviors) #include "tst_qdeclarativebehaviors.moc" -- cgit v0.12 From 400b0d43830dfdcefb2f8bd91440ab6f4130ce0f Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 13 Jul 2010 10:03:22 +1000 Subject: Fix TextInput selectionColor or selectedTextColor -based animations Task-number: QTBUG-12115 Reviewed-by: Martin Jones --- src/declarative/graphicsitems/qdeclarativetextinput.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index f6af1f4..2a5d73d 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -275,6 +275,8 @@ void QDeclarativeTextInput::setSelectionColor(const QColor &color) QPalette p = d->control->palette(); p.setColor(QPalette::Highlight, d->selectionColor); d->control->setPalette(p); + clearCache(); + update(); emit selectionColorChanged(color); } @@ -299,6 +301,8 @@ void QDeclarativeTextInput::setSelectedTextColor(const QColor &color) QPalette p = d->control->palette(); p.setColor(QPalette::HighlightedText, d->selectedTextColor); d->control->setPalette(p); + clearCache(); + update(); emit selectedTextColorChanged(color); } -- cgit v0.12 From cb6472cb67511316f058b1eda4ffe71a1c4fe019 Mon Sep 17 00:00:00 2001 From: Joona Petrell Date: Tue, 13 Jul 2010 15:50:22 +1000 Subject: Only support portrait and landscape orientations on Symbian when updating the runtime.orientation property Task-number: QTBUG-12036 Reviewed-by: Martin Jones --- tools/qml/deviceorientation_symbian.cpp | 12 ++++-------- tools/qml/main.cpp | 11 ++--------- tools/qml/qml.pro | 1 - 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/tools/qml/deviceorientation_symbian.cpp b/tools/qml/deviceorientation_symbian.cpp index 48bfc72..c305f94 100644 --- a/tools/qml/deviceorientation_symbian.cpp +++ b/tools/qml/deviceorientation_symbian.cpp @@ -118,18 +118,14 @@ private: data = dataBuf(); Orientation o = UnknownOrientation; switch (data.iDeviceOrientation) { - case TSensrvOrientationData::EOrientationDisplayRightUp: - o = LandscapeInverted; - break; case TSensrvOrientationData::EOrientationDisplayUp: o = Portrait; break; - case TSensrvOrientationData::EOrientationDisplayDown: - o = PortraitInverted; - break; - case TSensrvOrientationData::EOrientationDisplayLeftUp: + case TSensrvOrientationData::EOrientationDisplayRightUp: o = Landscape; break; + case TSensrvOrientationData::EOrientationDisplayLeftUp: + case TSensrvOrientationData::EOrientationDisplayDown: case TSensrvOrientationData::EOrientationUndefined: case TSensrvOrientationData::EOrientationDisplayUpwards: case TSensrvOrientationData::EOrientationDisplayDownwards: @@ -137,7 +133,7 @@ private: break; } - if (m_current != o) { + if (m_current != o && o != UnknownOrientation) { m_current = o; emit orientationChanged(); } diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index dfd1726..4b1162e 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -56,9 +56,7 @@ QT_USE_NAMESPACE QtMsgHandler systemMsgOutput = 0; -#if defined(Q_WS_S60) -#include // For locking app to portrait -#endif + #if defined (Q_OS_SYMBIAN) #include @@ -211,12 +209,7 @@ int main(int argc, char ** argv) app.setOrganizationName("Nokia"); app.setOrganizationDomain("nokia.com"); -#if defined(Q_WS_S60) - CAknAppUi *appUi = static_cast(CEikonEnv::Static()->AppUi()); - if (appUi) { - appUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait); - } -#endif + QDeclarativeViewer::registerTypes(); QDeclarativeTester::registerTypes(); diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro index 0a51c0b..bb69e8a 100644 --- a/tools/qml/qml.pro +++ b/tools/qml/qml.pro @@ -39,7 +39,6 @@ symbian { TARGET.CAPABILITY = NetworkServices ReadUserData !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { LIBS += -lsensrvclient -lsensrvutil - contains(QT_CONFIG, s60): LIBS += -lavkon -lcone } } mac { -- cgit v0.12 From 181749ff7dcfbeb5eb64026e80353f27013af833 Mon Sep 17 00:00:00 2001 From: Martin Jones Date: Tue, 13 Jul 2010 16:12:26 +1000 Subject: Ensure the section header isn't shown twice. Happened when currentItem was on a section boundary. Task-number: QTBUG-12089 --- src/declarative/graphicsitems/qdeclarativelistview.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 91e9995..cd26472 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -494,7 +494,7 @@ public: QSmoothedAnimation *highlightSizeAnimator; QDeclarativeViewSection *sectionCriteria; QString currentSection; - static const int sectionCacheSize = 3; + static const int sectionCacheSize = 4; QDeclarativeItem *sectionCache[sectionCacheSize]; qreal spacing; qreal highlightMoveSpeed; @@ -1029,6 +1029,11 @@ void QDeclarativeListViewPrivate::updateCurrent(int modelIndex) } currentItem->item->setFocus(true); currentItem->attached->setIsCurrentItem(true); + // Avoid showing section delegate twice. We still need the section heading so that + // currentItem positioning works correctly. + // This is slightly sub-optimal, but section heading caching minimizes the impact. + if (currentItem->section) + currentItem->section->setVisible(false); } updateHighlight(); emit q->currentIndexChanged(); -- cgit v0.12 From 61daa2f419696881ccdbc1cde2dc197eaf028ff6 Mon Sep 17 00:00:00 2001 From: axis Date: Mon, 12 Jul 2010 19:45:54 +0200 Subject: Fixed a network hanging bug on Symbian. The problem happened because of a race condition in the way Qt cancelled the select call from Open C. Under high network loads, a network request could come in, causing the select call to end. Afterwards, the pipe normally used to cancel the select call would be emptied (although it was already empty). If a context switch happened after the pipe was emptied, but before the lock was released in waitCond.wait(), the main thread could try to grab the lock and write to the pipe because it was unsuccessful. This would in turn cause the next call to select to terminate immediately, and without work to do, the select thread would go straight down to waitCond.wait() and get stuck there. Fixed by moving the pipe draining loop from the select thread to the main thread, right after the lock grab. This guarantees that the select thread is empty when returning to the select call. Task: QT-3358 AutoTest: Passed RevBy: Markus Goetz --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index c3e0808..7da1b69 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -100,16 +100,19 @@ static inline int qt_socket_select(int nfds, fd_set *readfds, fd_set *writefds, class QSelectMutexGrabber { public: - QSelectMutexGrabber(int fd, QMutex *mutex) + QSelectMutexGrabber(int writeFd, int readFd, QMutex *mutex) : m_mutex(mutex) { if (m_mutex->tryLock()) return; char dummy = 0; - qt_pipe_write(fd, &dummy, 1); + qt_pipe_write(writeFd, &dummy, 1); m_mutex->lock(); + + char buffer; + while (::read(readFd, &buffer, 1) > 0) {} } ~QSelectMutexGrabber() @@ -403,10 +406,6 @@ void QSelectThread::run() ret = qt_socket_select(maxfd, &readfds, &writefds, &exceptionfds, 0); savedSelectErrno = errno; - char buffer; - - while (::read(m_pipeEnds[0], &buffer, 1) > 0) {} - if(ret == 0) { // do nothing } else if (ret < 0) { @@ -497,7 +496,7 @@ void QSelectThread::requestSocketEvents ( QSocketNotifier *notifier, TRequestSta Q_ASSERT(QThread::currentThread() == this->thread()); - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); + QSelectMutexGrabber lock(m_pipeEnds[1], m_pipeEnds[0], &m_mutex); Q_ASSERT(!m_AOStatuses.contains(notifier)); @@ -510,7 +509,7 @@ void QSelectThread::cancelSocketEvents ( QSocketNotifier *notifier ) { Q_ASSERT(QThread::currentThread() == this->thread()); - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); + QSelectMutexGrabber lock(m_pipeEnds[1], m_pipeEnds[0], &m_mutex); m_AOStatuses.remove(notifier); @@ -521,7 +520,7 @@ void QSelectThread::restart() { Q_ASSERT(QThread::currentThread() == this->thread()); - QSelectMutexGrabber lock(m_pipeEnds[1], &m_mutex); + QSelectMutexGrabber lock(m_pipeEnds[1], m_pipeEnds[0], &m_mutex); m_waitCond.wakeAll(); } -- cgit v0.12 From fc260f7ce9c139da93e005b2b51ef37c4d23998d Mon Sep 17 00:00:00 2001 From: axis Date: Mon, 12 Jul 2010 20:06:14 +0200 Subject: Fixed a possible hanging bug in the Symbian networking. I haven't seen the bug happening in practice, but I decided to be safe rather than sorry. The rationale is that if a network request comes in, the select thread will signal the active object in the main thread, remove the socket from the set of monitored sockets, and then go to sleep in the waitCond.wait() call, waiting for reactivation by the QSelectMutexGrabber. However, in QEventDispatcherSymbian::socketFired(), if the event causes the socket to be deleted, reactivateSocketNotifier will never be called, and therefore the wait condition will never be terminated. Fixed by only entering the wait condition if a grabber has already written to the pipe, signalling that it wants the lock. AutoTest: Passed RevBy: Markus Goetz --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index 7da1b69..1b0c31b 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -480,7 +480,8 @@ void QSelectThread::run() updateActivatedNotifiers(QSocketNotifier::Write, &writefds); } - m_waitCond.wait(&m_mutex); + if (FD_ISSET(m_pipeEnds[0], &readfds)) + m_waitCond.wait(&m_mutex); } m_mutex.unlock(); -- cgit v0.12 From 64f66cbfb924ed1810b120950273c2f58e3a2077 Mon Sep 17 00:00:00 2001 From: axis Date: Mon, 12 Jul 2010 20:24:11 +0200 Subject: Revert "Adding some error checking for setdefaultif" This reverts commit 0b56799601690a747c42dfbbefe95f18e837eb3f. Should not be necessary anymore after 61daa2f41969688. --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index 1b0c31b..ea207f0 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -585,9 +585,7 @@ void QSelectThread::updateActivatedNotifiers(QSocketNotifier::Type type, fd_set // on some devices we do get exception // close all exiting sockets // and reset default IAP - if(::setdefaultif(0) != KErrNone) // well we can't do much about it - qWarning("setdefaultif(0) failed"); - + ::setdefaultif(0); toRemove.append(i.key()); TRequestStatus *status = i.value(); QEventDispatcherSymbian::RequestComplete(d->threadData->symbian_thread_handle, status, KErrNone); -- cgit v0.12 From b47ab877e8632f0ab2508f67d00986a0e344b7ba Mon Sep 17 00:00:00 2001 From: axis Date: Mon, 12 Jul 2010 20:25:44 +0200 Subject: Revert "Making network reconnect happen after teardown." This reverts commit 1e91d6b79cba488fa5c6f7d954de611903837f76. Should not be necessary anymore after 61daa2f41969688. --- src/corelib/kernel/qeventdispatcher_symbian.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index ea207f0..2a52044 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -47,8 +47,6 @@ #include #include -#include - QT_BEGIN_NAMESPACE #ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS @@ -577,15 +575,13 @@ void QSelectThread::updateActivatedNotifiers(QSocketNotifier::Type type, fd_set * check if socket is in exception set * then signal RequestComplete for it */ - qWarning("exception on %d [will do setdefaultif(0) - hack]", i.key()->socket()); + qWarning("exception on %d [will close the socket handle - hack]", i.key()->socket()); // quick fix; there is a bug // when doing read on socket // errors not preoperly mapped // after offline-ing the device // on some devices we do get exception - // close all exiting sockets - // and reset default IAP - ::setdefaultif(0); + ::close(i.key()->socket()); toRemove.append(i.key()); TRequestStatus *status = i.value(); QEventDispatcherSymbian::RequestComplete(d->threadData->symbian_thread_handle, status, KErrNone); -- cgit v0.12