mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
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:
parent
b1291258c5
commit
7d2d83c2d8
@ -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()
|
||||
|
@ -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);
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user