diff options
Diffstat (limited to 'src/gui/kernel/qpointingdevice.cpp')
-rw-r--r-- | src/gui/kernel/qpointingdevice.cpp | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/src/gui/kernel/qpointingdevice.cpp b/src/gui/kernel/qpointingdevice.cpp index d9ce0b0cf9..c4c1e5fd5c 100644 --- a/src/gui/kernel/qpointingdevice.cpp +++ b/src/gui/kernel/qpointingdevice.cpp @@ -111,6 +111,48 @@ Q_LOGGING_CATEGORY(lcPointerGrab, "qt.pointer.grab"); Any of the above (used as a default filter value). */ +/*! \enum QPointingDevice::GrabTransition + + This enum represents a transition of exclusive or passive grab + from one object (possibly \c nullptr) to another (possibly \c nullptr). + It is emitted as an argument of the QPointingDevice::grabChanged() signal. + + Valid values are: + + \value GrabExclusive + Emitted after QPointerEvent::setExclusiveGrabber(). + \value UngrabExclusive + Emitted after QPointerEvent::setExclusiveGrabber() when the grabber is + set to \c nullptr, to notify that the grab has terminated normally. + \value CancelGrabExclusive + Emitted after QPointerEvent::setExclusiveGrabber() when the grabber is set + to a different object, to notify that the old grabber's grab is "stolen". + \value GrabPassive + Emitted after QPointerEvent::addPassiveGrabber(). + \value UngrabPassive + Emitted when a passive grab is terminated normally, + for example after QPointerEvent::removePassiveGrabber(). + \value CancelGrabPassive + Emitted when a passive grab is terminated abnormally (a gesture is canceled). + \value OverrideGrabPassive + This value is not currently used. +*/ + +/*! \fn void QPointingDevice::grabChanged(QObject *grabber, QPointingDevice::GrabTransition transition, const QPointerEvent *event, const QEventPoint &point) const + + This signal is emitted when the \a grabber object gains or loses an + exclusive or passive grab of \a point during delivery of \a event. + The \a transition tells what happened, from the perspective of the + \c grabber object. + + \note A grab transition from one object to another results in two signals, + to notify that one object has lost its grab, and to notify that there is + another grabber. In other cases, when transitioning to or from a non-grabbing + state, only one signal is emitted: the \a grabber argument is never \c nullptr. + + \sa QPointerEvent::setExclusiveGrabber(), QPointerEvent::addPassiveGrabber(), QPointerEvent::removePassiveGrabber() +*/ + /*! Creates a new invalid pointing device instance as a child of \a parent. */ @@ -277,7 +319,7 @@ const QPointingDevice *QPointingDevice::primaryPointingDevice(const QString& sea QInputDevicePrivate::registerDevice(mouse); return mouse; } - if (v.length() > 1) + if (v.size() > 1) qCDebug(lcQpaInputDevices) << "core pointer ambiguous for seat" << seatName; if (mouse) return mouse; @@ -465,6 +507,7 @@ void QPointingDevicePrivate::setExclusiveGrabber(const QPointerEvent *event, con qWarning() << "point is not in activePoints" << point; return; } + Q_ASSERT(persistentPoint->eventPoint.id() == point.id()); if (persistentPoint->exclusiveGrabber == exclusiveGrabber) return; auto oldGrabber = persistentPoint->exclusiveGrabber; @@ -521,7 +564,7 @@ bool QPointingDevicePrivate::addPassiveGrabber(const QPointerEvent *event, const bool QPointingDevicePrivate::setPassiveGrabberContext(QPointingDevicePrivate::EventPointData *epd, QObject *grabber, QObject *context) { - int i = epd->passiveGrabbers.indexOf(grabber); + qsizetype i = epd->passiveGrabbers.indexOf(grabber); if (i < 0) return false; if (epd->passiveGrabbersContext.size() <= i) @@ -538,7 +581,7 @@ bool QPointingDevicePrivate::removePassiveGrabber(const QPointerEvent *event, co qWarning() << "point is not in activePoints" << point; return false; } - int i = persistentPoint->passiveGrabbers.indexOf(grabber); + qsizetype i = persistentPoint->passiveGrabbers.indexOf(grabber); if (i >= 0) { if (Q_UNLIKELY(lcPointerGrab().isDebugEnabled())) { qCDebug(lcPointerGrab) << name << "point" << point.id() << point.state() @@ -601,7 +644,7 @@ void QPointingDevicePrivate::removeGrabber(QObject *grabber, bool cancel) cancel ? QPointingDevice::CancelGrabExclusive : QPointingDevice::UngrabExclusive, nullptr, epd.eventPoint); } - int pi = epd.passiveGrabbers.indexOf(grabber); + qsizetype pi = epd.passiveGrabbers.indexOf(grabber); if (pi >= 0) { qCDebug(lcPointerGrab) << name << "point" << epd.eventPoint.id() << epd.eventPoint.state() << ": removing passive grabber" << grabber; @@ -665,7 +708,7 @@ QDebug operator<<(QDebug debug, const QPointingDevice *device) if (device) { debug << '"' << device->name() << "\" "; QtDebugUtils::formatQEnum(debug, device->type()); - debug << " id=" << Qt::hex << device->systemId() << Qt::dec; + debug << " id=" << device->systemId(); if (!device->seatName().isEmpty()) debug << " seat=" << device->seatName(); if (device->pointerType() != QPointingDevice::PointerType::Generic) { |