aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quickcontrols2/controls/data/tst_popup.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quickcontrols2/controls/data/tst_popup.qml')
-rw-r--r--tests/auto/quickcontrols2/controls/data/tst_popup.qml109
1 files changed, 101 insertions, 8 deletions
diff --git a/tests/auto/quickcontrols2/controls/data/tst_popup.qml b/tests/auto/quickcontrols2/controls/data/tst_popup.qml
index 145f555218..acb550fdd4 100644
--- a/tests/auto/quickcontrols2/controls/data/tst_popup.qml
+++ b/tests/auto/quickcontrols2/controls/data/tst_popup.qml
@@ -953,45 +953,45 @@ TestCase {
control.contentItem.implicitWidth = 10
compare(control.implicitWidth, 10 + control.leftPadding + control.rightPadding)
compare(control.width, control.implicitWidth)
- compare(control.contentItem.width, control.width - control.leftPadding - control.rightPadding)
+ compare(control.contentItem.width, control.availableWidth)
control.contentItem.implicitHeight = 20
compare(control.implicitHeight, 20 + control.topPadding + control.bottomPadding)
compare(control.height, control.implicitHeight)
- compare(control.contentItem.height, control.height - control.topPadding - control.bottomPadding)
+ compare(control.contentItem.height, control.availableHeight)
// implicit size of the popup
control.implicitWidth = 30
compare(control.implicitWidth, 30)
compare(control.width, 30)
- compare(control.contentItem.width, control.width - control.leftPadding - control.rightPadding)
+ compare(control.contentItem.width, control.availableWidth)
control.implicitHeight = 40
compare(control.implicitHeight, 40)
compare(control.height, 40)
- compare(control.contentItem.height, control.height - control.topPadding - control.bottomPadding)
+ compare(control.contentItem.height, control.availableHeight)
// set explicit size
control.width = 50
compare(control.implicitWidth, 30)
compare(control.width, 50)
- compare(control.contentItem.width, control.width - control.leftPadding - control.rightPadding)
+ compare(control.contentItem.width, control.availableWidth)
control.height = 60
compare(control.implicitHeight, 40)
compare(control.height, 60)
- compare(control.contentItem.height, control.height - control.topPadding - control.bottomPadding)
+ compare(control.contentItem.height, control.availableHeight)
// reset explicit size
control.width = undefined
compare(control.implicitWidth, 30)
compare(control.width, 30)
- compare(control.contentItem.width, control.width - control.leftPadding - control.rightPadding)
+ compare(control.contentItem.width, control.availableWidth)
control.height = undefined
compare(control.implicitHeight, 40)
compare(control.height, 40)
- compare(control.contentItem.height, control.height - control.topPadding - control.bottomPadding)
+ compare(control.contentItem.height, control.availableHeight)
}
function test_visible() {
@@ -1390,4 +1390,97 @@ TestCase {
compare(shortcutActivatedSpy.count, 2)
tryCompare(control, "visible", false)
}
+
+ Component {
+ id: mousePropagationComponent
+ ApplicationWindow {
+ id: window
+ width: 360
+ height: 360
+ visible: true
+
+ property alias popup: popup
+ property alias popupTitle: popupTitle
+ property alias popupContent: popupContent
+ property bool gotMouseEvent: false
+
+ MouseArea {
+ id: windowMouseArea
+ enabled: true
+ anchors.fill: parent
+ onPressed: gotMouseEvent = true
+ }
+
+
+ Popup {
+ id: popup
+ width: 200
+ height: 200
+
+ background: Rectangle {
+ id: popupContent
+ color: "#505050"
+ Rectangle {
+ id: popupTitle
+ width: parent.width
+ height: 30
+ color: "blue"
+
+ property point pressedPosition: Qt.point(0, 0)
+
+ MouseArea {
+ enabled: true
+ propagateComposedEvents: true
+ anchors.fill: parent
+ onPressed: (mouse) => {
+ popupTitle.pressedPosition = Qt.point(mouse.x, mouse.y)
+ }
+ onPositionChanged: (mouse) => {
+ popup.x += mouse.x - popupTitle.pressedPosition.x
+ popup.y += mouse.y - popupTitle.pressedPosition.y
+ }
+ onReleased: (mouse) => {
+ popupTitle.pressedPosition = Qt.point(0, 0)
+ }
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ x = parent.width / 2 - width / 2
+ y = parent.height / 2 - height / 2
+ }
+ }
+ }
+ }
+
+ function test_mousePropagation() {
+ // Tests that Popup ignores mouse events that it doesn't handle itself
+ // so that they propagate correctly.
+ let window = createTemporaryObject(mousePropagationComponent, testCase)
+ window.requestActivate()
+ tryCompare(window, "active", true)
+
+ let popup = window.popup
+ popup.open()
+
+ // mouse clicks into the popup must not propagate to the parent
+ mouseClick(window)
+ compare(window.gotMouseEvent, false)
+
+ let title = window.popupTitle
+ verify(title)
+
+ let pressPoint = Qt.point(title.width / 2, title.height / 2)
+ let oldPos = Qt.point(popup.x, popup.y)
+ mousePress(title, pressPoint.x, pressPoint.y)
+ fuzzyCompare(title.pressedPosition.x, pressPoint.x, 1)
+ fuzzyCompare(title.pressedPosition.y, pressPoint.y, 1)
+ mouseMove(title, pressPoint.x + 5, pressPoint.y + 5)
+ fuzzyCompare(popup.x, oldPos.x + 5, 1)
+ fuzzyCompare(popup.y, oldPos.y + 5, 1)
+ mouseRelease(title, pressPoint.x, pressPoint.y)
+ compare(title.pressedPosition, Qt.point(0, 0))
+
+ }
}