Q_Q(QQuickGridView);
bool created = false;
if (!footer) {
- QQuickItem *item = createComponentItem(footerComponent);
+ QQuickItem *item = createComponentItem(footerComponent, 1.0);
if (!item)
return;
- item->setZ(1);
footer = new FxGridItemSG(item, q, true, true);
created = true;
}
Q_Q(QQuickGridView);
bool created = false;
if (!header) {
- QQuickItem *item = createComponentItem(headerComponent);
+ QQuickItem *item = createComponentItem(headerComponent, 1.0);
if (!item)
return;
- item->setZ(1);
header = new FxGridItemSG(item, q, true, true);
created = true;
}
QQuickItem *QQuickItemViewPrivate::createHighlightItem()
{
- return createComponentItem(highlightComponent, true);
+ return createComponentItem(highlightComponent, 0.0, true);
}
-QQuickItem *QQuickItemViewPrivate::createComponentItem(QQmlComponent *component, bool createDefault)
+QQuickItem *QQuickItemViewPrivate::createComponentItem(QQmlComponent *component, qreal zValue, bool createDefault)
{
Q_Q(QQuickItemView);
QQmlContext *creationContext = component->creationContext();
QQmlContext *context = new QQmlContext(
creationContext ? creationContext : qmlContext(q));
- QObject *nobj = component->create(context);
+ QObject *nobj = component->beginCreate(context);
if (nobj) {
QQml_setParent_noEvent(context, nobj);
item = qobject_cast<QQuickItem *>(nobj);
item = new QQuickItem;
}
if (item) {
+ item->setZ(zValue);
QQml_setParent_noEvent(item, q->contentItem());
item->setParentItem(q->contentItem());
}
+ if (component)
+ component->completeCreate();
return item;
}
virtual bool releaseItem(FxViewItem *item);
QQuickItem *createHighlightItem();
- QQuickItem *createComponentItem(QQmlComponent *component, bool createDefault = false);
+ QQuickItem *createComponentItem(QQmlComponent *component, qreal zValue, bool createDefault = false);
void updateCurrent(int modelIndex);
void updateTrackedItem();
Q_Q(QQuickListView);
bool created = false;
if (!footer) {
- QQuickItem *item = createComponentItem(footerComponent);
+ QQuickItem *item = createComponentItem(footerComponent, 1.0);
if (!item)
return;
- item->setZ(1);
footer = new FxListItemSG(item, q, true, true);
created = true;
}
Q_Q(QQuickListView);
bool created = false;
if (!header) {
- QQuickItem *item = createComponentItem(headerComponent);
+ QQuickItem *item = createComponentItem(headerComponent, 1.0);
if (!item)
return;
- item->setZ(1);
header = new FxListItemSG(item, q, true, true);
created = true;
}
--- /dev/null
+import QtQuick 2.0
+
+Rectangle {
+ width: 240
+ height: 320
+
+ GridView {
+ id: grid
+
+ property real initialZ: 342
+
+ anchors.fill: parent
+ objectName: "grid"
+ model: ListModel {}
+
+ delegate: Text {
+ objectName: "wrapper"
+ font.pointSize: 20
+ text: index
+ }
+
+ header: Rectangle {
+ width: 240
+ height: 30
+ z: grid.initialZ
+ }
+
+ footer: Rectangle {
+ width: 240
+ height: 30
+ z: grid.initialZ
+ }
+ }
+}
+
void manualHighlight();
void footer();
void footer_data();
+ void initialZValues();
void header();
void header_data();
void extents();
<< QPointF(-(6 * 80) - 40, -320);
}
+void tst_QQuickGridView::initialZValues()
+{
+ QQuickView *canvas = createView();
+ canvas->setSource(testFileUrl("initialZValues.qml"));
+ qApp->processEvents();
+
+ QQuickGridView *gridview = findItem<QQuickGridView>(canvas->rootObject(), "grid");
+ QTRY_VERIFY(gridview != 0);
+ QQuickItem *contentItem = gridview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+
+ QVERIFY(gridview->headerItem());
+ QTRY_COMPARE(gridview->headerItem()->z(), gridview->property("initialZ").toReal());
+
+ QVERIFY(gridview->footerItem());
+ QTRY_COMPARE(gridview->footerItem()->z(), gridview->property("initialZ").toReal());
+
+ delete canvas;
+}
+
void tst_QQuickGridView::header()
{
QFETCH(QQuickGridView::Flow, flow);
--- /dev/null
+import QtQuick 2.0
+
+Rectangle {
+ width: 240
+ height: 320
+
+ ListView {
+ id: list
+
+ property real initialZ: 342
+
+ anchors.fill: parent
+ objectName: "list"
+ model: ListModel {}
+
+ delegate: Text {
+ objectName: "wrapper"
+ font.pointSize: 20
+ text: index
+ }
+
+ header: Rectangle {
+ width: 240
+ height: 30
+ z: list.initialZ
+ }
+
+ footer: Rectangle {
+ width: 240
+ height: 30
+ z: list.initialZ
+ }
+ }
+}
+
void componentChanges();
void modelChanges();
void manualHighlight();
+ void initialZValues();
void header();
void header_data();
void header_delayItemCreation();
delete testObject;
}
+void tst_QQuickListView::initialZValues()
+{
+ QQuickView *canvas = createView();
+ canvas->setSource(testFileUrl("initialZValues.qml"));
+ qApp->processEvents();
+
+ QQuickListView *listview = findItem<QQuickListView>(canvas->rootObject(), "list");
+ QTRY_VERIFY(listview != 0);
+ QQuickItem *contentItem = listview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+
+ QVERIFY(listview->headerItem());
+ QTRY_COMPARE(listview->headerItem()->z(), listview->property("initialZ").toReal());
+
+ QVERIFY(listview->footerItem());
+ QTRY_COMPARE(listview->footerItem()->z(), listview->property("initialZ").toReal());
+
+ delete canvas;
+}
+
void tst_QQuickListView::header()
{
QFETCH(QQuickListView::Orientation, orientation);