mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +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::TouchUpOrCancel, this, &TouchSignalManager::dealTouchRelease);
|
||||||
|
|
||||||
connect(m_gestureInter, &Gesture::TouchPressTimeout, this, &TouchSignalManager::dealTouchPress);
|
connect(m_gestureInter, &Gesture::TouchPressTimeout, this, &TouchSignalManager::dealTouchPress);
|
||||||
|
connect(m_gestureInter, &Gesture::TouchMoving, this, &TouchSignalManager::touchMove);
|
||||||
}
|
}
|
||||||
|
|
||||||
TouchSignalManager::~TouchSignalManager()
|
TouchSignalManager::~TouchSignalManager()
|
||||||
|
@ -43,6 +43,7 @@ signals:
|
|||||||
void touchRelease(double scaleX, double scaleY);
|
void touchRelease(double scaleX, double scaleY);
|
||||||
// 转发后端拖拽任务栏高度单指触控按压信号,当前设计1000ms
|
// 转发后端拖拽任务栏高度单指触控按压信号,当前设计1000ms
|
||||||
void middleTouchPress(double scaleX, double scaleY);
|
void middleTouchPress(double scaleX, double scaleY);
|
||||||
|
void touchMove(double scaleX, double scaleY);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void dealShortTouchPress(int time, double scaleX, double scaleY);
|
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::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()
|
void MainWindow::getTrayVisableItemCount()
|
||||||
@ -468,7 +478,8 @@ void MainWindow::touchRequestResizeDock()
|
|||||||
if (!touchRect.contains(touchPos)) {
|
if (!touchRect.contains(touchPos)) {
|
||||||
return;
|
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"
|
#include "mainwindow.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user