diff options
author | Liang Qi <liang.qi@qt.io> | 2016-10-20 08:28:16 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-10-20 08:28:16 +0200 |
commit | f5da1a9261d64fdac3b4e12082932cb473098c73 (patch) | |
tree | bf96e4940ef4f66509589cc31095cf1d8e3b3a2c /src | |
parent | 0bfcff9d9bd20f3efef6146bd1da6f263b0e24c4 (diff) | |
parent | dd313c4c5e383827913bbc106f9d19667f2dd149 (diff) |
Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts:
src/quick/items/qquickitemsmodule.cpp
tests/auto/quick/rendernode/tst_rendernode.cpp
Change-Id: I90582df69feb95a4e4aafb0b9793c23714654f19
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/layouts/qquicklinearlayout.cpp | 30 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4sequenceobject.cpp | 9 | ||||
-rw-r--r-- | src/quick/doc/src/includes/layout.qdocinc | 18 | ||||
-rw-r--r-- | src/quick/items/qquickitem.cpp | 90 | ||||
-rw-r--r-- | src/quick/items/qquickitem.h | 6 | ||||
-rw-r--r-- | src/quick/items/qquickitemsmodule.cpp | 1 |
6 files changed, 109 insertions, 45 deletions
diff --git a/src/imports/layouts/qquicklinearlayout.cpp b/src/imports/layouts/qquicklinearlayout.cpp index fdf8479133..7fad395a29 100644 --- a/src/imports/layouts/qquicklinearlayout.cpp +++ b/src/imports/layouts/qquicklinearlayout.cpp @@ -56,15 +56,7 @@ Items in a RowLayout support these attached properties: \list - \li \l{Layout::minimumWidth}{Layout.minimumWidth} - \li \l{Layout::minimumHeight}{Layout.minimumHeight} - \li \l{Layout::preferredWidth}{Layout.preferredWidth} - \li \l{Layout::preferredHeight}{Layout.preferredHeight} - \li \l{Layout::maximumWidth}{Layout.maximumWidth} - \li \l{Layout::maximumHeight}{Layout.maximumHeight} - \li \l{Layout::fillWidth}{Layout.fillWidth} - \li \l{Layout::fillHeight}{Layout.fillHeight} - \li \l{Layout::alignment}{Layout.alignment} + \input layout.qdocinc attached-properties \endlist \image rowlayout.png @@ -118,15 +110,7 @@ Items in a ColumnLayout support these attached properties: \list - \li \l{Layout::minimumWidth}{Layout.minimumWidth} - \li \l{Layout::minimumHeight}{Layout.minimumHeight} - \li \l{Layout::preferredWidth}{Layout.preferredWidth} - \li \l{Layout::preferredHeight}{Layout.preferredHeight} - \li \l{Layout::maximumWidth}{Layout.maximumWidth} - \li \l{Layout::maximumHeight}{Layout.maximumHeight} - \li \l{Layout::fillWidth}{Layout.fillWidth} - \li \l{Layout::fillHeight}{Layout.fillHeight} - \li \l{Layout::alignment}{Layout.alignment} + \input layout.qdocinc attached-properties \endlist \image columnlayout.png @@ -220,15 +204,7 @@ \li \l{Layout::column}{Layout.column} \li \l{Layout::rowSpan}{Layout.rowSpan} \li \l{Layout::columnSpan}{Layout.columnSpan} - \li \l{Layout::minimumWidth}{Layout.minimumWidth} - \li \l{Layout::minimumHeight}{Layout.minimumHeight} - \li \l{Layout::preferredWidth}{Layout.preferredWidth} - \li \l{Layout::preferredHeight}{Layout.preferredHeight} - \li \l{Layout::maximumWidth}{Layout.maximumWidth} - \li \l{Layout::maximumHeight}{Layout.maximumHeight} - \li \l{Layout::fillWidth}{Layout.fillWidth} - \li \l{Layout::fillHeight}{Layout.fillHeight} - \li \l{Layout::alignment}{Layout.alignment} + \input layout.qdocinc attached-properties \endlist Read more about attached properties \l{QML Object Attributes}{here}. diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp index 3eb7772db7..58da7b9f68 100644 --- a/src/qml/jsruntime/qv4sequenceobject.cpp +++ b/src/qml/jsruntime/qv4sequenceobject.cpp @@ -592,14 +592,11 @@ void Heap::QQmlSequence<Container>::init(QObject *object, int propertyIndex) namespace QV4 { typedef QQmlSequence<QVector<int> > QQmlIntVectorList; -template<> -DEFINE_OBJECT_VTABLE(QQmlIntVectorList); +DEFINE_OBJECT_TEMPLATE_VTABLE(QQmlIntVectorList); typedef QQmlSequence<QVector<qreal> > QQmlRealVectorList; -template<> -DEFINE_OBJECT_VTABLE(QQmlRealVectorList); +DEFINE_OBJECT_TEMPLATE_VTABLE(QQmlRealVectorList); typedef QQmlSequence<QVector<bool> > QQmlBoolVectorList; -template<> -DEFINE_OBJECT_VTABLE(QQmlBoolVectorList); +DEFINE_OBJECT_TEMPLATE_VTABLE(QQmlBoolVectorList); typedef QQmlSequence<QStringList> QQmlQStringList; DEFINE_OBJECT_TEMPLATE_VTABLE(QQmlQStringList); typedef QQmlSequence<QList<QString> > QQmlStringList; diff --git a/src/quick/doc/src/includes/layout.qdocinc b/src/quick/doc/src/includes/layout.qdocinc new file mode 100644 index 0000000000..723fbc515a --- /dev/null +++ b/src/quick/doc/src/includes/layout.qdocinc @@ -0,0 +1,18 @@ +//! [attached-properties] + +\li \l{Layout::minimumWidth}{Layout.minimumWidth} +\li \l{Layout::minimumHeight}{Layout.minimumHeight} +\li \l{Layout::preferredWidth}{Layout.preferredWidth} +\li \l{Layout::preferredHeight}{Layout.preferredHeight} +\li \l{Layout::maximumWidth}{Layout.maximumWidth} +\li \l{Layout::maximumHeight}{Layout.maximumHeight} +\li \l{Layout::fillWidth}{Layout.fillWidth} +\li \l{Layout::fillHeight}{Layout.fillHeight} +\li \l{Layout::alignment}{Layout.alignment} +\li \l{Layout::margins}{Layout.margins} +\li \l{Layout::topMargin}{Layout.leftMargin} +\li \l{Layout::rightMargin}{Layout.rightMargin} +\li \l{Layout::topMargin}{Layout.topMargin} +\li \l{Layout::bottomMargin}{Layout.bottomMargin} + +//! [attached-properties] diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index e219e9b34e..e6069d692f 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -4297,12 +4297,12 @@ void QQuickItem::polish() */ void QQuickItem::mapFromItem(QQmlV4Function *args) const { + QV4::ExecutionEngine *v4 = args->v4engine(); if (args->length() != 3 && args->length() != 5) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } - QV4::ExecutionEngine *v4 = args->v4engine(); QV4::Scope scope(v4); QV4::ScopedValue item(scope, (*args)[0]); @@ -4316,7 +4316,7 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const if (!itemObj && !item->isNull()) { qmlInfo(this) << "mapFromItem() given argument \"" << item->toQStringNoThrow() << "\" which is neither null nor an Item"; - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4324,7 +4324,7 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const QV4::ScopedValue vy(scope, (*args)[2]); if (!vx->isNumber() || !vy->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4337,7 +4337,7 @@ void QQuickItem::mapFromItem(QQmlV4Function *args) const QV4::ScopedValue vw(scope, (*args)[3]); QV4::ScopedValue vh(scope, (*args)[4]); if (!vw->isNumber() || !vh->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } qreal w = vw->asDouble(); @@ -4385,12 +4385,12 @@ QTransform QQuickItem::itemTransform(QQuickItem *other, bool *ok) const */ void QQuickItem::mapToItem(QQmlV4Function *args) const { + QV4::ExecutionEngine *v4 = args->v4engine(); if (args->length() != 3 && args->length() != 5) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } - QV4::ExecutionEngine *v4 = args->v4engine(); QV4::Scope scope(v4); QV4::ScopedValue item(scope, (*args)[0]); @@ -4404,7 +4404,7 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const if (!itemObj && !item->isNull()) { qmlInfo(this) << "mapToItem() given argument \"" << item->toQStringNoThrow() << "\" which is neither null nor an Item"; - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4412,7 +4412,7 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const QV4::ScopedValue vy(scope, (*args)[2]); if (!vx->isNumber() || !vy->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } @@ -4425,7 +4425,7 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const QV4::ScopedValue vw(scope, (*args)[3]); QV4::ScopedValue vh(scope, (*args)[4]); if (!vw->isNumber() || !vh->isNumber()) { - args->v4engine()->throwTypeError(); + v4->throwTypeError(); return; } qreal w = vw->asDouble(); @@ -4441,6 +4441,76 @@ void QQuickItem::mapToItem(QQmlV4Function *args) const } /*! + \since 5.7 + \qmlmethod object QtQuick::Item::mapFromGlobal(real x, real y) + + Maps the point (\a x, \a y), which is in the global coordinate system, to the + item's coordinate system, and returns a \l point matching the mapped coordinate. +*/ +/*! + \internal + */ +void QQuickItem::mapFromGlobal(QQmlV4Function *args) const +{ + QV4::ExecutionEngine *v4 = args->v4engine(); + if (args->length() != 2) { + v4->throwTypeError(); + return; + } + + QV4::Scope scope(v4); + QV4::ScopedValue vx(scope, (*args)[0]); + QV4::ScopedValue vy(scope, (*args)[1]); + + if (!vx->isNumber() || !vy->isNumber()) { + v4->throwTypeError(); + return; + } + + qreal x = vx->asDouble(); + qreal y = vy->asDouble(); + QVariant result = mapFromGlobal(QPointF(x, y)); + + QV4::ScopedObject rv(scope, v4->fromVariant(result)); + args->setReturnValue(rv.asReturnedValue()); +} + +/*! + \since 5.7 + \qmlmethod object QtQuick::Item::mapToGlobal(real x, real y) + + Maps the point (\a x, \a y), which is in this item's coordinate system, to the + global coordinate system, and returns a \l point matching the mapped coordinate. +*/ +/*! + \internal + */ +void QQuickItem::mapToGlobal(QQmlV4Function *args) const +{ + QV4::ExecutionEngine *v4 = args->v4engine(); + if (args->length() != 2) { + v4->throwTypeError(); + return; + } + + QV4::Scope scope(v4); + QV4::ScopedValue vx(scope, (*args)[0]); + QV4::ScopedValue vy(scope, (*args)[1]); + + if (!vx->isNumber() || !vy->isNumber()) { + v4->throwTypeError(); + return; + } + + qreal x = vx->asDouble(); + qreal y = vy->asDouble(); + QVariant result = mapToGlobal(QPointF(x, y)); + + QV4::ScopedObject rv(scope, v4->fromVariant(result)); + args->setReturnValue(rv.asReturnedValue()); +} + +/*! \qmlmethod QtQuick::Item::forceActiveFocus() Forces active focus on the item. diff --git a/src/quick/items/qquickitem.h b/src/quick/items/qquickitem.h index 510d46739a..b1b1d627b1 100644 --- a/src/quick/items/qquickitem.h +++ b/src/quick/items/qquickitem.h @@ -320,12 +320,12 @@ public: QTransform itemTransform(QQuickItem *, bool *) const; QPointF mapToItem(const QQuickItem *item, const QPointF &point) const; QPointF mapToScene(const QPointF &point) const; - Q_REVISION(7) Q_INVOKABLE QPointF mapToGlobal(const QPointF &point) const; + QPointF mapToGlobal(const QPointF &point) const; QRectF mapRectToItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectToScene(const QRectF &rect) const; QPointF mapFromItem(const QQuickItem *item, const QPointF &point) const; QPointF mapFromScene(const QPointF &point) const; - Q_REVISION(7) Q_INVOKABLE QPointF mapFromGlobal(const QPointF &point) const; + QPointF mapFromGlobal(const QPointF &point) const; QRectF mapRectFromItem(const QQuickItem *item, const QRectF &rect) const; QRectF mapRectFromScene(const QRectF &rect) const; @@ -333,6 +333,8 @@ public: Q_INVOKABLE void mapFromItem(QQmlV4Function*) const; Q_INVOKABLE void mapToItem(QQmlV4Function*) const; + Q_REVISION(7) Q_INVOKABLE void mapFromGlobal(QQmlV4Function*) const; + Q_REVISION(7) Q_INVOKABLE void mapToGlobal(QQmlV4Function*) const; Q_INVOKABLE void forceActiveFocus(); Q_INVOKABLE void forceActiveFocus(Qt::FocusReason reason); Q_REVISION(1) Q_INVOKABLE QQuickItem *nextItemInFocusChain(bool forward = true); diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index 944f24c4ad..0705d9b504 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -349,6 +349,7 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType<QQuickShaderEffectSource, 1>(uri, 2, 6, "ShaderEffectSource"); #endif + qmlRegisterType<QQuickItem, 7>(uri, 2, 7, "Item"); #if QT_CONFIG(quick_listview) qmlRegisterType<QQuickListView, 7>(uri, 2, 7, "ListView"); #endif |