fix: 任务栏在上时拖动改变任务栏的高度时不跟随手指移动

当触屏拖拽触屏按下坐标在任务栏拖拽窗口之外时,拖拽窗口不会收到触屏的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: <mailman@uniontech.com>
Reviewed-by: niecheng <niecheng@uniontech.com>
Reviewed-by: fanpengcheng <fanpengcheng@uniontech.com>
Tested-by: <mailman@uniontech.com>
This commit is contained in:
liuxing 2020-09-07 16:09:40 +08:00
parent b1291258c5
commit 7d2d83c2d8
3 changed files with 14 additions and 1 deletions

View File

@ -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()

View File

@ -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);

View File

@ -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"