fix: 触屏有hover效果

qt事件转发可能存在bug,触屏移动事件几率会转发出一个普通鼠标移动事件,导致显示hover时判断错误,通过后端触屏事件与qt转发触屏事件并集判断为鼠标事件

Log: 解决任务栏触屏几率会出现hover效果
Bug: https://pms.uniontech.com/zentao/bug-view-47597.html
Bug: https://pms.uniontech.com/zentao/bug-view-46245.html
Change-Id: Ibae1134fd231c29301cbb54d28d7688984601143
Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/4825
Reviewed-by: <mailman@uniontech.com>
Reviewed-by: wangwei <wangwei@uniontech.com>
Reviewed-by: fanpengcheng <fanpengcheng@uniontech.com>
Tested-by: <mailman@uniontech.com>
This commit is contained in:
liuxing 2020-09-15 15:47:43 +08:00
parent f5ba4a0d1f
commit c5b030348a
2 changed files with 11 additions and 3 deletions

View File

@ -11,9 +11,15 @@ DockApplication::DockApplication(int &argc, char **argv) : DApplication (argc, a
bool DockApplication::notify(QObject *obj, QEvent *event)
{
QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent *>(event);
if (mouseEvent) {
// 鼠标事件可以通过source函数确定是否触屏事件并将结果写入qApp的动态属性中
qApp->setProperty(IS_TOUCH_STATE, (mouseEvent->source() == Qt::MouseEventSynthesizedByQt));
const Qt::MouseEventSource src = mouseEvent->source();
if (src == Qt::MouseEventSynthesizedByQt || src == Qt::MouseEventSynthesizedByApplication) {
qApp->setProperty(IS_TOUCH_STATE, true);
} else {
qApp->setProperty(IS_TOUCH_STATE, false);
}
}
// 任务栏屏蔽多指触控

View File

@ -285,7 +285,8 @@ void MainWindow::initConnections()
}
lastPos = curPos;
qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseMove, m_dragWidget->mapFromGlobal(curPos)
, curPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier));
, QPoint(), curPos, Qt::LeftButton, Qt::LeftButton
, Qt::NoModifier, Qt::MouseEventSynthesizedByApplication));
});
}
@ -488,7 +489,8 @@ void MainWindow::touchRequestResizeDock()
return;
}
qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseButtonPress, m_dragWidget->mapFromGlobal(touchPos)
, touchPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier));
, QPoint(), touchPos, Qt::LeftButton, Qt::NoButton
, Qt::NoModifier, Qt::MouseEventSynthesizedByApplication));
}
#include "mainwindow.moc"