Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-117444

Enter/Exit order is different when hovering successive ListView delegates depending on direction of movement

    XMLWordPrintable

Details

    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

        For Gerrit Dashboard: QTBUG-117444
        # Subject Branch Project Status CR V

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            henning Henning Gründl
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There is 1 open Gerrit change