diff options
-rw-r--r-- | src/imports/controls/DialogButtonBox.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/imagine/DialogButtonBox.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/universal/DialogButtonBox.qml | 2 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdialogbuttonbox.cpp | 4 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_dialogbuttonbox.qml | 28 |
5 files changed, 33 insertions, 5 deletions
diff --git a/src/imports/controls/DialogButtonBox.qml b/src/imports/controls/DialogButtonBox.qml index 51a5cc49..3189967d 100644 --- a/src/imports/controls/DialogButtonBox.qml +++ b/src/imports/controls/DialogButtonBox.qml @@ -54,7 +54,7 @@ T.DialogButtonBox { } contentItem: ListView { - implicitWidth: contentWidth + implicitWidth: control.count === 1 ? 200 : contentWidth implicitHeight: 40 model: control.contentModel diff --git a/src/imports/controls/imagine/DialogButtonBox.qml b/src/imports/controls/imagine/DialogButtonBox.qml index d24ad4ee..69211ed9 100644 --- a/src/imports/controls/imagine/DialogButtonBox.qml +++ b/src/imports/controls/imagine/DialogButtonBox.qml @@ -60,7 +60,7 @@ T.DialogButtonBox { } contentItem: ListView { - implicitWidth: contentWidth + implicitWidth: control.count === 1 ? 200 : contentWidth implicitHeight: 32 model: control.contentModel diff --git a/src/imports/controls/universal/DialogButtonBox.qml b/src/imports/controls/universal/DialogButtonBox.qml index 7f28a144..17a9156d 100644 --- a/src/imports/controls/universal/DialogButtonBox.qml +++ b/src/imports/controls/universal/DialogButtonBox.qml @@ -58,7 +58,7 @@ T.DialogButtonBox { } contentItem: ListView { - implicitWidth: contentWidth + implicitWidth: control.count === 1 ? 200 : contentWidth implicitHeight: 32 model: control.contentModel diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp index cd971139..f16f1b74 100644 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp @@ -215,8 +215,8 @@ void QQuickDialogButtonBoxPrivate::resizeContent() QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding()); if (alignment != 0) { - qreal cw = (alignment & Qt::AlignHorizontal_Mask) == 0 ? q->availableWidth() : contentItem->implicitWidth(); - qreal ch = (alignment & Qt::AlignVertical_Mask) == 0 ? q->availableHeight() : contentItem->implicitHeight(); + qreal cw = (alignment & Qt::AlignHorizontal_Mask) == 0 ? q->availableWidth() : contentItem->property("contentWidth").toReal(); + qreal ch = (alignment & Qt::AlignVertical_Mask) == 0 ? q->availableHeight() : contentItem->property("contentHeight").toReal(); geometry = alignedRect(q->isMirrored() ? Qt::RightToLeft : Qt::LeftToRight, alignment, QSizeF(cw, ch), geometry); } diff --git a/tests/auto/controls/data/tst_dialogbuttonbox.qml b/tests/auto/controls/data/tst_dialogbuttonbox.qml index 044c9593..6faf0db4 100644 --- a/tests/auto/controls/data/tst_dialogbuttonbox.qml +++ b/tests/auto/controls/data/tst_dialogbuttonbox.qml @@ -195,4 +195,32 @@ TestCase { compare(clickedSpy.signalArguments[0][0], button) compare(roleSpy.count, 1) } + + function test_implicitSize_data() { + return [ + { tag: "Ok", standardButtons: DialogButtonBox.Ok }, + { tag: "Yes|No", standardButtons: DialogButtonBox.Yes | DialogButtonBox.No } + ] + } + + // QTBUG-59719 + function test_implicitSize(data) { + var control = createTemporaryObject(buttonBox, testCase, {standardButtons: data.standardButtons}) + verify(control) + + var listView = control.contentItem + verify(listView && listView.hasOwnProperty("contentWidth")) + waitForRendering(listView) + + var implicitContentWidth = control.leftPadding + control.rightPadding + for (var i = 0; i < listView.contentItem.children.length; ++i) { + var button = listView.contentItem.children[i] + if (!button.hasOwnProperty("text")) + continue + implicitContentWidth += button.implicitWidth + } + + verify(implicitContentWidth > control.leftPadding + control.rightPadding) + verify(control.implicitWidth >= implicitContentWidth, qsTr("implicit width (%1) is less than content width (%2)").arg(control.implicitWidth).arg(implicitContentWidth)) + } } |