Always update the pressed position when pressing on an item

If there is an item already selected then the pressed position needs to
be updated regardless when selecting a new one even if it is not made
current as this will be used to determine the drag distance.
Otherwise it will start a drag within one pixel of moving due to the
fact it is doing it relative to the first item to be pressed rather than
the last.

Fixes: QTBUG-78797
Change-Id: I853041b278b2e92ccf20660f7ced945fef72527a
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This commit is contained in:
Andy Shaw 2019-09-30 08:26:36 +02:00
parent 2d8b80bb9c
commit e02293a76d

View File

@ -1775,8 +1775,8 @@ void QAbstractItemView::mousePressEvent(QMouseEvent *event)
QItemSelectionModel::SelectionFlags command = selectionCommand(index, event);
d->noSelectionOnMousePress = command == QItemSelectionModel::NoUpdate || !index.isValid();
QPoint offset = d->offset();
d->pressedPosition = pos + offset;
if ((command & QItemSelectionModel::Current) == 0) {
d->pressedPosition = pos + offset;
d->currentSelectionStartIndex = index;
}
else if (!d->currentSelectionStartIndex.isValid())