Port users of QMutableEventPoint::from() to new static setters
In QQuickItem, added an opportunistic std::move() as a drive-by. Task-number: QTBUG-99615 Pick-to: 6.3 Change-Id: Ib9426ae7e749036541d5f97824800636b5ccfb5e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
parent
a1bba5cd3d
commit
f988168432
|
@ -1472,11 +1472,10 @@ void QQuickFlickable::mouseReleaseEvent(QMouseEvent *event)
|
|||
// Now send the release
|
||||
if (auto grabber = qmlobject_cast<QQuickItem *>(event->exclusiveGrabber(event->point(0)))) {
|
||||
// not copying or detaching anything, so make sure we return the original event unchanged
|
||||
QMutableSinglePointEvent *localized = QMutableSinglePointEvent::from(event);
|
||||
const auto oldPosition = localized->mutablePoint().position();
|
||||
localized->mutablePoint().setPosition(grabber->mapFromScene(localized->scenePosition()));
|
||||
QCoreApplication::sendEvent(window(), localized);
|
||||
localized->mutablePoint().setPosition(oldPosition);
|
||||
const auto oldPosition = event->point(0).position();
|
||||
QMutableEventPoint::setPosition(event->point(0), grabber->mapFromScene(event->scenePosition()));
|
||||
QCoreApplication::sendEvent(window(), event);
|
||||
QMutableEventPoint::setPosition(event->point(0), oldPosition);
|
||||
}
|
||||
|
||||
// And the event has been consumed
|
||||
|
@ -1747,7 +1746,7 @@ void QQuickFlickablePrivate::replayDelayedPress()
|
|||
qCDebug(lcReplay) << "replaying" << event.data();
|
||||
// Put scenePosition into position, for the sake of QQuickWindowPrivate::translateTouchEvent()
|
||||
// TODO remove this if we remove QQuickWindowPrivate::translateTouchEvent()
|
||||
QMutableEventPoint::from(firstPoint).setPosition(firstPoint.scenePosition());
|
||||
QMutableEventPoint::setPosition(firstPoint, firstPoint.scenePosition());
|
||||
// Send it through like a fresh press event, and let QQuickWindow
|
||||
// (more specifically, QQuickWindowPrivate::deliverPressOrReleaseEvent)
|
||||
// find the item or handler that should receive it, as usual.
|
||||
|
|
|
@ -8917,12 +8917,11 @@ void QQuickItemPrivate::localizedTouchEvent(const QTouchEvent *event, bool isFil
|
|||
if ((p.state() == QEventPoint::State::Pressed || p.state() == QEventPoint::State::Released) && isInside)
|
||||
anyPressOrReleaseInside = true;
|
||||
QEventPoint pCopy(p);
|
||||
QMutableEventPoint mut = QMutableEventPoint::from(pCopy);
|
||||
eventStates |= p.state();
|
||||
if (p.state() == QEventPoint::State::Released)
|
||||
mut.detach();
|
||||
mut.setPosition(localPos);
|
||||
touchPoints << mut;
|
||||
QMutableEventPoint::detach(pCopy);
|
||||
QMutableEventPoint::setPosition(pCopy, localPos);
|
||||
touchPoints.append(std::move(pCopy));
|
||||
}
|
||||
|
||||
// Now touchPoints will have only points which are inside the item.
|
||||
|
|
|
@ -1861,7 +1861,7 @@ bool QQuickPathView::childMouseEventFilter(QQuickItem *i, QEvent *e)
|
|||
if ((stealThisEvent || contains(localPos)) && (!grabber || !grabber->keepMouseGrab() || grabberDisabled)) {
|
||||
// Make a localized copy of the QMouseEvent.
|
||||
QMutableSinglePointEvent localizedEvent(*static_cast<QMouseEvent *>(pe));
|
||||
QMutableEventPoint::from(localizedEvent.point(0)).setPosition(localPos);
|
||||
QMutableEventPoint::setPosition(localizedEvent.point(0), localPos);
|
||||
localizedEvent.setAccepted(false);
|
||||
|
||||
switch (localizedEvent.type()) {
|
||||
|
|
|
@ -308,8 +308,8 @@ void QQuickDeliveryAgentPrivate::removeGrabber(QQuickItem *grabber, bool mouse,
|
|||
void QQuickDeliveryAgentPrivate::translateTouchEvent(QTouchEvent *touchEvent)
|
||||
{
|
||||
for (qsizetype i = 0; i != touchEvent->pointCount(); ++i) {
|
||||
auto &pt = QMutableEventPoint::from(touchEvent->point(i));
|
||||
pt.setScenePosition(pt.position());
|
||||
auto &pt = touchEvent->point(i);
|
||||
QMutableEventPoint::setScenePosition(pt, pt.position());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -894,11 +894,11 @@ QQuickDeliveryAgentPrivate::~QQuickDeliveryAgentPrivate()
|
|||
QPointerEvent *QQuickDeliveryAgentPrivate::clonePointerEvent(QPointerEvent *event, std::optional<QPointF> transformedLocalPos)
|
||||
{
|
||||
QPointerEvent *ret = event->clone();
|
||||
QMutableEventPoint &point = QMutableEventPoint::from(ret->point(0));
|
||||
point.detach();
|
||||
point.setTimestamp(event->timestamp());
|
||||
QEventPoint &point = ret->point(0);
|
||||
QMutableEventPoint::detach(point);
|
||||
QMutableEventPoint::setTimestamp(point, event->timestamp());
|
||||
if (transformedLocalPos)
|
||||
point.setPosition(*transformedLocalPos);
|
||||
QMutableEventPoint::setPosition(point, *transformedLocalPos);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -947,10 +947,10 @@ bool QQuickDeliveryAgentPrivate::sendHoverEvent(QEvent::Type type, QQuickItem *i
|
|||
hoverEvent.setTimestamp(timestamp);
|
||||
hoverEvent.setAccepted(true);
|
||||
const QTransform transformToGlobal = itemPrivate->windowToGlobalTransform();
|
||||
QMutableEventPoint &point = QMutableEventPoint::from(hoverEvent.point(0));
|
||||
point.setScenePosition(scenePos);
|
||||
point.setGlobalPosition(transformToGlobal.map(scenePos));
|
||||
point.setGlobalLastPosition(transformToGlobal.map(lastScenePos));
|
||||
QEventPoint &point = hoverEvent.point(0);
|
||||
QMutableEventPoint::setScenePosition(point, scenePos);
|
||||
QMutableEventPoint::setGlobalPosition(point, transformToGlobal.map(scenePos));
|
||||
QMutableEventPoint::setGlobalLastPosition(point, transformToGlobal.map(lastScenePos));
|
||||
|
||||
hasFiltered.clear();
|
||||
if (sendFilteredMouseEvent(&hoverEvent, item, item->parentItem()))
|
||||
|
@ -1271,8 +1271,8 @@ bool QQuickDeliveryAgentPrivate::allUpdatedPointsAccepted(const QPointerEvent *e
|
|||
void QQuickDeliveryAgentPrivate::localizePointerEvent(QPointerEvent *ev, const QQuickItem *dest)
|
||||
{
|
||||
for (int i = 0; i < ev->pointCount(); ++i) {
|
||||
auto &point = QMutableEventPoint::from(ev->point(i));
|
||||
QMutableEventPoint::from(point).setPosition(dest->mapFromScene(point.scenePosition()));
|
||||
auto &point = ev->point(i);
|
||||
QMutableEventPoint::setPosition(point, dest->mapFromScene(point.scenePosition()));
|
||||
qCDebug(lcPtrLoc) << ev->type() << "@" << point.scenePosition() << "to"
|
||||
<< dest << "@" << dest->mapToScene(QPointF()) << "->" << point;
|
||||
}
|
||||
|
@ -1401,7 +1401,7 @@ bool QQuickDeliveryAgentPrivate::compressTouchEvent(QTouchEvent *event)
|
|||
}
|
||||
|
||||
if (tpDelayed.state() == QEventPoint::State::Updated && tp.state() == QEventPoint::State::Stationary)
|
||||
QMutableEventPoint::from(tpts[i]).setState(QEventPoint::State::Updated);
|
||||
QMutableEventPoint::setState(tpts[i], QEventPoint::State::Updated);
|
||||
}
|
||||
|
||||
// matching touch event? then give delayedTouch a merged set of touchpoints
|
||||
|
@ -1680,10 +1680,10 @@ void QQuickDeliveryAgentPrivate::deliverPointerEvent(QPointerEvent *event)
|
|||
if (sceneTransform) {
|
||||
originalScenePositions.resize(event->pointCount());
|
||||
for (int i = 0; i < event->pointCount(); ++i) {
|
||||
auto &mut = QMutableEventPoint::from(event->point(i));
|
||||
originalScenePositions[i] = mut.scenePosition();
|
||||
mut.setScenePosition(sceneTransform->map(mut.scenePosition()));
|
||||
qCDebug(lcPtrLoc) << q << event->type() << mut.id() << "transformed scene pos" << mut.scenePosition();
|
||||
auto &pt = event->point(i);
|
||||
originalScenePositions[i] = pt.scenePosition();
|
||||
QMutableEventPoint::setScenePosition(pt, sceneTransform->map(pt.scenePosition()));
|
||||
qCDebug(lcPtrLoc) << q << event->type() << pt.id() << "transformed scene pos" << pt.scenePosition();
|
||||
}
|
||||
} else if (isSubsceneAgent) {
|
||||
qCDebug(lcPtrLoc) << q << event->type() << "no scene transform set";
|
||||
|
@ -1715,7 +1715,7 @@ void QQuickDeliveryAgentPrivate::deliverPointerEvent(QPointerEvent *event)
|
|||
eventsInDelivery.pop();
|
||||
if (sceneTransform) {
|
||||
for (int i = 0; i < event->pointCount(); ++i)
|
||||
QMutableEventPoint::from(event->point(i)).setScenePosition(originalScenePositions.at(i));
|
||||
QMutableEventPoint::setScenePosition(event->point(i), originalScenePositions.at(i));
|
||||
}
|
||||
--pointerEventRecursionGuard;
|
||||
lastUngrabbed = nullptr;
|
||||
|
|
|
@ -94,9 +94,9 @@ protected:
|
|||
originalScenePositions[pointIndex] = pe->point(pointIndex).scenePosition();
|
||||
|
||||
for (int pointIndex = 0; pointIndex < pe->pointCount(); ++pointIndex) {
|
||||
QMutableEventPoint &mut = QMutableEventPoint::from(pe->point(pointIndex));
|
||||
mut.setScenePosition(vxh->map(mut.scenePosition()));
|
||||
mut.setPosition(mut.position());
|
||||
QEventPoint &p = pe->point(pointIndex);
|
||||
QMutableEventPoint::setScenePosition(p, vxh->map(p.scenePosition()));
|
||||
QMutableEventPoint::setPosition(p, p.position());
|
||||
}
|
||||
|
||||
qCDebug(lcTests) << "forwarding to subscene DA" << pe;
|
||||
|
@ -108,7 +108,7 @@ protected:
|
|||
|
||||
// restore original scene positions
|
||||
for (int pointIndex = 0; pointIndex < pe->pointCount(); ++pointIndex)
|
||||
QMutableEventPoint::from(pe->point(pointIndex)).setScenePosition(originalScenePositions.at(pointIndex));
|
||||
QMutableEventPoint::setScenePosition(pe->point(pointIndex), originalScenePositions.at(pointIndex));
|
||||
|
||||
pe->setAccepted(false); // reject implicit grab and let it keep propagating
|
||||
qCDebug(lcTests) << e << "returning" << ret;
|
||||
|
|
|
@ -87,7 +87,7 @@ static TouchEventData makeTouchData(QEvent::Type type, QWindow *w, QEventPoint::
|
|||
{
|
||||
TouchEventData d = { type, nullptr, w, states, touchPoints };
|
||||
for (auto &pt : d.touchPoints)
|
||||
QMutableEventPoint::from(pt).detach();
|
||||
QMutableEventPoint::detach(pt);
|
||||
return d;
|
||||
}
|
||||
static TouchEventData makeTouchData(QEvent::Type type, QWindow *w, QEventPoint::States states,
|
||||
|
|
Loading…
Reference in New Issue