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:
parent
2d8b80bb9c
commit
e02293a76d
@ -1775,8 +1775,8 @@ void QAbstractItemView::mousePressEvent(QMouseEvent *event)
|
|||||||
QItemSelectionModel::SelectionFlags command = selectionCommand(index, event);
|
QItemSelectionModel::SelectionFlags command = selectionCommand(index, event);
|
||||||
d->noSelectionOnMousePress = command == QItemSelectionModel::NoUpdate || !index.isValid();
|
d->noSelectionOnMousePress = command == QItemSelectionModel::NoUpdate || !index.isValid();
|
||||||
QPoint offset = d->offset();
|
QPoint offset = d->offset();
|
||||||
|
d->pressedPosition = pos + offset;
|
||||||
if ((command & QItemSelectionModel::Current) == 0) {
|
if ((command & QItemSelectionModel::Current) == 0) {
|
||||||
d->pressedPosition = pos + offset;
|
|
||||||
d->currentSelectionStartIndex = index;
|
d->currentSelectionStartIndex = index;
|
||||||
}
|
}
|
||||||
else if (!d->currentSelectionStartIndex.isValid())
|
else if (!d->currentSelectionStartIndex.isValid())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user