summaryrefslogtreecommitdiff
path: root/tests/auto/controls/data/tst_gridlayout.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/controls/data/tst_gridlayout.qml')
-rw-r--r--tests/auto/controls/data/tst_gridlayout.qml1026
1 files changed, 0 insertions, 1026 deletions
diff --git a/tests/auto/controls/data/tst_gridlayout.qml b/tests/auto/controls/data/tst_gridlayout.qml
deleted file mode 100644
index b6bbd7d9..00000000
--- a/tests/auto/controls/data/tst_gridlayout.qml
+++ /dev/null
@@ -1,1026 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of The Qt Company Ltd nor the names of its
-** contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.2
-import QtTest 1.0
-import QtQuick.Layouts 1.1
-
-Item {
- id: container
- width: 200
- height: 200
- TestCase {
- id: testCase
- name: "Tests_GridLayout"
- when: windowShown
- width: 200
- height: 200
-
- Component {
- id: layout_flow_Component
- GridLayout {
- columns: 4
- columnSpacing: 0
- rowSpacing: 0
- Repeater {
- model: 6
- Rectangle {
- property var itemRect: [x, y, width, height]
- color: "red"
- Layout.preferredWidth: 10
- Layout.preferredHeight: 10
- Text { text: index }
- }
- }
- }
- }
-
- function test_flow()
- {
- var layout = layout_flow_Component.createObject(container);
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [10, 0, 10, 10])
- tryCompare(layout.children[2], "itemRect", [20, 0, 10, 10])
- tryCompare(layout.children[3], "itemRect", [30, 0, 10, 10])
-
- tryCompare(layout.children[4], "itemRect", [ 0, 10, 10, 10])
- tryCompare(layout.children[5], "itemRect", [10, 10, 10, 10])
-
- layout.rows = 4
- layout.flow = GridLayout.TopToBottom
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [ 0, 10, 10, 10])
- tryCompare(layout.children[2], "itemRect", [ 0, 20, 10, 10])
- tryCompare(layout.children[3], "itemRect", [ 0, 30, 10, 10])
-
- tryCompare(layout.children[4], "itemRect", [10, 0, 10, 10])
- tryCompare(layout.children[5], "itemRect", [10, 10, 10, 10])
-
- layout.destroy()
- }
-
- Component {
- id: layout_flowLeftToRight_Component
- GridLayout {
- columns: 4
- columnSpacing: 0
- rowSpacing: 0
- // red rectangles are auto-positioned
- // black rectangles are explicitly positioned with row,column
- Rectangle {
- // First one should auto position itself at (0,0)
- id: r1
- color: "red"
- width: 20
- height: 20
- }
- Rectangle {
- // (1,1)
- id: r2
- color: "black"
- width: 20
- height: 20
- Layout.row: 1
- Layout.column: 1
- Layout.rowSpan: 2
- Layout.columnSpan: 2
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
- Rectangle {
- // (0,1)
- id: r3
- color: "black"
- width: 20
- height: 20
- Layout.row: 0
- Layout.column: 1
- }
- Rectangle {
- // This one won't fit on the left and right sides of the big black box
- // inserted at (3,0)
- id: r4
- color: "red"
- width: 20
- height: 20
- Layout.columnSpan: 2
- Layout.rowSpan: 2
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
- Rectangle {
- // continue flow from (0,2)
- id: r5
- color: "black"
- width: 20
- height: 20
- Layout.row: 0
- Layout.column: 2
- }
- Repeater {
- // ...and let the rest of the items automatically fill in the empty cells
- model: 8
- Rectangle {
- color: "red"
- width: 20
- height: 20
- Text { text: index }
- }
- }
- }
- }
-
- function test_flowLeftToRight() {
- var layout = layout_flowLeftToRight_Component.createObject(container);
- compare(layout.implicitWidth, 80);
- compare(layout.children[0].x, 0);
- compare(layout.children[0].y, 0);
- compare(layout.children[1].x, 20);
- compare(layout.children[1].y, 20);
- compare(layout.children[2].x, 20);
- compare(layout.children[2].y, 0);
- compare(layout.children[3].x, 0);
- compare(layout.children[3].y, 60);
- compare(layout.children[4].x, 40);
- compare(layout.children[4].y, 0);
-
- // assumes that the repeater is the last item among the items it creates
- compare(layout.children[5].x, 60);
- compare(layout.children[5].y, 00);
- compare(layout.children[6].x, 00);
- compare(layout.children[6].y, 20);
- compare(layout.children[7].x, 60);
- compare(layout.children[7].y, 20);
- compare(layout.children[8].x, 00);
- compare(layout.children[8].y, 40);
- compare(layout.children[9].x, 60);
- compare(layout.children[9].y, 40);
- compare(layout.children[10].x, 40);
- compare(layout.children[10].y, 60);
- compare(layout.children[11].x, 60);
- compare(layout.children[11].y, 60);
- compare(layout.children[12].x, 40);
- compare(layout.children[12].y, 80);
-
- layout.destroy();
- }
-
-
- Component {
- id: layout_flowLeftToRightDefaultPositions_Component
- GridLayout {
- columns: 2
- columnSpacing: 0
- rowSpacing: 0
- // red rectangles are auto-positioned
- // black rectangles are explicitly positioned with row,column
- // gray rectangles are items with just one row or just one column specified
- Rectangle {
- // First one should auto position itself at (0,0)
- id: r1
- color: "red"
- width: 20
- height: 20
- }
- Rectangle {
- // (1,0)
- id: r2
- color: "gray"
- width: 20
- height: 20
- Layout.row: 1
- }
- Rectangle {
- // (1,1)
- id: r3
- color: "black"
- width: 20
- height: 20
- Layout.row: 1
- Layout.column: 1
- }
- Rectangle {
- // (1,0), warning emitted
- id: r4
- color: "gray"
- width: 20
- height: 20
- Layout.row: 1
- }
- }
- }
-
- function test_flowLeftToRightDefaultPositions() {
- ignoreWarning("QGridLayoutEngine::addItem: Cell (1, 0) already taken");
- var layout = layout_flowLeftToRightDefaultPositions_Component.createObject(container);
- compare(layout.implicitWidth, 40);
- compare(layout.children[0].x, 0);
- compare(layout.children[0].y, 0);
- compare(layout.children[1].x, 0);
- compare(layout.children[1].y, 20);
- compare(layout.children[2].x, 20);
- compare(layout.children[2].y, 20);
- layout.destroy();
- }
-
-
- Component {
- id: layout_flowTopToBottom_Component
- GridLayout {
- rows: 4
- columnSpacing: 0
- rowSpacing: 0
- flow: GridLayout.TopToBottom
- // red rectangles are auto-positioned
- // black rectangles are explicitly positioned with row,column
- Rectangle {
- // First one should auto position itself at (0,0)
- id: r1
- color: "red"
- width: 20
- height: 20
- }
- Rectangle {
- // (1,1)
- id: r2
- color: "black"
- width: 20
- height: 20
- Layout.row: 1
- Layout.column: 1
- Layout.rowSpan: 2
- Layout.columnSpan: 2
- Layout.fillHeight: true
- Layout.fillWidth: true
- }
- Rectangle {
- // (2,0)
- id: r3
- color: "black"
- width: 20
- height: 20
- Layout.row: 2
- Layout.column: 0
- }
- Rectangle {
- // This one won't fit on the left and right sides of the big black box
- // inserted at (0,3)
- id: r4
- color: "red"
- width: 20
- height: 20
- Layout.rowSpan: 2
- Layout.fillHeight: true
- }
- Rectangle {
- // continue flow from (1,0)
- id: r5
- color: "black"
- width: 20
- height: 20
- Layout.row: 1
- Layout.column: 0
- }
- Repeater {
- // ...and let the rest of the items automatically fill in the empty cells
- model: 8
- Rectangle {
- color: "red"
- width: 20
- height: 20
- Text { text: index }
- }
- }
- }
- }
-
- function test_flowTopToBottom() {
- var layout = layout_flowTopToBottom_Component.createObject(container);
- compare(layout.children[0].x, 0);
- compare(layout.children[0].y, 0);
- compare(layout.children[1].x, 20);
- compare(layout.children[1].y, 20);
- compare(layout.children[2].x, 0);
- compare(layout.children[2].y, 40);
- compare(layout.children[3].x, 60);
- compare(layout.children[3].y, 0);
- compare(layout.children[4].x, 0);
- compare(layout.children[4].y, 20);
-
- // The repeated items
- compare(layout.children[5].x, 0);
- compare(layout.children[5].y, 60);
- compare(layout.children[6].x, 20);
- compare(layout.children[6].y, 0);
- compare(layout.children[7].x, 20);
- compare(layout.children[7].y, 60);
- compare(layout.children[8].x, 40);
- compare(layout.children[8].y, 0);
- compare(layout.children[9].x, 40);
- compare(layout.children[9].y, 60);
- compare(layout.children[10].x, 60);
- compare(layout.children[10].y, 40);
- compare(layout.children[11].x, 60);
- compare(layout.children[11].y, 60);
- compare(layout.children[12].x, 80);
- compare(layout.children[12].y, 0);
-
- layout.destroy();
- }
-
- Component {
- id: layout_spanAcrossEmptyRows_Component
- /* This test has a large number of empty rows and columns, but there is one item
- that spans across some of these empty rows/columns.
- Do not modify (especially do not add items unless you understand what this is
- testing)
- */
-
- GridLayout {
- columnSpacing: 0
- rowSpacing: 0
- // black rectangles are explicitly positioned with row,column
- Rectangle {
- // (0,0)
- id: r0
- color: "black"
- Layout.row: 0
- Layout.column: 0
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.maximumWidth: 40
- Layout.maximumHeight: 40
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- Rectangle {
- // (0,1)
- id: r1
- color: "black"
- Layout.row: 0
- Layout.column: 1
- Layout.columnSpan: 2
- Layout.rowSpan: 2
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.maximumWidth: 40
- Layout.maximumHeight: 40
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- Rectangle {
- // (0,99)
- id: r2
- color: "black"
- Layout.row: 0
- Layout.column: 99
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.maximumWidth: 40
- Layout.maximumHeight: 40
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- }
- }
-
- function test_spanAcrossEmptyRows() {
- var layout = layout_spanAcrossEmptyRows_Component.createObject(container);
- compare(layout.children[0].x, 0);
- compare(layout.children[0].y, 0);
- compare(layout.children[1].x, 20);
- compare(layout.children[1].y, 0);
- compare(layout.children[2].x, 40);
- compare(layout.children[2].y, 0);
-
- compare(layout.implicitWidth, 60);
- compare(layout.Layout.maximumWidth, 120);
-
- layout.destroy();
- }
-
- Component {
- id: layout_spanIsMoreThanColumns_Component
-
- GridLayout {
- columnSpacing: 1
- rowSpacing: 1
- columns: 2
-
- Rectangle {
- implicitWidth: 10
- implicitHeight: 10
- Layout.columnSpan: 3
- }
- }
- }
-
- function test_spanIsMoreThanColumns() {
- var layout = layout_spanIsMoreThanColumns_Component.createObject(container);
- // item was not added, therefore implicit width is 0
- compare(layout.implicitWidth, 0);
- layout.destroy();
- }
-
- function test_sizeHints() {
- var layout = layout_spanAcrossEmptyRows_Component.createObject(container);
- compare(layout.visible, true)
-
- var minWidth = layout.Layout.minimumWidth
- var minHeight = layout.Layout.minimumHeight
-
- var prefWidth = layout.implicitWidth
- var prefHeight = layout.implicitHeight
-
- var maxWidth = layout.Layout.maximumWidth
- var maxHeight = layout.Layout.maximumHeight
-
- layout.visible = false
- compare(minWidth, layout.Layout.minimumWidth)
- compare(minHeight, layout.Layout.minimumHeight)
- compare(prefWidth, layout.implicitWidth)
- compare(prefHeight, layout.implicitHeight)
- compare(maxWidth, layout.Layout.maximumWidth)
- compare(maxHeight, layout.Layout.maximumHeight)
-
- layout.destroy();
- }
-
- Component {
- id: layout_alignment_Component
- GridLayout {
- columns: 2
- columnSpacing: 0
- rowSpacing: 0
- Rectangle {
- // First one should auto position itself at (0,0)
- property var itemRect: [x, y, width, height]
- color: "red"
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- Rectangle {
- // (0,1)
- property var itemRect: [x, y, width, height]
- color: "red"
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.alignment: Qt.AlignBottom
- }
- Rectangle {
- // (1,0)
- property var itemRect: [x, y, width, height]
- color: "red"
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.alignment: Qt.AlignRight
- }
- Rectangle {
- // (1,1)
- property var itemRect: [x, y, width, height]
- color: "red"
- Layout.preferredWidth: 10
- Layout.preferredHeight: 10
- Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
- }
- Rectangle {
- // (2,0)
- property var itemRect: [x, y, width, height]
- color: "red"
- Layout.preferredWidth: 30
- Layout.preferredHeight: 30
- Layout.alignment: Qt.AlignRight
- Layout.columnSpan: 2
- }
- Rectangle {
- // (3,0)
- property var itemRect: [x, y, width, height]
- baselineOffset: 7
- color: "red"
- Layout.row: 3
- Layout.column: 0
- Layout.preferredWidth: 10
- Layout.preferredHeight: 10
- Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
- }
- Rectangle {
- // (3,1)
- property var itemRect: [x, y, width, height]
- baselineOffset: 7
- color: "red"
- Layout.preferredWidth: 10
- Layout.preferredHeight: 10
- Layout.alignment: Qt.AlignRight | Qt.AlignBaseline
- }
-
- }
- }
-
- function test_alignment()
- {
- var layout = layout_alignment_Component.createObject(container);
- layout.width = 60;
- layout.height = 100;
-
-
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 40, 40]);
- tryCompare(layout.children[1], "itemRect", [40, 20, 20, 20]);
- tryCompare(layout.children[2], "itemRect", [20, 40, 20, 20]);
- tryCompare(layout.children[3], "itemRect", [45, 40, 10, 10]);
- tryCompare(layout.children[4], "itemRect", [30, 60, 30, 30]);
- tryCompare(layout.children[5], "itemRect", [ 0, 90, 10, 10]);
- tryCompare(layout.children[6], "itemRect", [50, 90, 10, 10]);
-
-
- layout.children[1].Layout.alignment = Qt.AlignTop
- tryCompare(layout.children[1], "x", 40);
- tryCompare(layout.children[1], "y", 0);
-
- layout.children[2].Layout.alignment = Qt.AlignLeft
- tryCompare(layout.children[2], "x", 0);
- tryCompare(layout.children[2], "y", 40);
-
- layout.children[3].Layout.alignment = Qt.AlignLeft|Qt.AlignVCenter
- tryCompare(layout.children[3], "x", 40);
- tryCompare(layout.children[3], "y", 45);
-
- layout.children[4].Layout.alignment = Qt.AlignLeft
- tryCompare(layout.children[4], "x", 0);
- tryCompare(layout.children[4], "y", 60);
-
- layout.destroy();
- }
-
-
- Component {
- id: layout_rightToLeft_Component
- GridLayout {
- layoutDirection: Qt.RightToLeft
- columnSpacing: 0
- rowSpacing: 0
- columns: 3
- Rectangle {
- property var itemRect: [x, y, width, height]
- color: "#cbffc4"
- Layout.preferredWidth: 50
- Layout.preferredHeight: 50
- Layout.alignment: Qt.AlignCenter
- }
- Rectangle {
- property var itemRect: [x, y, width, height]
- color: "#c4d1ff"
- Layout.preferredWidth: 50
- Layout.preferredHeight: 50
- Layout.alignment: Qt.AlignRight
- }
- Rectangle {
- property var itemRect: [x, y, width, height]
- color: "#ffd5c4"
- Layout.preferredWidth: 50
- Layout.preferredHeight: 50
- Layout.alignment: Qt.AlignLeft
- }
- }
- }
-
- function verifyIsRightToLeft(layout)
- {
- tryCompare(layout.children[0], "itemRect", [125, 0, 50, 50]);
- tryCompare(layout.children[1], "itemRect", [60, 0, 50, 50]);
- tryCompare(layout.children[2], "itemRect", [10, 0, 50, 50]);
- }
-
- function verifyIsLeftToRight(layout)
- {
- tryCompare(layout.children[0], "itemRect", [5, 0, 50, 50]);
- tryCompare(layout.children[1], "itemRect", [70, 0, 50, 50]);
- tryCompare(layout.children[2], "itemRect", [120, 0, 50, 50]);
- }
-
- function test_rightToLeft()
- {
- var layout = layout_rightToLeft_Component.createObject(container);
- layout.width = 180;
- layout.height = 50;
-
- // Right To Left
- verifyIsRightToLeft(layout)
- layout.LayoutMirroring.enabled = true
- layout.layoutDirection = Qt.LeftToRight
- verifyIsRightToLeft(layout)
-
- // Left To Right
- layout.LayoutMirroring.enabled = false
- layout.layoutDirection = Qt.LeftToRight
- verifyIsLeftToRight(layout);
- layout.LayoutMirroring.enabled = true
- layout.layoutDirection = Qt.RightToLeft
- verifyIsLeftToRight(layout);
-
- layout.LayoutMirroring.enabled = false
- verifyIsRightToLeft(layout)
-
- layout.layoutDirection = Qt.LeftToRight
- verifyIsLeftToRight(layout);
-
- layout.LayoutMirroring.enabled = true
- verifyIsRightToLeft(layout)
-
- layout.destroy();
- }
-
- Component {
- id: layout_columnsOrRowsChanged_Component
- GridLayout {
- id: layout
- rowSpacing: 0
- columnSpacing: 0
- Repeater {
- model: 4
- Rectangle {
- property var itemRect: [x, y, width, height]
- width: 10
- height: 10
- color: "#ff0000"
- }
- }
- }
- }
-
- function test_columnsChanged()
- {
- var layout = layout_columnsOrRowsChanged_Component.createObject(container);
- layout.width = 40;
- layout.height = 20;
- tryCompare(layout.children[0], "itemRect", [ 0, 5, 10, 10])
- tryCompare(layout.children[1], "itemRect", [10, 5, 10, 10])
- tryCompare(layout.children[2], "itemRect", [20, 5, 10, 10])
- tryCompare(layout.children[3], "itemRect", [30, 5, 10, 10])
-
- layout.columns = 2
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [20, 0, 10, 10])
- tryCompare(layout.children[2], "itemRect", [ 0, 10, 10, 10])
- tryCompare(layout.children[3], "itemRect", [20, 10, 10, 10])
-
- layout.destroy()
- }
-
- function test_rowsChanged()
- {
- var layout = layout_columnsOrRowsChanged_Component.createObject(container);
- layout.flow = GridLayout.TopToBottom
- layout.width = 20;
- layout.height = 40;
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [ 0, 10, 10, 10])
- tryCompare(layout.children[2], "itemRect", [ 0, 20, 10, 10])
- tryCompare(layout.children[3], "itemRect", [ 0, 30, 10, 10])
-
- layout.rows = 2
- tryCompare(layout.children[0], "itemRect", [ 0, 5, 10, 10])
- tryCompare(layout.children[1], "itemRect", [ 0, 25, 10, 10])
- tryCompare(layout.children[2], "itemRect", [10, 5, 10, 10])
- tryCompare(layout.children[3], "itemRect", [10, 25, 10, 10])
-
- layout.destroy()
- }
-
- Component {
- id: layout_columnOrRowChanged_Component
- GridLayout {
- id: layout
- rowSpacing: 0
- columnSpacing: 0
- Rectangle {
- property var itemRect: [x, y, width, height]
- width: 10
- height: 10
- Layout.column: 0
- color: "#ff0000"
- }
- Rectangle {
- property var itemRect: [x, y, width, height]
- Layout.column: 1
- width: 10
- height: 10
- color: "#ff0000"
- }
- Rectangle {
- property var itemRect: [x, y, width, height]
- //Layout.column: 2
- width: 10
- height: 10
- color: "#ff0000"
- }
- }
- }
-
- function test_columnOrRowChanged()
- {
- var layout = layout_columnOrRowChanged_Component.createObject(container);
- layout.width = layout.implicitWidth
- layout.height = layout.implicitHeight
- // c0-c1-c2
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [10, 0, 10, 10])
- tryCompare(layout.children[2], "itemRect", [20, 0, 10, 10])
-
- layout.children[0].Layout.column = 3
- //c1-c2-c0
- tryCompare(layout.children[0], "itemRect", [20, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[2], "itemRect", [10, 0, 10, 10])
-
- layout.children[2].Layout.column = 4
- //c1-c0-c2
- tryCompare(layout.children[0], "itemRect", [10, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[2], "itemRect", [20, 0, 10, 10])
-
- layout.children[0].Layout.row = 1
- // two rows, so we adjust it to its new implicitHeight
- layout.height = layout.implicitHeight
- //c1 c2
- // c0
- tryCompare(layout.children[0], "itemRect", [10, 10, 10, 10])
- tryCompare(layout.children[1], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[2], "itemRect", [20, 0, 10, 10])
-
- layout.destroy()
- }
-
- Component {
- id: layout_baselines_Component
- GridLayout {
- id: layout
- columnSpacing: 0
- Rectangle {
- property var itemRect: [x, y, width, height]
- implicitWidth: 10
- implicitHeight: 10
- baselineOffset: 10
- }
- Rectangle {
- property var itemRect: [x, y, width, height]
- implicitWidth: 10
- implicitHeight: 10
- }
- }
- }
- function test_baselines()
- {
- var layout = layout_baselines_Component.createObject(container);
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [10, 0, 10, 10])
- compare(layout.implicitWidth, 20)
- compare(layout.implicitHeight, 10)
-
- layout.children[0].Layout.alignment = Qt.AlignBaseline
- layout.children[1].Layout.alignment = Qt.AlignBaseline
-
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [10, 10, 10, 10])
- compare(layout.implicitWidth, 20)
- compare(layout.implicitHeight, 20)
-
- layout.destroy();
- }
-
- Component {
- id: layout_spacings_Component
- GridLayout {
- id: layout
- Repeater {
- model: 2
- Rectangle {
- property var itemRect: [x, y, width, height]
- implicitWidth: 10
- implicitHeight: 10
- }
- }
- }
- }
-
- function test_spacings()
- {
- var layout = layout_spacings_Component.createObject(container);
-
- // breaks down below -19. This is acceptable, since it means that the implicit size of the layout is negative
- var testSpacings = [Number.NaN, 0, 10, -5, -19]
- layout.rowSpacing = 0
- for (var i = 0; i < testSpacings.length; ++i) {
- var sp = testSpacings[i]
- if (isNaN(sp)) {
- sp = 5 // Test defaults
- } else {
- layout.columnSpacing = sp
- }
- tryCompare(layout.children[0], "itemRect", [ 0, 0, 10, 10])
- tryCompare(layout.children[1], "itemRect", [10 + sp, 0, 10, 10])
- compare(layout.implicitWidth, 20 + sp)
- }
-
- // do not crash
- layout.columnSpacing = -100
- waitForRendering(layout)
- verify(isFinite(layout.implicitWidth))
- layout.destroy();
- }
-
- Component {
- id: layout_alignToPixelGrid_Component
- GridLayout {
- columns: 3
- rowSpacing: 0
- columnSpacing: 2
- Repeater {
- model: 3*3
- Rectangle {
- color: "red"
- Layout.fillWidth: true
- Layout.fillHeight: true
- }
- }
- }
- }
-
- function test_alignToPixelGrid()
- {
- var layout = layout_alignToPixelGrid_Component.createObject(container)
- layout.width = 30
- layout.height = 28
-
- var rectWidth = (layout.width - 2 * layout.columnSpacing)/3
- var rectHeight = layout.height/3
-
- waitForRendering(layout);
-
- var sp = layout.columnSpacing
- var idealGeom = [0,0,rectWidth,rectHeight]
- for (var r = 0; r < 3; ++r) {
- idealGeom[0] = 0
- idealGeom[2] = rectWidth
- for (var c = 0; c < 3; ++c) {
- var child = layout.children[3*r + c]
- var visualGeom = [child.x, child.y, child.x + child.width, child.y + child.height]
-
- // verify that visualGeom is an integer number
- for (var i = 0; i < 2; ++i)
- compare(visualGeom[i] % 1, 0)
-
- // verify that x,y is no more than one pixel from idealGeom
- fuzzyCompare(visualGeom[0], idealGeom[0], 1)
- fuzzyCompare(visualGeom[1], idealGeom[1], 1)
-
- // verify that the visual size is no more than 1 pixel taller/wider than the ideal size.
- verify(visualGeom[2] <= idealGeom[2] + 1)
- verify(visualGeom[3] <= idealGeom[3] + 1)
- idealGeom[0] = idealGeom[2] + sp
- idealGeom[2] = idealGeom[0] + rectWidth
- }
- idealGeom[1] = idealGeom[3]
- idealGeom[3] = idealGeom[1] + rectHeight
- }
-
- layout.destroy()
- }
-
- Component {
-
- id: layout_Margins_Component
- GridLayout {
- columns: 2
- rowSpacing: 0
- columnSpacing: 0
- Rectangle {
- color: "red"
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.margins: 10
- Layout.leftMargin: 2
- Layout.topMargin: 3
- Layout.rightMargin: 4
- Layout.bottomMargin: 4
- }
- Rectangle {
- color: "red"
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.leftMargin: 4
- Layout.topMargin: 5
- Layout.rightMargin: 6
- Layout.bottomMargin: 6
- }
- Rectangle {
- color: "red"
- Layout.preferredWidth: 20
- Layout.preferredHeight: 20
- Layout.leftMargin: 3
- Layout.topMargin: 4
- Layout.rightMargin: 5
- Layout.bottomMargin: 5
- }
- }
- }
-
- function test_Margins()
- {
- var layout = layout_Margins_Component.createObject(container)
-
- compare(layout.implicitWidth, 3 + 20 + 5 + 4 + 20 + 6)
- compare(layout.implicitHeight, 5 + 20 + 6 + 4 + 20 + 5)
- layout.width = layout.implicitWidth
- layout.height = layout.implicitHeight
-
- waitForRendering(layout)
-
- var c0 = layout.children[0]
- var c1 = layout.children[1]
- var c2 = layout.children[2]
-
- compare(c0.x, 2)
- compare(c0.y, 5)
- compare(c1.x, 3 + 20 + 5 + 4)
- compare(c1.y, 5)
- compare(c2.x, 3)
- compare(c2.y, 5 + 20 + 6 + 4)
-
- // reset left|rightMargin. It should then use the generic "margins" property
- c0.Layout.leftMargin = undefined
- compare(layout.implicitWidth, 10 + 20 + 4 + 4 + 20 + 6)
- c0.Layout.bottomMargin = undefined
- compare(layout.implicitHeight, 3 + 20 + 10 + 4 + 20 + 5)
- }
-
- Component {
- id: layout_invalidateWhileRearranging_Component
-
- GridLayout {
- columns: 1
- Rectangle {
- height: 50
- Layout.fillWidth: true
- color: 'blue'
- }
-
- Rectangle {
- height: 50
- Layout.fillWidth: true
- color: 'red'
- onYChanged: {
- visible = false;
- }
- }
- }
- }
-
- function test_invalidateWhileRearranging_QTBUG_44139()
- {
- var layout = layout_invalidateWhileRearranging_Component.createObject(container)
-
- waitForRendering(layout);
- verify(layout.children[1].visible == false);
- layout.destroy()
- }
- }
-}