summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandpointergestures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/qwaylandpointergestures.cpp')
-rw-r--r--src/client/qwaylandpointergestures.cpp31
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();