aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/quick/demos/clocks/clocks.qmlproject8
-rw-r--r--examples/quick/tutorials/gettingStartedQml/core/FileDialog.qml10
-rw-r--r--src/imports/localstorage/plugin.cpp2
-rw-r--r--src/qml/doc/src/whatsnew.qdoc7
-rw-r--r--src/qml/util/qqmlpropertymap.h4
-rw-r--r--src/quick/items/qquickflickable.cpp39
-rw-r--r--src/quick/items/qquickgridview.cpp2
-rw-r--r--src/quick/items/qquickitemview.cpp4
-rw-r--r--src/quick/items/qquicklistview.cpp4
-rw-r--r--src/quick/items/qquickloader.cpp61
-rw-r--r--src/quick/items/qquickmousearea.cpp50
-rw-r--r--src/quick/items/qquicktextcontrol.cpp36
-rw-r--r--src/quick/items/qquicktextcontrol_p_p.h6
-rw-r--r--src/quick/items/qquicktextedit.cpp2
-rw-r--r--src/quick/scenegraph/coreapi/qsggeometry.h2
-rw-r--r--src/quick/scenegraph/coreapi/qsgmaterial.h2
-rw-r--r--src/quick/scenegraph/qsgdefaultglyphnode_p.cpp2
-rw-r--r--src/quick/scenegraph/util/qsgflatcolormaterial.h2
-rw-r--r--src/quick/scenegraph/util/qsgsimplematerial.h4
-rw-r--r--src/quick/scenegraph/util/qsgtexture.h4
-rw-r--r--src/quick/scenegraph/util/qsgtexturematerial.h4
-rw-r--r--src/quick/util/qquicksmoothedanimation.cpp4
-rw-r--r--sync.profile6
-rw-r--r--tests/auto/cmake/CMakeLists.txt2
-rw-r--r--tests/auto/cmake/cmake.pro2
-rw-r--r--tests/auto/headersclean/headersclean.pro2
-rw-r--r--tests/auto/qml/debugger/qv8profilerservice/qv8profilerservice.pro2
-rw-r--r--tests/auto/qml/debugger/shared/debugutil.cpp2
-rw-r--r--tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp28
-rw-r--r--tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp2
-rw-r--r--tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp1
-rw-r--r--tests/auto/qmltest/events/tst_drag.qml10
-rw-r--r--tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp2
-rw-r--r--tests/auto/quick/qquickflickable/data/flickable03.qml14
-rw-r--r--tests/auto/quick/qquickflickable/data/nestedStopAtBounds.qml37
-rw-r--r--tests/auto/quick/qquickflickable/tst_qquickflickable.cpp79
-rw-r--r--tests/auto/quick/qquickgridview/tst_qquickgridview.cpp12
-rw-r--r--tests/auto/quick/qquickimage/tst_qquickimage.cpp2
-rw-r--r--tests/auto/quick/qquicklistview/data/emptymodel.qml23
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp29
-rw-r--r--tests/auto/quick/qquickloader/data/BigComponent.qml5013
-rw-r--r--tests/auto/quick/qquickloader/tst_qquickloader.cpp29
-rw-r--r--tests/auto/quick/qquickmousearea/data/nestedStopAtBounds.qml44
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp106
-rw-r--r--tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp1
-rw-r--r--tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml12
-rw-r--r--tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp23
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp3
-rw-r--r--tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp3
-rw-r--r--tests/auto/shared/testhttpserver.cpp5
-rw-r--r--tests/auto/shared/testhttpserver.h3
51 files changed, 558 insertions, 5198 deletions
diff --git a/examples/quick/demos/clocks/clocks.qmlproject b/examples/quick/demos/clocks/clocks.qmlproject
new file mode 100644
index 0000000000..b15654600e
--- /dev/null
+++ b/examples/quick/demos/clocks/clocks.qmlproject
@@ -0,0 +1,8 @@
+import QmlProject 1.1
+
+Project {
+ mainFile: "clocks.qml"
+ QmlFiles { directory: "." }
+ JavaScriptFiles { directory: "." }
+ ImageFiles { directory: "." }
+}
diff --git a/examples/quick/tutorials/gettingStartedQml/core/FileDialog.qml b/examples/quick/tutorials/gettingStartedQml/core/FileDialog.qml
index 3564b0d06d..dc3ad09c9c 100644
--- a/examples/quick/tutorials/gettingStartedQml/core/FileDialog.qml
+++ b/examples/quick/tutorials/gettingStartedQml/core/FileDialog.qml
@@ -102,8 +102,8 @@ Rectangle {
anchors.centerIn: parent
text: name
color: "#BDCACD"
- font.weight: GridView.view.currentIndex == index ? Font.DemiBold : Font.Normal
- font.pointSize: GridView.view.currentIndex == index ? 12 : 10
+ font.weight: dirView.currentIndex == index ? Font.DemiBold : Font.Normal
+ font.pointSize: dirView.currentIndex == index ? 12 : 10
elide: Text.ElideMiddle
horizontalAlignment: Text.AlignHCenter
}
@@ -113,8 +113,8 @@ Rectangle {
anchors.centerIn: parent
radius: 10
antialiasing: true
- scale: GridView.view.currentIndex == index ? 1 : 0.5
- opacity: GridView.view.currentIndex == index ? 1 : 0
+ scale: dirView.currentIndex == index ? 1 : 0.5
+ opacity: dirView.currentIndex == index ? 1 : 0
Text {
id: overlay
width: parent.width
@@ -141,7 +141,7 @@ Rectangle {
hoverEnabled: true
onClicked: {
- GridView.view.currentIndex = index
+ dirView.currentIndex = index
selectedFile = directory.files[index].name
selectChanged()
}
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp
index 11886050d1..d40433e96b 100644
--- a/src/imports/localstorage/plugin.cpp
+++ b/src/imports/localstorage/plugin.cpp
@@ -503,7 +503,7 @@ using the Offline Storage API.
\section3 Open or create a databaseData
\code
-import QtQuick.LocalStorage 2.0 as LS
+import QtQuick.LocalStorage 2.0 as Sql
db = Sql.openDatabaseSync(identifier, version, description, estimated_size, callback(db))
\endcode
diff --git a/src/qml/doc/src/whatsnew.qdoc b/src/qml/doc/src/whatsnew.qdoc
index e6c02c06e9..361f6e61ee 100644
--- a/src/qml/doc/src/whatsnew.qdoc
+++ b/src/qml/doc/src/whatsnew.qdoc
@@ -30,10 +30,10 @@
\page qtqml-releasenotes.html
\inqmlmodule QtQuick 2.0
-\section1 Qt 5.0
+\section1 Qt QML in Qt 5
-The QtQml C++ module is new in Qt 5. It provides the QML engine and implements
-the QML language supporting infrastructure.
+The \l{Qt QML} module is new in Qt 5.0. It provides the QML engine and
+implements the QML language supporting infrastructure.
(Prior to Qt 5, this functionality was provided by the QtDeclarative module, which
has now been replaced by the new QtQml and QtQuick C++ modules. See the
@@ -100,4 +100,3 @@ has now been replaced by the new QtQml and QtQuick C++ modules. See the
\endlist
*/
-
diff --git a/src/qml/util/qqmlpropertymap.h b/src/qml/util/qqmlpropertymap.h
index cd3516a907..5c79f08926 100644
--- a/src/qml/util/qqmlpropertymap.h
+++ b/src/qml/util/qqmlpropertymap.h
@@ -83,8 +83,8 @@ protected:
virtual QVariant updateValue(const QString &key, const QVariant &input);
template<class DerivedType>
- QQmlPropertyMap(DerivedType *derived, QObject *parent)
- : QObject(*allocatePrivate(), parent)
+ QQmlPropertyMap(DerivedType *derived, QObject *parentObj)
+ : QObject(*allocatePrivate(), parentObj)
{
Q_UNUSED(derived)
init(&DerivedType::staticMetaObject);
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index c1e8dd378c..dd7357822a 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -1031,23 +1031,20 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
newY = minY + (newY - minY) / 2;
if (newY < maxY && maxY - minY <= 0)
newY = maxY + (newY - maxY) / 2;
- if (boundsBehavior == QQuickFlickable::StopAtBounds && (newY > minY || newY < maxY)) {
- rejectY = true;
- if (newY < maxY) {
- newY = maxY;
- rejectY = false;
- }
- if (newY > minY) {
- newY = minY;
- rejectY = false;
- }
+ if (boundsBehavior == QQuickFlickable::StopAtBounds && newY <= maxY) {
+ newY = maxY;
+ rejectY = vData.pressPos == maxY && dy < 0;
+ }
+ if (boundsBehavior == QQuickFlickable::StopAtBounds && newY >= minY) {
+ newY = minY;
+ rejectY = vData.pressPos == minY && dy > 0;
}
if (!rejectY && stealMouse && dy != 0.0) {
clearTimeline();
vData.move.setValue(newY);
vMoved = true;
}
- if (overThreshold)
+ if (!rejectY && overThreshold)
stealY = true;
}
}
@@ -1065,24 +1062,22 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
newX = minX + (newX - minX) / 2;
if (newX < maxX && maxX - minX <= 0)
newX = maxX + (newX - maxX) / 2;
- if (boundsBehavior == QQuickFlickable::StopAtBounds && (newX > minX || newX < maxX)) {
- rejectX = true;
- if (newX < maxX) {
- newX = maxX;
- rejectX = false;
- }
- if (newX > minX) {
- newX = minX;
- rejectX = false;
- }
+ if (boundsBehavior == QQuickFlickable::StopAtBounds && newX <= maxX) {
+ newX = maxX;
+ rejectX = hData.pressPos == maxX && dx < 0;
+ }
+ if (boundsBehavior == QQuickFlickable::StopAtBounds && newX >= minX) {
+ newX = minX;
+ rejectX = hData.pressPos == minX && dx > 0;
}
+
if (!rejectX && stealMouse && dx != 0.0) {
clearTimeline();
hData.move.setValue(newX);
hMoved = true;
}
- if (overThreshold)
+ if (!rejectX && overThreshold)
stealX = true;
}
}
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp
index fd9ce9ffcd..c376f01c46 100644
--- a/src/quick/items/qquickgridview.cpp
+++ b/src/quick/items/qquickgridview.cpp
@@ -463,7 +463,7 @@ void QQuickGridViewPrivate::resetColumns()
{
Q_Q(QQuickGridView);
qreal length = flow == QQuickGridView::FlowLeftToRight ? q->width() : q->height();
- columns = (int)qMax((length + colSize()/2) / colSize(), qreal(1.));
+ columns = qMax(1, qFloor(length / colSize()));
}
FxViewItem *QQuickGridViewPrivate::newViewItem(int modelIndex, QQuickItem *item)
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index b73fb8c5b6..be056d13fd 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -248,10 +248,8 @@ QQuickItemView::~QQuickItemView()
QQuickItem *QQuickItemView::currentItem() const
{
Q_D(const QQuickItemView);
- if (!d->currentItem)
- return 0;
const_cast<QQuickItemViewPrivate*>(d)->applyPendingChanges();
- return d->currentItem->item;
+ return d->currentItem ? d->currentItem->item : 0;
}
QVariant QQuickItemView::model() const
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp
index 57f1b99456..63528ff702 100644
--- a/src/quick/items/qquicklistview.cpp
+++ b/src/quick/items/qquicklistview.cpp
@@ -172,7 +172,9 @@ public:
, highlightMoveVelocity(400), highlightResizeVelocity(400), highlightResizeDuration(-1)
, sectionCriteria(0), currentSectionItem(0), nextSectionItem(0)
, overshootDist(0.0), correctFlick(false), inFlickCorrection(false)
- {}
+ {
+ highlightMoveDuration = -1; //override default value set in base class
+ }
~QQuickListViewPrivate() {
delete highlightPosAnimator;
delete highlightSizeAnimator;
diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp
index 61f9a27d3b..0434c2af41 100644
--- a/src/quick/items/qquickloader.cpp
+++ b/src/quick/items/qquickloader.cpp
@@ -335,41 +335,42 @@ bool QQuickLoader::active() const
void QQuickLoader::setActive(bool newVal)
{
Q_D(QQuickLoader);
- if (d->active != newVal) {
- d->active = newVal;
- if (newVal == true) {
- if (d->loadingFromSource) {
- loadFromSource();
- } else {
- loadFromSourceComponent();
- }
+ if (d->active == newVal)
+ return;
+
+ d->active = newVal;
+ if (newVal == true) {
+ if (d->loadingFromSource) {
+ loadFromSource();
} else {
- // cancel any current incubation
- if (d->incubator) {
- d->incubator->clear();
- delete d->itemContext;
- d->itemContext = 0;
- }
+ loadFromSourceComponent();
+ }
+ } else {
+ // cancel any current incubation
+ if (d->incubator) {
+ d->incubator->clear();
+ delete d->itemContext;
+ d->itemContext = 0;
+ }
- if (d->item) {
- QQuickItemPrivate *p = QQuickItemPrivate::get(d->item);
- p->removeItemChangeListener(d, watchedChanges);
+ if (d->item) {
+ QQuickItemPrivate *p = QQuickItemPrivate::get(d->item);
+ p->removeItemChangeListener(d, watchedChanges);
- // We can't delete immediately because our item may have triggered
- // the Loader to load a different item.
- d->item->setParentItem(0);
- d->item->setVisible(false);
- d->item = 0;
- }
- if (d->object) {
- d->object->deleteLater();
- d->object = 0;
- emit itemChanged();
- }
- emit statusChanged();
+ // We can't delete immediately because our item may have triggered
+ // the Loader to load a different item.
+ d->item->setParentItem(0);
+ d->item->setVisible(false);
+ d->item = 0;
+ }
+ if (d->object) {
+ d->object->deleteLater();
+ d->object = 0;
+ emit itemChanged();
}
- emit activeChanged();
+ emit statusChanged();
}
+ emit activeChanged();
}
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index e75a60181f..ad0a265035 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -797,9 +797,6 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event)
curLocalPos = event->windowPos();
}
- qreal dx = qAbs(curLocalPos.x() - startLocalPos.x());
- qreal dy = qAbs(curLocalPos.y() - startLocalPos.y());
-
if (keepMouseGrab() && d->stealMouse && !d->drag->active())
d->drag->setActive(true);
@@ -807,38 +804,31 @@ void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event)
? d->drag->target()->parentItem()->mapFromScene(d->targetStartPos)
: d->targetStartPos;
- QPointF dragPos = d->drag->target()->position();
-
bool dragX = drag()->axis() & QQuickDrag::XAxis;
bool dragY = drag()->axis() & QQuickDrag::YAxis;
- if (dragX && d->drag->active()) {
- qreal x = (curLocalPos.x() - startLocalPos.x()) + startPos.x();
- if (x < drag()->xmin())
- x = drag()->xmin();
- else if (x > drag()->xmax())
- x = drag()->xmax();
- dragPos.setX(x);
+ QPointF dragPos = d->drag->target()->position();
+ if (dragX) {
+ dragPos.setX(qBound(
+ d->drag->xmin(),
+ startPos.x() + curLocalPos.x() - startLocalPos.x(),
+ d->drag->xmax()));
}
- if (dragY && d->drag->active()) {
- qreal y = (curLocalPos.y() - startLocalPos.y()) + startPos.y();
- if (y < drag()->ymin())
- y = drag()->ymin();
- else if (y > drag()->ymax())
- y = drag()->ymax();
- dragPos.setY(y);
+ if (dragY) {
+ dragPos.setY(qBound(
+ d->drag->ymin(),
+ startPos.y() + curLocalPos.y() - startLocalPos.y(),
+ d->drag->ymax()));
}
- d->drag->target()->setPosition(dragPos);
-
- if (!keepMouseGrab()) {
- bool xDragged = QQuickWindowPrivate::dragOverThreshold(dx, Qt::XAxis, event);
- bool yDragged = QQuickWindowPrivate::dragOverThreshold(dy, Qt::YAxis, event);
- if ((!dragY && !yDragged && dragX && xDragged)
- || (!dragX && !xDragged && dragY && yDragged)
- || (dragX && dragY && (xDragged || yDragged))) {
- setKeepMouseGrab(true);
- d->stealMouse = true;
- }
+ if (d->drag->active())
+ d->drag->target()->setPosition(dragPos);
+
+ if (!keepMouseGrab()
+ && (QQuickWindowPrivate::dragOverThreshold(dragPos.x() - startPos.x(), Qt::XAxis, event)
+ || QQuickWindowPrivate::dragOverThreshold(dragPos.y() - startPos.y(), Qt::YAxis, event))) {
+ setKeepMouseGrab(true);
+ d->stealMouse = true;
+ d->startScene = event->windowPos();
}
d->moved = true;
diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp
index 02aeaa7e35..6cce3cc25a 100644
--- a/src/quick/items/qquicktextcontrol.cpp
+++ b/src/quick/items/qquicktextcontrol.cpp
@@ -359,7 +359,7 @@ void QQuickTextControlPrivate::setCursorPosition(int pos, QTextCursor::MoveMode
if (mode != QTextCursor::KeepAnchor) {
selectedWordOnDoubleClick = QTextCursor();
- selectedBlockOnTrippleClick = QTextCursor();
+ selectedBlockOnTripleClick = QTextCursor();
}
}
@@ -527,18 +527,18 @@ void QQuickTextControlPrivate::extendBlockwiseSelection(int suggestedNewPosition
Q_Q(QQuickTextControl);
// if inside the initial selected line keep that
- if (suggestedNewPosition >= selectedBlockOnTrippleClick.selectionStart()
- && suggestedNewPosition <= selectedBlockOnTrippleClick.selectionEnd()) {
- q->setTextCursor(selectedBlockOnTrippleClick);
+ if (suggestedNewPosition >= selectedBlockOnTripleClick.selectionStart()
+ && suggestedNewPosition <= selectedBlockOnTripleClick.selectionEnd()) {
+ q->setTextCursor(selectedBlockOnTripleClick);
return;
}
- if (suggestedNewPosition < selectedBlockOnTrippleClick.position()) {
- cursor.setPosition(selectedBlockOnTrippleClick.selectionEnd());
+ if (suggestedNewPosition < selectedBlockOnTripleClick.position()) {
+ cursor.setPosition(selectedBlockOnTripleClick.selectionEnd());
cursor.setPosition(suggestedNewPosition, QTextCursor::KeepAnchor);
cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
} else {
- cursor.setPosition(selectedBlockOnTrippleClick.selectionStart());
+ cursor.setPosition(selectedBlockOnTripleClick.selectionStart());
cursor.setPosition(suggestedNewPosition, QTextCursor::KeepAnchor);
cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
@@ -791,8 +791,8 @@ void QQuickTextControl::timerEvent(QTimerEvent *e)
d->cursorOn = !d->cursorOn;
d->repaintCursor();
- } else if (e->timerId() == d->trippleClickTimer.timerId()) {
- d->trippleClickTimer.stop();
+ } else if (e->timerId() == d->tripleClickTimer.timerId()) {
+ d->tripleClickTimer.stop();
}
}
@@ -1022,17 +1022,17 @@ void QQuickTextControlPrivate::mousePressEvent(QMouseEvent *e, const QPointF &po
commitPreedit();
#endif
- if (trippleClickTimer.isActive()
- && ((pos - trippleClickPoint).toPoint().manhattanLength() < qApp->styleHints()->startDragDistance())) {
+ if (tripleClickTimer.isActive()
+ && ((pos - tripleClickPoint).toPoint().manhattanLength() < qApp->styleHints()->startDragDistance())) {
cursor.movePosition(QTextCursor::StartOfBlock);
cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
- selectedBlockOnTrippleClick = cursor;
+ selectedBlockOnTripleClick = cursor;
anchorOnMousePress = QString();
- trippleClickTimer.stop();
+ tripleClickTimer.stop();
} else {
int cursorPos = q->hitTest(pos, Qt::FuzzyHit);
if (cursorPos == -1) {
@@ -1046,7 +1046,7 @@ void QQuickTextControlPrivate::mousePressEvent(QMouseEvent *e, const QPointF &po
selectedWordOnDoubleClick.select(QTextCursor::WordUnderCursor);
}
- if (selectedBlockOnTrippleClick.hasSelection())
+ if (selectedBlockOnTripleClick.hasSelection())
extendBlockwiseSelection(cursorPos);
else if (selectedWordOnDoubleClick.hasSelection())
extendWordwiseSelection(cursorPos, pos.x());
@@ -1079,7 +1079,7 @@ void QQuickTextControlPrivate::mouseMoveEvent(QMouseEvent *e, const QPointF &mou
if (!(mousePressed
|| editable
|| selectedWordOnDoubleClick.hasSelection()
- || selectedBlockOnTrippleClick.hasSelection()))
+ || selectedBlockOnTripleClick.hasSelection()))
return;
const QTextCursor oldSelection = cursor;
@@ -1114,7 +1114,7 @@ void QQuickTextControlPrivate::mouseMoveEvent(QMouseEvent *e, const QPointF &mou
selectedWordOnDoubleClick.select(QTextCursor::WordUnderCursor);
}
- if (selectedBlockOnTrippleClick.hasSelection())
+ if (selectedBlockOnTripleClick.hasSelection())
extendBlockwiseSelection(newCursorPos);
else if (selectedWordOnDoubleClick.hasSelection())
extendWordwiseSelection(newCursorPos, mouseX);
@@ -1219,8 +1219,8 @@ void QQuickTextControlPrivate::mouseDoubleClickEvent(QMouseEvent *e, const QPoin
cursorIsFocusIndicator = false;
selectedWordOnDoubleClick = cursor;
- trippleClickPoint = pos;
- trippleClickTimer.start(qApp->styleHints()->mouseDoubleClickInterval(), q);
+ tripleClickPoint = pos;
+ tripleClickTimer.start(qApp->styleHints()->mouseDoubleClickInterval(), q);
if (doEmit) {
selectionChanged();
#ifndef QT_NO_CLIPBOARD
diff --git a/src/quick/items/qquicktextcontrol_p_p.h b/src/quick/items/qquicktextcontrol_p_p.h
index 059ccd36bf..a0727c7a71 100644
--- a/src/quick/items/qquicktextcontrol_p_p.h
+++ b/src/quick/items/qquicktextcontrol_p_p.h
@@ -126,7 +126,7 @@ public:
void cancelPreedit();
#endif
- QPointF trippleClickPoint;
+ QPointF tripleClickPoint;
QPointF mousePressPos;
QTextCharFormat lastCharFormat;
@@ -134,12 +134,12 @@ public:
QTextDocument *doc;
QTextCursor cursor;
QTextCursor selectedWordOnDoubleClick;
- QTextCursor selectedBlockOnTrippleClick;
+ QTextCursor selectedBlockOnTripleClick;
QString anchorOnMousePress;
QString linkToCopy;
QBasicTimer cursorBlinkTimer;
- QBasicTimer trippleClickTimer;
+ QBasicTimer tripleClickTimer;
#ifndef QT_NO_IM
int preeditCursor;
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp
index d543b6bd41..d087a1b8f3 100644
--- a/src/quick/items/qquicktextedit.cpp
+++ b/src/quick/items/qquicktextedit.cpp
@@ -1089,7 +1089,7 @@ void QQuickTextEdit::setFocusOnPress(bool on)
\qmlproperty bool QtQuick2::TextEdit::persistentSelection
Whether the TextEdit should keep the selection visible when it loses active focus to another
- item in the scene. By default this is set to true;
+ item in the scene. By default this is set to false.
*/
bool QQuickTextEdit::persistentSelection() const
{
diff --git a/src/quick/scenegraph/coreapi/qsggeometry.h b/src/quick/scenegraph/coreapi/qsggeometry.h
index c9b44e86b0..cfed30cb36 100644
--- a/src/quick/scenegraph/coreapi/qsggeometry.h
+++ b/src/quick/scenegraph/coreapi/qsggeometry.h
@@ -44,7 +44,7 @@
#include <QtQuick/qtquickglobal.h>
#include <QtGui/qopengl.h>
-#include <QRectF>
+#include <QtCore/QRectF>
QT_BEGIN_HEADER
diff --git a/src/quick/scenegraph/coreapi/qsgmaterial.h b/src/quick/scenegraph/coreapi/qsgmaterial.h
index 062311e2e3..56109d32a0 100644
--- a/src/quick/scenegraph/coreapi/qsgmaterial.h
+++ b/src/quick/scenegraph/coreapi/qsgmaterial.h
@@ -43,7 +43,7 @@
#define MATERIAL_H
#include <QtQuick/qtquickglobal.h>
-#include <qopenglshaderprogram.h>
+#include <QtGui/qopenglshaderprogram.h>
QT_BEGIN_HEADER
diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
index 6b8f9927c4..210e9f23f5 100644
--- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
+++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
@@ -96,7 +96,7 @@ const char *QSGTextMaskMaterialData::fragmentShader() const {
"uniform sampler2D texture; \n"
"uniform lowp vec4 color; \n"
"void main() { \n"
- " gl_FragColor = vec4(texture2D(texture, sampleCoord).rgb, 1.0); \n"
+ " gl_FragColor = vec4(texture2D(texture, sampleCoord).rgb * color.a, 1.0); \n"
"}";
}
diff --git a/src/quick/scenegraph/util/qsgflatcolormaterial.h b/src/quick/scenegraph/util/qsgflatcolormaterial.h
index 97b8c14a9b..b24e5e7205 100644
--- a/src/quick/scenegraph/util/qsgflatcolormaterial.h
+++ b/src/quick/scenegraph/util/qsgflatcolormaterial.h
@@ -43,7 +43,7 @@
#define FLATCOLORMATERIAL_H
#include <QtQuick/qsgmaterial.h>
-#include <qcolor.h>
+#include <QtGui/qcolor.h>
QT_BEGIN_HEADER
diff --git a/src/quick/scenegraph/util/qsgsimplematerial.h b/src/quick/scenegraph/util/qsgsimplematerial.h
index 25ac93b2c5..877ea1c4b5 100644
--- a/src/quick/scenegraph/util/qsgsimplematerial.h
+++ b/src/quick/scenegraph/util/qsgsimplematerial.h
@@ -142,8 +142,8 @@ class QSGSimpleMaterial : public QSGMaterial
{
public:
#ifndef qdoc
- QSGSimpleMaterial(const State &state, PtrShaderCreateFunc func)
- : m_state(state)
+ QSGSimpleMaterial(const State &aState, PtrShaderCreateFunc func)
+ : m_state(aState)
, m_func(func)
{
}
diff --git a/src/quick/scenegraph/util/qsgtexture.h b/src/quick/scenegraph/util/qsgtexture.h
index 9d91d4e81c..4dcea63175 100644
--- a/src/quick/scenegraph/util/qsgtexture.h
+++ b/src/quick/scenegraph/util/qsgtexture.h
@@ -43,8 +43,8 @@
#define QSGTEXTURE_H
#include <QtQuick/qtquickglobal.h>
-#include <QObject>
-#include <QImage>
+#include <QtCore/QObject>
+#include <QtGui/QImage>
QT_BEGIN_HEADER
diff --git a/src/quick/scenegraph/util/qsgtexturematerial.h b/src/quick/scenegraph/util/qsgtexturematerial.h
index 7fc06c7927..822084b463 100644
--- a/src/quick/scenegraph/util/qsgtexturematerial.h
+++ b/src/quick/scenegraph/util/qsgtexturematerial.h
@@ -61,10 +61,10 @@ public:
void setTexture(QSGTexture *texture);
QSGTexture *texture() const { return m_texture; }
- void setMipmapFiltering(QSGTexture::Filtering filtering) { m_mipmap_filtering = filtering; }
+ void setMipmapFiltering(QSGTexture::Filtering filteringType) { m_mipmap_filtering = filteringType; }
QSGTexture::Filtering mipmapFiltering() const { return (QSGTexture::Filtering) m_mipmap_filtering; }
- void setFiltering(QSGTexture::Filtering filtering) { m_filtering = filtering; }
+ void setFiltering(QSGTexture::Filtering filteringType) { m_filtering = filteringType; }
QSGTexture::Filtering filtering() const { return (QSGTexture::Filtering) m_filtering; }
void setHorizontalWrapMode(QSGTexture::WrapMode mode) { m_horizontal_wrap = mode; }
diff --git a/src/quick/util/qquicksmoothedanimation.cpp b/src/quick/util/qquicksmoothedanimation.cpp
index 021ff75f03..9dd9aa2e6d 100644
--- a/src/quick/util/qquicksmoothedanimation.cpp
+++ b/src/quick/util/qquicksmoothedanimation.cpp
@@ -153,10 +153,10 @@ bool QSmoothedAnimation::recalc()
s = (invert? -1.0: 1.0) * s;
- if (userDuration > 0 && velocity > 0) {
+ if (userDuration >= 0 && velocity > 0) {
tf = s / velocity;
if (tf > (userDuration / 1000.)) tf = (userDuration / 1000.);
- } else if (userDuration > 0) {
+ } else if (userDuration >= 0) {
tf = userDuration / 1000.;
} else if (velocity > 0) {
tf = s / velocity;
diff --git a/sync.profile b/sync.profile
index aa5cc8ff2a..180ef01430 100644
--- a/sync.profile
+++ b/sync.profile
@@ -17,7 +17,7 @@
# - any git symbolic ref resolvable from the module's repository (e.g. "refs/heads/master" to track master branch)
#
%dependencies = (
- "qtbase" => "refs/heads/release",
- "qtxmlpatterns" => "refs/heads/release",
- "qtjsbackend" => "refs/heads/release",
+ "qtbase" => "refs/heads/old/5.0",
+ "qtxmlpatterns" => "refs/heads/old/5.0",
+ "qtjsbackend" => "refs/heads/old/5.0",
);
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index a88564e0b7..f62d2f3bdb 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -9,8 +9,6 @@ find_package(Qt5Core REQUIRED)
include("${_Qt5CTestMacros}")
-set(Qt5_MODULE_TEST_DEPENDS Network Gui)
-
test_module_includes(
Qml QQmlEngine
Quick QQuickWindow
diff --git a/tests/auto/cmake/cmake.pro b/tests/auto/cmake/cmake.pro
index bf2dbcb772..0a5e7e75fc 100644
--- a/tests/auto/cmake/cmake.pro
+++ b/tests/auto/cmake/cmake.pro
@@ -2,4 +2,6 @@
# Cause make to do nothing.
TEMPLATE = subdirs
+CMAKE_QT_MODULES_UNDER_TEST = quick qml
+
CONFIG += ctest_testcase
diff --git a/tests/auto/headersclean/headersclean.pro b/tests/auto/headersclean/headersclean.pro
index 6d2f74a6bc..4457fe1c38 100644
--- a/tests/auto/headersclean/headersclean.pro
+++ b/tests/auto/headersclean/headersclean.pro
@@ -1,4 +1,2 @@
QT = qml quick qmltest qmldevtools
load(qt_headersclean)
-# shadowing problems in scenegraph, allow it for now
-*-g++*: QMAKE_CXXFLAGS -= -Wshadow
diff --git a/tests/auto/qml/debugger/qv8profilerservice/qv8profilerservice.pro b/tests/auto/qml/debugger/qv8profilerservice/qv8profilerservice.pro
index 8780f64946..e4d588dc9a 100644
--- a/tests/auto/qml/debugger/qv8profilerservice/qv8profilerservice.pro
+++ b/tests/auto/qml/debugger/qv8profilerservice/qv8profilerservice.pro
@@ -13,3 +13,5 @@ TESTDATA = data/*
QT += qml testlib gui-private
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+
+mac:CONFIG+=insignificant_test #QTBUG-29975
diff --git a/tests/auto/qml/debugger/shared/debugutil.cpp b/tests/auto/qml/debugger/shared/debugutil.cpp
index 0069131bcf..7df753df03 100644
--- a/tests/auto/qml/debugger/shared/debugutil.cpp
+++ b/tests/auto/qml/debugger/shared/debugutil.cpp
@@ -111,7 +111,7 @@ QString QQmlDebugProcess::state()
if (m_process.exitStatus() == QProcess::CrashExit)
stateStr += " (crashed!)";
else
- stateStr += ", return value" + m_process.exitCode();
+ stateStr += ", return value " + QString::number(m_process.exitCode());
break;
}
case QProcess::Starting: stateStr = "starting"; break;
diff --git a/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp b/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp
index d066c84efe..610d80d559 100644
--- a/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp
+++ b/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp
@@ -91,7 +91,7 @@ QQmlEngineDebugClient::QQmlEngineDebugClient(
quint32 QQmlEngineDebugClient::addWatch(
const QmlDebugPropertyReference &property, bool *success)
{
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -117,7 +117,7 @@ quint32 QQmlEngineDebugClient::addWatch(
const QmlDebugObjectReference &object, const QString &expr,
bool *success)
{
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -133,7 +133,7 @@ quint32 QQmlEngineDebugClient::addWatch(
quint32 QQmlEngineDebugClient::addWatch(
const QmlDebugObjectReference &object, bool *success)
{
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -169,7 +169,7 @@ void QQmlEngineDebugClient::removeWatch(quint32 id, bool *success)
quint32 QQmlEngineDebugClient::queryAvailableEngines(bool *success)
{
m_engines.clear();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -186,7 +186,7 @@ quint32 QQmlEngineDebugClient::queryRootContexts(
const QmlDebugEngineReference &engine, bool *success)
{
m_rootContext = QmlDebugContextReference();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled && engine.debugId != -1) {
id = getId();
@@ -203,7 +203,7 @@ quint32 QQmlEngineDebugClient::queryObject(
const QmlDebugObjectReference &object, bool *success)
{
m_object = QmlDebugObjectReference();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled && object.debugId != -1) {
id = getId();
@@ -221,7 +221,7 @@ quint32 QQmlEngineDebugClient::queryObjectsForLocation(
const QString &file, int lineNumber, int columnNumber, bool *success)
{
m_objects.clear();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -239,7 +239,7 @@ quint32 QQmlEngineDebugClient::queryObjectRecursive(
const QmlDebugObjectReference &object, bool *success)
{
m_object = QmlDebugObjectReference();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled && object.debugId != -1) {
id = getId();
@@ -257,7 +257,7 @@ quint32 QQmlEngineDebugClient::queryObjectsForLocationRecursive(const QString &f
int lineNumber, int columnNumber, bool *success)
{
m_objects.clear();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -275,7 +275,7 @@ quint32 QQmlEngineDebugClient::queryExpressionResult(
int objectDebugId, const QString &expr, bool *success)
{
m_exprResult = QVariant();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -293,7 +293,7 @@ quint32 QQmlEngineDebugClient::queryExpressionResultBC(
int objectDebugId, const QString &expr, bool *success)
{
m_exprResult = QVariant();
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled) {
id = getId();
@@ -314,7 +314,7 @@ quint32 QQmlEngineDebugClient::setBindingForObject(
QString source, int line,
bool *success)
{
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
id = getId();
@@ -333,7 +333,7 @@ quint32 QQmlEngineDebugClient::resetBindingForObject(
const QString &propertyName,
bool *success)
{
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
id = getId();
@@ -350,7 +350,7 @@ quint32 QQmlEngineDebugClient::setMethodBody(
int objectDebugId, const QString &methodName,
const QString &methodBody, bool *success)
{
- quint32 id;
+ quint32 id = -1;
*success = false;
if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
id = getId();
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
index fee66695fc..cc49f234c1 100644
--- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
+++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
@@ -1491,7 +1491,7 @@ void tst_qqmlecmascript::componentCreation()
if (creationError.isEmpty()) {
QVERIFY(created);
- QObject *expectedParent;
+ QObject *expectedParent = reinterpret_cast<QObject *>(quintptr(-1));
if (createdParent == QLatin1String("obj")) {
expectedParent = object;
} else if ((createdParent == QLatin1String("null")) || createdParent.isEmpty()) {
diff --git a/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp b/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp
index 29c7909267..3ae27fe9c3 100644
--- a/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp
+++ b/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp
@@ -1173,6 +1173,7 @@ void tst_qqmlxmlhttprequest::stateChangeCallingContext()
QQmlComponent component(&engine, testFileUrl("stateChangeCallingContext.qml"));
QObject *object = component.create();
QVERIFY(object != 0);
+ server.sendDelayedItem();
QTRY_VERIFY(object->property("success").toBool() == true);
delete object;
}
diff --git a/tests/auto/qmltest/events/tst_drag.qml b/tests/auto/qmltest/events/tst_drag.qml
index 7a17007495..70e0ea2096 100644
--- a/tests/auto/qmltest/events/tst_drag.qml
+++ b/tests/auto/qmltest/events/tst_drag.qml
@@ -47,6 +47,10 @@ Rectangle{
width:200
height:200
+ TestUtil {
+ id: util
+ }
+
Rectangle {
id:container
width:20
@@ -67,8 +71,8 @@ Rectangle{
when:windowShown
function test_mouseDrag() {
mouseDrag(container, 10, 10, 20, 30);
- compare(container.x, 20);
- compare(container.y, 30);
+ compare(container.x, 20 - util.dragThreshold - 1);
+ compare(container.y, 30 - util.dragThreshold - 1);
}
}
-} \ No newline at end of file
+}
diff --git a/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp b/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp
index 9ba0cf189d..b795d23da4 100644
--- a/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp
+++ b/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp
@@ -451,6 +451,8 @@ void tst_qquickborderimage::statusChanges()
QSignalSpy spy(obj, SIGNAL(statusChanged(QQuickImageBase::Status)));
QVERIFY(obj != 0);
obj->setSource(source);
+ if (remote)
+ server->sendDelayedItem();
QTRY_VERIFY(obj->status() == finalStatus);
QCOMPARE(spy.count(), emissions);
diff --git a/tests/auto/quick/qquickflickable/data/flickable03.qml b/tests/auto/quick/qquickflickable/data/flickable03.qml
index a3e9d6fd59..1549034576 100644
--- a/tests/auto/quick/qquickflickable/data/flickable03.qml
+++ b/tests/auto/quick/qquickflickable/data/flickable03.qml
@@ -1,9 +1,23 @@
import QtQuick 2.0
Flickable {
+ property bool movingInContentX: true
+ property bool movingInContentY: true
+ property bool draggingInContentX: true
+ property bool draggingInContentY: true
+
width: 100; height: 400
contentWidth: column.width; contentHeight: column.height
+ onContentXChanged: {
+ movingInContentX = movingInContentX && movingHorizontally
+ draggingInContentX = draggingInContentX && draggingHorizontally
+ }
+ onContentYChanged: {
+ movingInContentY = movingInContentY && movingVertically
+ draggingInContentY = draggingInContentY && draggingVertically
+ }
+
Column {
id: column
Repeater {
diff --git a/tests/auto/quick/qquickflickable/data/nestedStopAtBounds.qml b/tests/auto/quick/qquickflickable/data/nestedStopAtBounds.qml
new file mode 100644
index 0000000000..59318e5b95
--- /dev/null
+++ b/tests/auto/quick/qquickflickable/data/nestedStopAtBounds.qml
@@ -0,0 +1,37 @@
+import QtQuick 2.0
+
+Flickable {
+ id: outer
+ objectName: "outerFlickable"
+ width: 400
+ height: 400
+ contentX: 50
+ contentY: 50
+ contentWidth: 500
+ contentHeight: 500
+ flickableDirection: inner.flickableDirection
+
+ Rectangle {
+ x: 100
+ y: 100
+ width: 300
+ height: 300
+
+ color: "yellow"
+ Flickable {
+ id: inner
+ objectName: "innerFlickable"
+ anchors.fill: parent
+ contentX: 100
+ contentY: 100
+ contentWidth: 400
+ contentHeight: 400
+ boundsBehavior: Flickable.StopAtBounds
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: 100
+ color: "blue"
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
index 784988b913..c4f871fc11 100644
--- a/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
+++ b/tests/auto/quick/qquickflickable/tst_qquickflickable.cpp
@@ -91,6 +91,8 @@ private slots:
void cancelOnMouseGrab();
void clickAndDragWhenTransformed();
void flickTwiceUsingTouches();
+ void nestedStopAtBounds();
+ void nestedStopAtBounds_data();
private:
void flickWithTouch(QWindow *window, QTouchDevice *touchDevice);
@@ -645,6 +647,9 @@ void tst_qquickflickable::movingAndFlicking()
QVERIFY(flickable->isFlicking());
QCOMPARE(flickable->isFlickingHorizontally(), horizontalEnabled);
QCOMPARE(flickable->isFlickingVertically(), verticalEnabled);
+ // contentX/contentY are either unchanged, or moving is true when the value changed.
+ QCOMPARE(flickable->property("movingInContentX").value<bool>(), true);
+ QCOMPARE(flickable->property("movingInContentY").value<bool>(), true);
QCOMPARE(moveSpy.count(), 1);
QCOMPARE(vMoveSpy.count(), verticalEnabled ? 1 : 0);
@@ -808,6 +813,11 @@ void tst_qquickflickable::movingAndDragging()
QVERIFY(flickable->isDragging());
QCOMPARE(flickable->isDraggingHorizontally(), horizontalEnabled);
QCOMPARE(flickable->isDraggingVertically(), verticalEnabled);
+ // contentX/contentY are either unchanged, or moving and dragging are true when the value changes.
+ QCOMPARE(flickable->property("movingInContentX").value<bool>(), true);
+ QCOMPARE(flickable->property("movingInContentY").value<bool>(), true);
+ QCOMPARE(flickable->property("draggingInContentX").value<bool>(), true);
+ QCOMPARE(flickable->property("draggingInContentY").value<bool>(), true);
QCOMPARE(moveSpy.count(), 1);
QCOMPARE(vMoveSpy.count(), verticalEnabled ? 1 : 0);
@@ -1311,6 +1321,75 @@ void tst_qquickflickable::flickWithTouch(QWindow *window, QTouchDevice *touchDev
QTest::qWait(1);
}
+void tst_qquickflickable::nestedStopAtBounds_data()
+{
+ QTest::addColumn<bool>("transpose");
+ QTest::addColumn<bool>("invert");
+
+ QTest::newRow("left") << false << false;
+ QTest::newRow("right") << false << true;
+ QTest::newRow("top") << true << false;
+ QTest::newRow("bottom") << true << true;
+}
+
+void tst_qquickflickable::nestedStopAtBounds()
+{
+ QFETCH(bool, transpose);
+ QFETCH(bool, invert);
+
+ QQuickView view;
+ view.setSource(testFileUrl("nestedStopAtBounds.qml"));
+ view.show();
+ view.requestActivate();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+ QVERIFY(view.rootObject());
+
+ QQuickFlickable *outer = qobject_cast<QQuickFlickable*>(view.rootObject());
+ QVERIFY(outer);
+
+ QQuickFlickable *inner = outer->findChild<QQuickFlickable*>("innerFlickable");
+ QVERIFY(inner);
+ inner->setFlickableDirection(transpose ? QQuickFlickable::VerticalFlick : QQuickFlickable::HorizontalFlick);
+ inner->setContentX(invert ? 0 : 100);
+ inner->setContentY(invert ? 0 : 100);
+
+ const int threshold = qApp->styleHints()->startDragDistance();
+
+ QPoint position(200, 200);
+ int &axis = transpose ? position.ry() : position.rx();
+
+ // drag toward the aligned boundary. Outer flickable dragged.
+ QTest::mousePress(&view, Qt::LeftButton, 0, position);
+ QTest::qWait(10);
+ axis += invert ? threshold * 2 : -threshold * 2;
+ QTest::mouseMove(&view, position);
+ axis += invert ? threshold : -threshold;
+ QTest::mouseMove(&view, position);
+ QCOMPARE(outer->isDragging(), true);
+ QCOMPARE(inner->isDragging(), false);
+ QTest::mouseRelease(&view, Qt::LeftButton, 0, position);
+
+ QVERIFY(!outer->isDragging());
+ QTRY_VERIFY(!outer->isMoving());
+
+ axis = 200;
+ outer->setContentX(50);
+ outer->setContentY(50);
+
+ // drag away from the aligned boundary. Inner flickable dragged.
+ QTest::mousePress(&view, Qt::LeftButton, 0, position);
+ QTest::qWait(10);
+ axis += invert ? -threshold * 2 : threshold * 2;
+ QTest::mouseMove(&view, position);
+ axis += invert ? -threshold : threshold;
+ QTest::mouseMove(&view, position);
+ QCOMPARE(outer->isDragging(), false);
+ QCOMPARE(inner->isDragging(), true);
+ QTest::mouseRelease(&view, Qt::LeftButton, 0, position);
+
+ QTRY_VERIFY(!outer->isMoving());
+}
+
QTEST_MAIN(tst_qquickflickable)
#include "tst_qquickflickable.moc"
diff --git a/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp b/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp
index 802cc0a4c9..3c30f9e887 100644
--- a/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp
+++ b/tests/auto/quick/qquickgridview/tst_qquickgridview.cpp
@@ -4308,22 +4308,22 @@ void tst_QQuickGridView::snapOneRow_data()
QTest::addColumn<qreal>("startExtent");
QTest::newRow("vertical, left to right") << QQuickGridView::FlowLeftToRight << Qt::LeftToRight << int(QQuickItemView::NoHighlightRange)
- << QPoint(20, 200) << QPoint(20, 20) << 100.0 << 240.0 << 0.0;
+ << QPoint(20, 160) << QPoint(20, 20) << 100.0 << 240.0 << 0.0;
QTest::newRow("horizontal, left to right") << QQuickGridView::FlowTopToBottom << Qt::LeftToRight << int(QQuickItemView::NoHighlightRange)
- << QPoint(200, 20) << QPoint(20, 20) << 100.0 << 240.0 << 0.0;
+ << QPoint(160, 20) << QPoint(20, 20) << 100.0 << 240.0 << 0.0;
QTest::newRow("horizontal, right to left") << QQuickGridView::FlowTopToBottom << Qt::RightToLeft << int(QQuickItemView::NoHighlightRange)
- << QPoint(20, 20) << QPoint(200, 20) << -340.0 << -240.0 - 240.0 << -240.0;
+ << QPoint(20, 20) << QPoint(160, 20) << -340.0 << -240.0 - 240.0 << -240.0;
QTest::newRow("vertical, left to right, enforce range") << QQuickGridView::FlowLeftToRight << Qt::LeftToRight << int(QQuickItemView::StrictlyEnforceRange)
- << QPoint(20, 200) << QPoint(20, 20) << 100.0 << 340.0 << -20.0;
+ << QPoint(20, 160) << QPoint(20, 20) << 100.0 << 340.0 << -20.0;
QTest::newRow("horizontal, left to right, enforce range") << QQuickGridView::FlowTopToBottom << Qt::LeftToRight << int(QQuickItemView::StrictlyEnforceRange)
- << QPoint(200, 20) << QPoint(20, 20) << 100.0 << 340.0 << -20.0;
+ << QPoint(160, 20) << QPoint(20, 20) << 100.0 << 340.0 << -20.0;
QTest::newRow("horizontal, right to left, enforce range") << QQuickGridView::FlowTopToBottom << Qt::RightToLeft << int(QQuickItemView::StrictlyEnforceRange)
- << QPoint(20, 20) << QPoint(200, 20) << -340.0 << -240.0 - 240.0 - 100.0 << -220.0;
+ << QPoint(20, 20) << QPoint(160, 20) << -340.0 << -240.0 - 240.0 - 100.0 << -220.0;
}
void tst_QQuickGridView::snapOneRow()
diff --git a/tests/auto/quick/qquickimage/tst_qquickimage.cpp b/tests/auto/quick/qquickimage/tst_qquickimage.cpp
index 51ac5c640a..531bf1202e 100644
--- a/tests/auto/quick/qquickimage/tst_qquickimage.cpp
+++ b/tests/auto/quick/qquickimage/tst_qquickimage.cpp
@@ -701,7 +701,7 @@ void tst_qquickimage::imageCrash_QTBUG_22125()
}
// shouldn't crash when deleting cancelled QQmlPixmapReplys.
- QTest::qWait(520); // Delay mode delays for 500 ms.
+ server.sendDelayedItem();
QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
QCoreApplication::processEvents();
}
diff --git a/tests/auto/quick/qquicklistview/data/emptymodel.qml b/tests/auto/quick/qquicklistview/data/emptymodel.qml
new file mode 100644
index 0000000000..16bcd3f9ae
--- /dev/null
+++ b/tests/auto/quick/qquicklistview/data/emptymodel.qml
@@ -0,0 +1,23 @@
+import QtQuick 2.0
+Rectangle {
+ ListModel {
+ id: model
+ ListElement { name: "hello"}
+ }
+ ListView {
+ id: list
+ model: model
+ delegate: Item {
+ }
+ }
+ function remove() {
+ model.remove(0)
+ isCurrentItemNull = list.currentItem === null //check no seg fault
+ }
+
+ function add() {
+ model.append({name: "hello"})
+ isCurrentItemNull = list.currentItem === null
+ }
+ property bool isCurrentItemNull
+}
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
index 9fad01ef40..3b4a41e203 100644
--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
@@ -206,6 +206,8 @@ private slots:
void destroyItemOnCreation();
void parentBinding();
+ void defaultHighlightMoveDuration();
+ void accessEmptyCurrentItem_QTBUG_30227();
private:
template <class T> void items(const QUrl &source, bool forceLayout);
@@ -6801,6 +6803,33 @@ void tst_QQuickListView::parentBinding()
delete window;
}
+void tst_QQuickListView::defaultHighlightMoveDuration()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0; ListView {}", QUrl::fromLocalFile(""));
+
+ QObject *obj = component.create();
+ QVERIFY(obj);
+
+ QCOMPARE(obj->property("highlightMoveDuration").toInt(), -1);
+}
+
+void tst_QQuickListView::accessEmptyCurrentItem_QTBUG_30227()
+{
+ QQuickView *window = createView();
+ window->setSource(testFileUrl("emptymodel.qml"));
+
+ QQuickListView *listview = window->rootObject()->findChild<QQuickListView*>();
+ QTRY_VERIFY(listview != 0);
+
+ QMetaObject::invokeMethod(window->rootObject(), "remove");
+ QVERIFY(window->rootObject()->property("isCurrentItemNull").toBool());
+
+ QMetaObject::invokeMethod(window->rootObject(), "add");
+ QVERIFY(!window->rootObject()->property("isCurrentItemNull").toBool());
+}
+
QTEST_MAIN(tst_QQuickListView)
#include "tst_qquicklistview.moc"
diff --git a/tests/auto/quick/qquickloader/data/BigComponent.qml b/tests/auto/quick/qquickloader/data/BigComponent.qml
index df92532c43..490079ed34 100644
--- a/tests/auto/quick/qquickloader/data/BigComponent.qml
+++ b/tests/auto/quick/qquickloader/data/BigComponent.qml
@@ -1,5015 +1,6 @@
import QtQuick 2.0
+import LoaderTest 1.0
Item {
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
- Item {}
+ SlowComponent {}
}
diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp
index a28db9eaf8..d01e8aae52 100644
--- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp
+++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp
@@ -52,6 +52,15 @@
#define SERVER_PORT 14458
#define SERVER_ADDR "http://localhost:14458"
+class SlowComponent : public QQmlComponent
+{
+ Q_OBJECT
+public:
+ SlowComponent() {
+ QTest::qSleep(500);
+ }
+};
+
class PeriodicIncubationController : public QObject,
public QQmlIncubationController
{
@@ -81,6 +90,8 @@ public:
tst_QQuickLoader();
private slots:
+ void cleanup();
+
void sourceOrComponent();
void sourceOrComponent_data();
void clear();
@@ -120,9 +131,15 @@ private:
QQmlEngine engine;
};
+void tst_QQuickLoader::cleanup()
+{
+ // clear components. otherwise we even bypass the test server by using the cache.
+ engine.clearComponentCache();
+}
tst_QQuickLoader::tst_QQuickLoader()
{
+ qmlRegisterType<SlowComponent>("LoaderTest", 1, 0, "SlowComponent");
}
void tst_QQuickLoader::sourceOrComponent()
@@ -462,12 +479,14 @@ void tst_QQuickLoader::networkComponent()
" Component { id: comp; NW.Rect120x60 {} }\n"
" Loader { sourceComponent: comp } }")
, dataDirectory());
+ QCOMPARE(component.status(), QQmlComponent::Loading);
+ server.sendDelayedItem();
QTRY_COMPARE(component.status(), QQmlComponent::Ready);
QQuickItem *item = qobject_cast<QQuickItem*>(component.create());
QVERIFY(item);
- QQuickLoader *loader = qobject_cast<QQuickLoader*>(item->QQuickItem::children().at(1));
+ QQuickLoader *loader = qobject_cast<QQuickLoader*>(item->children().at(1));
QVERIFY(loader);
QTRY_VERIFY(loader->status() == QQuickLoader::Ready);
@@ -1024,6 +1043,11 @@ void tst_QQuickLoader::simultaneousSyncAsync()
void tst_QQuickLoader::loadedSignal()
{
+ PeriodicIncubationController *controller = new PeriodicIncubationController;
+ QQmlIncubationController *previous = engine.incubationController();
+ engine.setIncubationController(controller);
+ delete previous;
+
{
// ensure that triggering loading (by setting active = true)
// and then immediately setting active to false, causes the
@@ -1042,8 +1066,9 @@ void tst_QQuickLoader::loadedSignal()
QVERIFY(obj->property("success").toBool());
QMetaObject::invokeMethod(obj, "triggerMultipleLoad");
+ controller->start();
QTest::qWait(100);
- QCOMPARE(obj->property("loadCount").toInt(), 1); // only one loaded signal should be emitted.
+ QTRY_COMPARE(obj->property("loadCount").toInt(), 1); // only one loaded signal should be emitted.
QVERIFY(obj->property("success").toBool());
delete obj;
diff --git a/tests/auto/quick/qquickmousearea/data/nestedStopAtBounds.qml b/tests/auto/quick/qquickmousearea/data/nestedStopAtBounds.qml
new file mode 100644
index 0000000000..1fd39bb321
--- /dev/null
+++ b/tests/auto/quick/qquickmousearea/data/nestedStopAtBounds.qml
@@ -0,0 +1,44 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 400
+ height: 400
+
+ MouseArea {
+ id: outer
+ objectName: "outer"
+ x: 50
+ y: 50
+ width: 300
+ height: 300
+
+ drag.target: outer
+ drag.filterChildren: true
+
+ Rectangle {
+ anchors.fill: parent
+ color: "yellow"
+ }
+
+ MouseArea {
+ id: inner
+ objectName: "inner"
+
+ x: 0
+ y: 0
+ width: 200
+ height: 200
+
+ drag.target: inner
+ drag.minimumX: 0
+ drag.maximumX: 100
+ drag.minimumY: 0
+ drag.maximumY: 100
+
+ Rectangle {
+ anchors.fill: parent
+ color: "blue"
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index 37ce0fd394..055facc9e1 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -89,6 +89,8 @@ private slots:
void cursorShape();
#endif
void moveAndReleaseWithoutPress();
+ void nestedStopAtBounds();
+ void nestedStopAtBounds_data();
private:
void acceptedButton_data();
@@ -274,20 +276,22 @@ void tst_QQuickMouseArea::dragging()
// First move event triggers drag, second is acted upon.
// This is due to possibility of higher stacked area taking precedence.
-
+ // The item is moved relative to the position of the mouse when the drag
+ // was triggered, this prevents a sudden change in position when the drag
+ // threshold is exceeded.
QTest::mouseMove(window, QPoint(111,111), 50);
QTest::mouseMove(window, QPoint(116,116), 50);
QTest::mouseMove(window, QPoint(122,122), 50);
QTRY_VERIFY(drag->active());
- QTRY_COMPARE(blackRect->x(), 72.0);
- QCOMPARE(blackRect->y(), 72.0);
+ QTRY_COMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
QTest::mouseRelease(window, button, 0, QPoint(122,122));
QTRY_VERIFY(!drag->active());
- QCOMPARE(blackRect->x(), 72.0);
- QCOMPARE(blackRect->y(), 72.0);
+ QCOMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
delete window;
}
@@ -382,14 +386,14 @@ void tst_QQuickMouseArea::setDragOnPressed()
QTest::qWait(50);
QVERIFY(drag->active());
- QCOMPARE(target->x(), 72.0);
+ QCOMPARE(target->x(), 61.0);
QCOMPARE(target->y(), 50.0);
QTest::mouseRelease(window, Qt::LeftButton, 0, QPoint(122,122));
QTest::qWait(50);
QVERIFY(!drag->active());
- QCOMPARE(target->x(), 72.0);
+ QCOMPARE(target->x(), 61.0);
QCOMPARE(target->y(), 50.0);
delete window;
@@ -1050,8 +1054,8 @@ void tst_QQuickMouseArea::disableAfterPress()
QTRY_COMPARE(mousePositionSpy.count(), 2);
QVERIFY(drag->active());
- QCOMPARE(blackRect->x(), 72.0);
- QCOMPARE(blackRect->y(), 72.0);
+ QCOMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
mouseArea->setEnabled(false);
@@ -1063,8 +1067,8 @@ void tst_QQuickMouseArea::disableAfterPress()
QTRY_COMPARE(mousePositionSpy.count(), 4);
QVERIFY(drag->active());
- QCOMPARE(blackRect->x(), 94.0);
- QCOMPARE(blackRect->y(), 94.0);
+ QCOMPARE(blackRect->x(), 83.0);
+ QCOMPARE(blackRect->y(), 83.0);
QVERIFY(mouseArea->pressed());
QVERIFY(mouseArea->hovered());
@@ -1074,8 +1078,8 @@ void tst_QQuickMouseArea::disableAfterPress()
QTRY_COMPARE(mouseReleaseSpy.count(), 1);
QVERIFY(!drag->active());
- QCOMPARE(blackRect->x(), 94.0);
- QCOMPARE(blackRect->y(), 94.0);
+ QCOMPARE(blackRect->x(), 83.0);
+ QCOMPARE(blackRect->y(), 83.0);
QVERIFY(!mouseArea->pressed());
QVERIFY(!mouseArea->hovered()); // since hover is not enabled
@@ -1346,25 +1350,25 @@ void tst_QQuickMouseArea::changeAxis()
QTest::mouseMove(view, QPoint(122, 122));
QTRY_VERIFY(drag->active());
- QCOMPARE(blackRect->x(), 72.0);
- QCOMPARE(blackRect->y(), 72.0);
+ QCOMPARE(blackRect->x(), 61.0);
+ QCOMPARE(blackRect->y(), 61.0);
QCOMPARE(drag->axis(), QQuickDrag::XAndYAxis);
/* When blackRect.x becomes bigger than 75, the drag axis is changed to
* Drag.YAxis by the QML code. Verify that this happens, and that the drag
* movement is effectively constrained to the Y axis. */
- QTest::mouseMove(view, QPoint(133, 133));
+ QTest::mouseMove(view, QPoint(144, 144));
QTRY_COMPARE(blackRect->x(), 83.0);
QTRY_COMPARE(blackRect->y(), 83.0);
QTRY_COMPARE(drag->axis(), QQuickDrag::YAxis);
- QTest::mouseMove(view, QPoint(144, 144));
+ QTest::mouseMove(view, QPoint(155, 155));
QTRY_COMPARE(blackRect->y(), 94.0);
QCOMPARE(blackRect->x(), 83.0);
- QTest::mouseRelease(view, Qt::LeftButton, 0, QPoint(144, 144));
+ QTest::mouseRelease(view, Qt::LeftButton, 0, QPoint(155, 155));
QTRY_VERIFY(!drag->active());
QCOMPARE(blackRect->x(), 83.0);
@@ -1426,6 +1430,72 @@ void tst_QQuickMouseArea::moveAndReleaseWithoutPress()
delete window;
}
+void tst_QQuickMouseArea::nestedStopAtBounds_data()
+{
+ QTest::addColumn<bool>("transpose");
+ QTest::addColumn<bool>("invert");
+
+ QTest::newRow("left") << false << false;
+ QTest::newRow("right") << false << true;
+ QTest::newRow("top") << true << false;
+ QTest::newRow("bottom") << true << true;
+}
+
+void tst_QQuickMouseArea::nestedStopAtBounds()
+{
+ QFETCH(bool, transpose);
+ QFETCH(bool, invert);
+
+ QQuickView view;
+ view.setSource(testFileUrl("nestedStopAtBounds.qml"));
+ view.show();
+ view.requestActivate();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+ QVERIFY(view.rootObject());
+
+ QQuickMouseArea *outer = view.rootObject()->findChild<QQuickMouseArea*>("outer");
+ QVERIFY(outer);
+
+ QQuickMouseArea *inner = outer->findChild<QQuickMouseArea*>("inner");
+ QVERIFY(inner);
+ inner->drag()->setAxis(transpose ? QQuickDrag::YAxis : QQuickDrag::XAxis);
+ inner->setX(invert ? 100 : 0);
+ inner->setY(invert ? 100 : 0);
+
+ const int threshold = qApp->styleHints()->startDragDistance();
+
+ QPoint position(200, 200);
+ int &axis = transpose ? position.ry() : position.rx();
+
+ // drag toward the aligned boundary. Outer mouse area dragged.
+ QTest::mousePress(&view, Qt::LeftButton, 0, position);
+ QTest::qWait(10);
+ axis += invert ? threshold * 2 : -threshold * 2;
+ QTest::mouseMove(&view, position);
+ axis += invert ? threshold : -threshold;
+ QTest::mouseMove(&view, position);
+ QCOMPARE(outer->drag()->active(), true);
+ QCOMPARE(inner->drag()->active(), false);
+ QTest::mouseRelease(&view, Qt::LeftButton, 0, position);
+
+ QVERIFY(!outer->drag()->active());
+
+ axis = 200;
+ outer->setX(50);
+ outer->setY(50);
+
+ // drag away from the aligned boundary. Inner mouse area dragged.
+ QTest::mousePress(&view, Qt::LeftButton, 0, position);
+ QTest::qWait(10);
+ axis += invert ? -threshold * 2 : threshold * 2;
+ QTest::mouseMove(&view, position);
+ axis += invert ? -threshold : threshold;
+ QTest::mouseMove(&view, position);
+ QCOMPARE(outer->drag()->active(), false);
+ QCOMPARE(inner->drag()->active(), true);
+ QTest::mouseRelease(&view, Qt::LeftButton, 0, position);
+}
+
QTEST_MAIN(tst_QQuickMouseArea)
#include "tst_qquickmousearea.moc"
diff --git a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp
index f52d5281a2..75bd468aef 100644
--- a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp
+++ b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp
@@ -419,6 +419,7 @@ void tst_qquickpixmapcache::lockingCrash()
p->clear();
QVERIFY(p->isNull());
delete p;
+ server.sendDelayedItem();
}
}
diff --git a/tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml b/tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml
new file mode 100644
index 0000000000..d0183ad00c
--- /dev/null
+++ b/tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml
@@ -0,0 +1,12 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 300; height: 300;
+ Rectangle {
+ objectName: "theRect"
+ color: "red"
+ width: 60; height: 60;
+ x: 100; y: 100;
+ SmoothedAnimation on x { objectName: "easeX"; to: 200; duration: 0 }
+ }
+}
diff --git a/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp b/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp
index 935543cc34..705ee5cf46 100644
--- a/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp
+++ b/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp
@@ -60,6 +60,7 @@ private slots:
void valueSource();
void behavior();
void deleteOnUpdate();
+ void zeroDuration();
private:
QQmlEngine engine;
@@ -237,6 +238,28 @@ void tst_qquicksmoothedanimation::deleteOnUpdate()
delete rect;
}
+void tst_qquicksmoothedanimation::zeroDuration()
+{
+ QQmlEngine engine;
+
+ QQmlComponent c(&engine, testFileUrl("smoothedanimationZeroDuration.qml"));
+
+ QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QQuickRectangle *theRect = rect->findChild<QQuickRectangle*>("theRect");
+ QVERIFY(theRect);
+
+ QQuickSmoothedAnimation *easeX = rect->findChild<QQuickSmoothedAnimation*>("easeX");
+ QVERIFY(easeX);
+ QVERIFY(easeX->isRunning());
+
+ QTRY_VERIFY(!easeX->isRunning());
+ QTRY_COMPARE(theRect->x(), qreal(200));
+
+ delete rect;
+}
+
QTEST_MAIN(tst_qquicksmoothedanimation)
#include "tst_qquicksmoothedanimation.moc"
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index 78ae94e53e..c0fd1e94a5 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -1872,6 +1872,8 @@ void tst_qquicktextedit::mouseSelection()
QTest::mouseRelease(&window, Qt::LeftButton, Qt::NoModifier, p2);
QTRY_COMPARE(textEditObject->selectedText(), selectedText);
+ QTest::qWait(QGuiApplication::styleHints()->mouseDoubleClickInterval() + 10);
+
// Clicking and shift to clicking between the same points should select the same text.
textEditObject->setCursorPosition(0);
if (clicks > 1)
@@ -2351,6 +2353,7 @@ void tst_qquicktextedit::remoteCursorDelegate()
QCOMPARE(component.status(), QQmlComponent::Loading);
QVERIFY(!textEditObject->findChild<QQuickItem*>("cursorInstance"));
+ server.sendDelayedItem();
// Wait for component to load.
QTRY_COMPARE(component.status(), QQmlComponent::Ready);
diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
index 86a05c3d3b..339aa5854d 100644
--- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
+++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp
@@ -2774,7 +2774,7 @@ void tst_qquicktextinput::cursorDelegate()
void tst_qquicktextinput::remoteCursorDelegate()
{
TestHTTPServer server(SERVER_PORT);
- server.serveDirectory(dataDirectory());
+ server.serveDirectory(dataDirectory(), TestHTTPServer::Delay);
QQuickView view;
@@ -2797,6 +2797,7 @@ void tst_qquicktextinput::remoteCursorDelegate()
QCOMPARE(component.status(), QQmlComponent::Loading);
QVERIFY(!textInputObject->findChild<QQuickItem*>("cursorInstance"));
+ server.sendDelayedItem();
// Wait for component to load.
QTRY_COMPARE(component.status(), QQmlComponent::Ready);
diff --git a/tests/auto/shared/testhttpserver.cpp b/tests/auto/shared/testhttpserver.cpp
index 461e0e70d2..205d5cec5d 100644
--- a/tests/auto/shared/testhttpserver.cpp
+++ b/tests/auto/shared/testhttpserver.cpp
@@ -284,6 +284,11 @@ bool TestHTTPServer::reply(QTcpSocket *socket, const QByteArray &fileName)
return true;
}
+void TestHTTPServer::sendDelayedItem()
+{
+ sendOne();
+}
+
void TestHTTPServer::sendOne()
{
if (!toSend.isEmpty()) {
diff --git a/tests/auto/shared/testhttpserver.h b/tests/auto/shared/testhttpserver.h
index 1abf37e438..15e08afd0c 100644
--- a/tests/auto/shared/testhttpserver.h
+++ b/tests/auto/shared/testhttpserver.h
@@ -64,6 +64,9 @@ public:
void addAlias(const QString &filename, const QString &aliasName);
void addRedirect(const QString &filename, const QString &redirectName);
+ // In Delay mode, each item needs one call to this function to be sent
+ void sendDelayedItem();
+
private slots:
void newConnection();
void disconnected();