diff options
-rw-r--r-- | src/controls/SplitView.qml | 23 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_splitview.qml | 33 |
2 files changed, 45 insertions, 11 deletions
diff --git a/src/controls/SplitView.qml b/src/controls/SplitView.qml index 1cc8199f..57f6633f 100644 --- a/src/controls/SplitView.qml +++ b/src/controls/SplitView.qml @@ -293,17 +293,18 @@ Item { // calculate their acummulated width. var w = 0 for (var i=firstIndex; i<lastIndex; ++i) { + var item = __items[i] if (item.visible || i == d.fillIndex) { if (i !== d.fillIndex) w += item[d.size]; else if (includeFillItemMinimum && item.Layout[minimum] !== undefined) w += item.Layout[minimum] - - var handle = __handles[i] - if (handle && handle.visible) - w += handle[d.size] } + + var handle = __handles[i] + if (handle && handle.visible) + w += handle[d.size] } return w } @@ -351,14 +352,14 @@ Item { item[d.otherOffset] = 0 item[d.otherSize] = clampedMinMax(root[otherSize], item.Layout[otherMinimum], item.Layout[otherMaximum]) lastVisibleItem = item + } - handle = __handles[i] - if (handle && handle.visible) { - handle[d.offset] = lastVisibleItem[d.offset] + Math.max(0, lastVisibleItem[d.size]) - handle[d.otherOffset] = 0 - handle[d.otherSize] = root[d.otherSize] - lastVisibleHandle = handle - } + handle = __handles[i] + if (handle && handle.visible) { + handle[d.offset] = lastVisibleItem[d.offset] + Math.max(0, lastVisibleItem[d.size]) + handle[d.otherOffset] = 0 + handle[d.otherSize] = root[d.otherSize] + lastVisibleHandle = handle } } diff --git a/tests/auto/controls/data/tst_splitview.qml b/tests/auto/controls/data/tst_splitview.qml index 05101ff9..e42f0cee 100644 --- a/tests/auto/controls/data/tst_splitview.qml +++ b/tests/auto/controls/data/tst_splitview.qml @@ -41,6 +41,7 @@ import QtQuick 2.1 import QtTest 1.0 import QtQuick.Controls 1.0 +import QtQuick.Layouts 1.0 import QtQuickControlsTests 1.0 TestCase { @@ -76,6 +77,29 @@ TestCase { } } + Component { + id: splitView_hide_item_after_fillWidth + SplitView { + anchors.fill: parent + property alias item3: item3 + handleDelegate: Rectangle { width: handleWidth; height: handleHeight; color: "black" } + Rectangle { + color: "yellow" + Layout.fillWidth: true + } + Rectangle { + color: "green" + Layout.minimumWidth: 100 + visible: false + } + Rectangle { + id: item3 + color: "blue" + Layout.minimumWidth: 100 + } + } + } + function test_01_splitView() { var view = splitView.createObject(testCase); verify (view !== null, "splitview created is null") @@ -180,4 +204,13 @@ TestCase { compare (view.item2.height, 500) view.destroy() } + + function test_hide_item_after_fillWidth() { + // QTBUG-33448 + var view = splitView_hide_item_after_fillWidth.createObject(testCase); + verify (view !== null, "splitview created is null") + waitForRendering(view) + compare (view.item3.x, view.width - view.item3.width) + view.destroy() + } } |