From 7d2d83c2d84d159436bfc0cb6a3e444db9da5fc5 Mon Sep 17 00:00:00 2001 From: liuxing Date: Mon, 7 Sep 2020 16:09:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=BB=E5=8A=A1=E6=A0=8F=E5=9C=A8?= =?UTF-8?q?=E4=B8=8A=E6=97=B6=E6=8B=96=E5=8A=A8=E6=94=B9=E5=8F=98=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=A0=8F=E7=9A=84=E9=AB=98=E5=BA=A6=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E6=89=8B=E6=8C=87=E7=A7=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当触屏拖拽触屏按下坐标在任务栏拖拽窗口之外时,拖拽窗口不会收到触屏的mousemove事件,导致拖拽中途不刷新任务栏大小。通过转发后端触屏移动信号解决。 Log: 解决任务栏拖动改变任务栏的高度时不跟随手指移动问题 Bug: https://pms.uniontech.com/zentao/bug-view-46281.html Change-Id: I4b74614c3a830b2ed164c1b80f34a97ef8800e4a Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/3870 Reviewed-by: Reviewed-by: niecheng Reviewed-by: fanpengcheng Tested-by: --- frame/util/touchsignalmanager.cpp | 1 + frame/util/touchsignalmanager.h | 1 + frame/window/mainwindow.cpp | 13 ++++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/frame/util/touchsignalmanager.cpp b/frame/util/touchsignalmanager.cpp index c1ec11f0b..213e71b66 100644 --- a/frame/util/touchsignalmanager.cpp +++ b/frame/util/touchsignalmanager.cpp @@ -19,6 +19,7 @@ TouchSignalManager::TouchSignalManager(QObject *parent) connect(m_gestureInter, &Gesture::TouchUpOrCancel, this, &TouchSignalManager::dealTouchRelease); connect(m_gestureInter, &Gesture::TouchPressTimeout, this, &TouchSignalManager::dealTouchPress); + connect(m_gestureInter, &Gesture::TouchMoving, this, &TouchSignalManager::touchMove); } TouchSignalManager::~TouchSignalManager() diff --git a/frame/util/touchsignalmanager.h b/frame/util/touchsignalmanager.h index cbe98f2e6..81b04ecc8 100644 --- a/frame/util/touchsignalmanager.h +++ b/frame/util/touchsignalmanager.h @@ -43,6 +43,7 @@ signals: void touchRelease(double scaleX, double scaleY); // 转发后端拖拽任务栏高度单指触控按压信号,当前设计1000ms void middleTouchPress(double scaleX, double scaleY); + void touchMove(double scaleX, double scaleY); private slots: void dealShortTouchPress(int time, double scaleX, double scaleY); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index d2c4ca229..31c616041 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -277,6 +277,16 @@ void MainWindow::initConnections() // 响应后端触控屏拖拽任务栏高度长按信号 connect(TouchSignalManager::instance(), &TouchSignalManager::middleTouchPress, this, &MainWindow::touchRequestResizeDock); + connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, [ this ](){ + static QPoint lastPos; + QPoint curPos = QCursor::pos(); + if (lastPos == curPos) { + return; + } + lastPos = curPos; + qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseMove, m_dragWidget->mapFromGlobal(curPos) + , curPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier)); + }); } void MainWindow::getTrayVisableItemCount() @@ -468,7 +478,8 @@ void MainWindow::touchRequestResizeDock() if (!touchRect.contains(touchPos)) { return; } - qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseButtonPress, QPoint(), touchPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier)); + qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseButtonPress, m_dragWidget->mapFromGlobal(touchPos) + , touchPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier)); } #include "mainwindow.moc"