mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
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:
parent
f5ba4a0d1f
commit
c5b030348a
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
// 任务栏屏蔽多指触控
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user