Details
-
Bug
-
Resolution: Done
-
P2: Important
-
4.7.4, 5.0.0
-
Windows XP, Linux, Symbian.
-
61f165239c4e87a8f6bcd594553b8fcea1a7f8d0
Description
Cannot flick to the end of a horizontal list view if LayoutMirroring is enabled in case snapMode is set SnapToItem and a preferred highlight range has been defined. Please use the attached test application for reproducing the issue.
I also did some tracing to Qt Declarative source codes and it seems the content item's position gets calculate wrong in R2L case, which makes the QDeclarativeListView to assume it has reached end position one item too early:
// list is grabbed with mouse and swept
QDeclativeListView::viewPortMoved(): snapItem->Index 1
QDeclativeListView::viewPortMoved(): snapItem->Index 2
QDeclativeListView::viewPortMoved(): snapItem->Index 3
QDeclarativeFlickablePrivate::handleMouseReleaseEvent
QDeclarativeFlickablePrivate::handleMouseReleaseEvent: flicking
QDeclarativeFlickablePrivate::flickX: velocity = 1500
QDeclarativeListViewPrivate::flick: velocity 1500
QDeclativeListView::viewPortMoved(): snapItem->Index 4 // scrolling to last item...
QDeclarativeListViewPrivate::fixup: minExtent = 711 ; maxExtent = 261
QDeclarativeListViewPrivate::fixup: viewPos = 491 ; highlightStart = 100 ; highlightEnd = 290
QDeclarativeListViewPrivate::fixup: tempPosition = 491
QDeclarativeListViewPrivate::fixup: position() = -851 // ...but it is way out of bounds...
QDeclarativeListViewPrivate::fixup: topItem = 0x16dc0028 ;bottomItem = 0x0 ;isInBounds = false
QDeclativeListView::viewPortMoved(): snapItem->Index 3 // ...backing to one before the last item
Attachments
For Gerrit Dashboard: QTBUG-21756 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
6574,5 | Cannot flick to the end of a horizontal ListView with LayoutMirroring | master | qt/qtdeclarative | Status: MERGED | +2 | 0 |