aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/controls/DialogButtonBox.qml2
-rw-r--r--src/imports/controls/imagine/DialogButtonBox.qml2
-rw-r--r--src/imports/controls/universal/DialogButtonBox.qml2
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox.cpp4
-rw-r--r--tests/auto/controls/data/tst_dialogbuttonbox.qml28
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))
+ }
}