From 53c639723fa81ea950b4ec9e30c3b6879c16ddc4 Mon Sep 17 00:00:00 2001 From: xiepengfei Date: Mon, 23 Mar 2026 10:54:40 +0800 Subject: [PATCH] fix: Fix the touch screen vertical swipe dragging issue Fix the touch screen vertical swipe dragging issue Log: Fix the touch screen vertical swipe dragging issue pms: BUG-351197 --- dde-clipboard/listview.cpp | 17 ++++++++++++++++- dde-clipboard/listview.h | 3 ++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dde-clipboard/listview.cpp b/dde-clipboard/listview.cpp index 73030ecb..ceaf8387 100644 --- a/dde-clipboard/listview.cpp +++ b/dde-clipboard/listview.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -17,6 +17,7 @@ #include #include #include +#include ListView::ListView(QWidget *parent) : QListView(parent) @@ -227,3 +228,17 @@ void ListView::changeEvent(QEvent *event) } return QListView::changeEvent(event); } + +bool ListView::event(QEvent *event) +{ + if (event->type() == QEvent::Gesture) { + QGestureEvent *gestureEvent = static_cast(event); + for (QGesture *gesture : gestureEvent->gestures()) { + if (gesture->state() == Qt::GestureFinished || gesture->state() == Qt::GestureCanceled) { + resetReadyDragState(); + break; + } + } + } + return QListView::event(event); +} diff --git a/dde-clipboard/listview.h b/dde-clipboard/listview.h index 60085ea7..ec1de249 100644 --- a/dde-clipboard/listview.h +++ b/dde-clipboard/listview.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2022 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -47,6 +47,7 @@ class ListView : public QListView virtual void mouseReleaseEvent(QMouseEvent *event) override; virtual void mouseDoubleClickEvent(QMouseEvent *event) override; virtual void changeEvent(QEvent *event) override; + bool event(QEvent *event) override; private: void resetReadyDragState();