diff options
Diffstat (limited to 'src/client/qwaylandpointergestures.cpp')
-rw-r--r-- | src/client/qwaylandpointergestures.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/client/qwaylandpointergestures.cpp b/src/client/qwaylandpointergestures.cpp index df43c31e9..87079d800 100644 --- a/src/client/qwaylandpointergestures.cpp +++ b/src/client/qwaylandpointergestures.cpp @@ -14,6 +14,14 @@ QWaylandPointerGestures::QWaylandPointerGestures(QWaylandDisplay *display, uint { } +QWaylandPointerGestures::~QWaylandPointerGestures() noexcept +{ + if (version() >= ZWP_POINTER_GESTURES_V1_RELEASE_SINCE_VERSION) + release(); + else + zwp_pointer_gestures_v1_destroy(object()); +} + QWaylandPointerGestureSwipe * QWaylandPointerGestures::createPointerGestureSwipe(QWaylandInputDevice *device) { @@ -41,8 +49,11 @@ void QWaylandPointerGestureSwipe::zwp_pointer_gesture_swipe_v1_begin(uint32_t se uint32_t fingers) { #ifndef QT_NO_GESTURES - mParent->mSerial = serial; mFocus = QWaylandWindow::fromWlSurface(surface); + if (!mFocus) { + return; + } + mParent->mSerial = serial; mFingers = fingers; const auto* pointer = mParent->pointer(); @@ -62,6 +73,9 @@ void QWaylandPointerGestureSwipe::zwp_pointer_gesture_swipe_v1_update(uint32_t t wl_fixed_t dx, wl_fixed_t dy) { #ifndef QT_NO_GESTURES + if (!mFocus) { + return; + } const auto* pointer = mParent->pointer(); const QPointF delta = QPointF(wl_fixed_to_double(dx), wl_fixed_to_double(dy)); @@ -79,6 +93,9 @@ void QWaylandPointerGestureSwipe::zwp_pointer_gesture_swipe_v1_end(uint32_t seri int32_t cancelled) { #ifndef QT_NO_GESTURES + if (!mFocus) { + return; + } mParent->mSerial = serial; const auto* pointer = mParent->pointer(); @@ -113,11 +130,13 @@ void QWaylandPointerGesturePinch::zwp_pointer_gesture_pinch_v1_begin(uint32_t se uint32_t fingers) { #ifndef QT_NO_GESTURES - mParent->mSerial = serial; mFocus = QWaylandWindow::fromWlSurface(surface); + if (!mFocus) { + return; + } + mParent->mSerial = serial; mFingers = fingers; mLastScale = 1; - const auto* pointer = mParent->pointer(); qCDebug(lcQpaWaylandInput) << "zwp_pointer_gesture_pinch_v1_begin @ " @@ -137,6 +156,9 @@ void QWaylandPointerGesturePinch::zwp_pointer_gesture_pinch_v1_update(uint32_t t wl_fixed_t rotation) { #ifndef QT_NO_GESTURES + if (!mFocus) { + return; + } const auto* pointer = mParent->pointer(); const qreal rscale = wl_fixed_to_double(scale); @@ -161,6 +183,9 @@ void QWaylandPointerGesturePinch::zwp_pointer_gesture_pinch_v1_end(uint32_t seri int32_t cancelled) { #ifndef QT_NO_GESTURES + if (!mFocus) { + return; + } mParent->mSerial = serial; const auto* pointer = mParent->pointer(); |