Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
5.12
-
None
Description
Here is an example.
test.qml
import QtQuick 2.4 Rectangle { id: root width: 1920 height: 1080 color: "yellow" MouseArea { objectName: "red" x: 200 y: 200 width: 400 height: 400 hoverEnabled: true onEntered: red.color = "orange" onExited: red.color = "red" Rectangle { id: red objectName: "redRect" anchors.fill: parent color: "red" } MouseArea { objectName: "blue" z: -1 x: 100 y: 100 width: 400 height: 400 hoverEnabled: true onEntered: blue.color = "steelblue" onExited: blue.color = "blue" Rectangle { id: blue objectName: "blueRect" anchors.fill: parent color: "blue" } MouseArea { objectName: "white" z: 1 x: 100 y: 100 width: 400 height: 400 hoverEnabled: true onEntered: white.color = "gray" onExited: white.color = "white" Rectangle { id: white objectName: "whiteRect" anchors.fill: parent color: "white" } } } } }
Moving the pointer over "red" rectangle makes all children rectangle "blue" and "white" also hovered, even though they are stacked under.
If those rectangles are siblings in different z values (red.z = 2, blue.z = 0, white.z = 1 to make the same stacking order), hover events work as expected. See test2.qml below.
test2.qml
import QtQuick 2.4 Rectangle { id: root width: 1920 height: 1080 color: "yellow" MouseArea { objectName: "red" z: 2 x: 200 y: 200 width: 400 height: 400 hoverEnabled: true onEntered: red.color = "orange" onExited: red.color = "red" Rectangle { id: red objectName: "redRect" anchors.fill: parent color: "red" } } MouseArea { objectName: "blue" z: 0 x: 300 y: 300 width: 400 height: 400 hoverEnabled: true onEntered: blue.color = "steelblue" onExited: blue.color = "blue" Rectangle { id: blue objectName: "blueRect" anchors.fill: parent color: "blue" } } MouseArea { objectName: "white" z: 1 x: 400 y: 400 width: 400 height: 400 hoverEnabled: true onEntered: white.color = "gray" onExited: white.color = "white" Rectangle { id: white objectName: "whiteRect" anchors.fill: parent color: "white" } } }
Note:
Found in webOS with Qt 5.12 but it is likely reproducible in other platforms and versions because there is no difference in the relevant method QQuickWindowPrivate::deliverHoverEvent between Qt 5.12 and the latest dev branch.
Attachments
Gerrit Reviews
For Gerrit Dashboard: QTBUG-84306 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
301031,4 | QQuickWindow: Consider z-order when delivering hover events | dev | qt/qtdeclarative | Status: NEW | -1 | 0 |