aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quickcontrols2/basic/DialogButtonBox.qml1
-rw-r--r--src/quickcontrols2/fusion/DialogButtonBox.qml1
-rw-r--r--src/quickcontrols2/imagine/DialogButtonBox.qml1
-rw-r--r--src/quickcontrols2/material/DialogButtonBox.qml1
-rw-r--r--src/quickcontrols2/universal/DialogButtonBox.qml1
-rw-r--r--tests/auto/quickcontrols2/controls/data/tst_dialogbuttonbox.qml84
6 files changed, 88 insertions, 1 deletions
diff --git a/src/quickcontrols2/basic/DialogButtonBox.qml b/src/quickcontrols2/basic/DialogButtonBox.qml
index 0d8475865a..4ac4f29070 100644
--- a/src/quickcontrols2/basic/DialogButtonBox.qml
+++ b/src/quickcontrols2/basic/DialogButtonBox.qml
@@ -58,6 +58,7 @@ T.DialogButtonBox {
}
contentItem: ListView {
+ implicitWidth: contentWidth
model: control.contentModel
spacing: control.spacing
orientation: ListView.Horizontal
diff --git a/src/quickcontrols2/fusion/DialogButtonBox.qml b/src/quickcontrols2/fusion/DialogButtonBox.qml
index d54e03ae47..9282876221 100644
--- a/src/quickcontrols2/fusion/DialogButtonBox.qml
+++ b/src/quickcontrols2/fusion/DialogButtonBox.qml
@@ -58,6 +58,7 @@ T.DialogButtonBox {
delegate: Button { }
contentItem: ListView {
+ implicitWidth: contentWidth
model: control.contentModel
spacing: control.spacing
orientation: ListView.Horizontal
diff --git a/src/quickcontrols2/imagine/DialogButtonBox.qml b/src/quickcontrols2/imagine/DialogButtonBox.qml
index 3edaec93fa..d9891e0bb3 100644
--- a/src/quickcontrols2/imagine/DialogButtonBox.qml
+++ b/src/quickcontrols2/imagine/DialogButtonBox.qml
@@ -68,6 +68,7 @@ T.DialogButtonBox {
}
contentItem: ListView {
+ implicitWidth: contentWidth
model: control.contentModel
spacing: control.spacing
orientation: ListView.Horizontal
diff --git a/src/quickcontrols2/material/DialogButtonBox.qml b/src/quickcontrols2/material/DialogButtonBox.qml
index a5b2ac573c..9828338b14 100644
--- a/src/quickcontrols2/material/DialogButtonBox.qml
+++ b/src/quickcontrols2/material/DialogButtonBox.qml
@@ -62,6 +62,7 @@ T.DialogButtonBox {
delegate: Button { flat: true }
contentItem: ListView {
+ implicitWidth: contentWidth
model: control.contentModel
spacing: control.spacing
orientation: ListView.Horizontal
diff --git a/src/quickcontrols2/universal/DialogButtonBox.qml b/src/quickcontrols2/universal/DialogButtonBox.qml
index b5934290b1..dc6da731f9 100644
--- a/src/quickcontrols2/universal/DialogButtonBox.qml
+++ b/src/quickcontrols2/universal/DialogButtonBox.qml
@@ -61,6 +61,7 @@ T.DialogButtonBox {
}
contentItem: ListView {
+ implicitWidth: contentWidth
model: control.contentModel
spacing: control.spacing
orientation: ListView.Horizontal
diff --git a/tests/auto/quickcontrols2/controls/data/tst_dialogbuttonbox.qml b/tests/auto/quickcontrols2/controls/data/tst_dialogbuttonbox.qml
index 11cc1f55b2..7d4c5d9e4d 100644
--- a/tests/auto/quickcontrols2/controls/data/tst_dialogbuttonbox.qml
+++ b/tests/auto/quickcontrols2/controls/data/tst_dialogbuttonbox.qml
@@ -398,7 +398,7 @@ TestCase {
// QTBUG-72886
function test_changeCustomButtonText(data) {
- var control = createTemporaryObject(customButtonBox, testCase, {})
+ var control = createTemporaryObject(data.component, testCase, {})
verify(control)
var listView = control.contentItem
@@ -418,6 +418,88 @@ TestCase {
}
Component {
+ id: customButtonBoxInDialog
+
+ Dialog {
+ width: 300
+ visible: true
+
+ footer: DialogButtonBox {
+ objectName: "customButtonBoxInDialog"
+ alignment: Qt.AlignRight
+
+ property alias okButton: okButton
+
+ Button {
+ id: okButton
+ text: "OK"
+
+ DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
+ }
+ }
+ }
+ }
+
+ Component {
+ id: customButtonBoxTwoButtonsInDialog
+
+ Dialog {
+ width: 300
+ visible: true
+
+ footer: DialogButtonBox {
+ objectName: "customButtonBoxTwoButtonsInDialog"
+ alignment: Qt.AlignRight
+
+ property alias okButton: okButton
+
+ Button {
+ id: okButton
+ text: "OK"
+
+ DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
+ }
+ Button {
+ text: "Cancel"
+
+ DialogButtonBox.buttonRole: DialogButtonBox.RejectRole
+ }
+ }
+ }
+ }
+
+ function test_changeCustomButtonImplicitWidth_data() {
+ return [
+ { tag: "oneButton", component: customButtonBoxInDialog },
+ { tag: "twoButtons", component: customButtonBoxTwoButtonsInDialog },
+ ]
+ }
+
+ // QTBUG-102558
+ function test_changeCustomButtonImplicitWidth(data) {
+ let dialog = createTemporaryObject(data.component, testCase, {})
+ verify(dialog)
+
+ let control = dialog.footer
+ verify(control)
+
+ let listView = control.contentItem
+ waitForRendering(listView)
+
+ let button = control.okButton
+ verify(button)
+ button.implicitWidth *= 1.5
+
+ // The button should never go outside of the box.
+ tryVerify(function() { return button.mapToItem(control, 0, 0).x >= 0 },
+ 1000, "Expected left edge of button to be within left edge of DialogButtonBox (i.e. greater than or equal to 0)" +
+ ", but it's " + button.mapToItem(control, 0, 0).x)
+ tryVerify(function() { return button.mapToItem(control, 0, 0).x + button.width <= control.width },
+ 1000, "Expected right edge of button to be within right edge of DialogButtonBox (i.e. less than or equal to " +
+ control.width + "), but it's " + (button.mapToItem(control, 0, 0).x + button.width))
+ }
+
+ Component {
id: noRolesDialog
Dialog {