Details
-
Bug
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
6.5.2
-
None
Description
Depending on which direction the mouse pointer is going over the various versions of hover "detectore" (ItemDelegate, MouseArea, HoverHandler) the outcome isn't consistent. The all prdocuse the same results, but the direction in which the user is going hover them dictates the enter leave order in the events.
ItemDelegate
When going down on the ItemDelegate ListView before the current hovered item loses hover the next one will already have hover. This is different to when going up. Here it acts as expected, the hovered item loses hover the next one gains it.
Down | Up |
---|---|
ItemDelegate 0 true | ItemDelegate 4 true |
ItemDelegate 1 true | ItemDelegate 4 false |
ItemDelegate 0 false | ItemDelegate 3 true |
ItemDelegate 2 true | ItemDelegate 3 false |
ItemDelegate 1 false | ItemDelegate 2 true |
ItemDelegate 3 true | ItemDelegate 2 false |
ItemDelegate 2 false | ItemDelegate 1 true |
ItemDelegate 4 true | ItemDelegate 1 false |
ItemDelegate 3 false | ItemDelegate 0 true |
ItemDelegate 4 false | ItemDelegate 0 false |
MouseArea
MouseArea has the same inconsistent hover behavior as ItemDelegate.
Down | Up |
---|---|
MouseArea 0 true | MouseArea 4 true |
MouseArea 1 true | MouseArea 4 false |
MouseArea 0 false | MouseArea 3 true |
MouseArea 2 true | MouseArea 3 false |
MouseArea 1 false | MouseArea 2 true |
MouseArea 3 true | MouseArea 2 false |
MouseArea 2 false | MouseArea 1 true |
MouseArea 4 true | MouseArea 1 false |
MouseArea 3 false | MouseArea 0 true |
MouseArea 4 false | MouseArea 0 false |
HoverHandler
Same behavior as the two above.
HoverHandler 0 true | HoverHandler 4 true |
HoverHandler 1 true | HoverHandler 4 false |
HoverHandler 0 false | HoverHandler 3 true |
HoverHandler 2 true | HoverHandler 3 false |
HoverHandler 1 false | HoverHandler 2 true |
HoverHandler 3 true | HoverHandler 2 false |
HoverHandler 2 false | HoverHandler 1 true |
HoverHandler 4 true | HoverHandler 1 false |
HoverHandler 3 false | HoverHandler 0 true |
HoverHandler 4 false | HoverHandler 0 false |
import QtQuick import QtQuick.Controls Window { width: 640 height: 480 visible: true title: qsTr("Hello World") Row { spacing: 10 ListView { width: 100 height: 200 model: 5 delegate: ItemDelegate { width: parent.width text: modelData hoverEnabled: true onHoveredChanged: console.log("ItemDelegate", modelData, hovered) } } ListView { width: 100 height: 200 model: 5 delegate: Rectangle { width: parent.width height: 20 color: "grey" Text { text: modelData } MouseArea { anchors.fill: parent hoverEnabled: true onContainsMouseChanged: console.log("MouseArea", modelData, containsMouse) } } } ListView { width: 100 height: 200 model: 5 delegate: Rectangle { width: parent.width height: 20 color: "grey" Text { text: modelData } HoverHandler { onHoveredChanged: console.log("HoverHandler", modelData, hovered) } } } } }
Attachments
Gerrit Reviews
For Gerrit Dashboard: QTBUG-117444 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
506629,1 | WIP autotest for hover enter/exit order in ListView delegates | dev | qt/qtdeclarative | Status: NEW | -2 | 0 |