dde-dock/frame/util/dockapplication.cpp
liuxing c5b030348a 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>
2020-09-15 21:47:25 +08:00

33 lines
998 B
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "dockapplication.h"
#include "constants.h"
#include <QMouseEvent>
#include <QTouchEvent>
DockApplication::DockApplication(int &argc, char **argv) : DApplication (argc, argv)
{
}
bool DockApplication::notify(QObject *obj, QEvent *event)
{
QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent *>(event);
if (mouseEvent) {
// 鼠标事件可以通过source函数确定是否触屏事件并将结果写入qApp的动态属性中
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);
}
}
// 任务栏屏蔽多指触控
QTouchEvent *touchEvent = dynamic_cast<QTouchEvent *>(event);
if(touchEvent && (touchEvent->touchPoints().size() > 1)) {
return true;
}
return DApplication::notify(obj, event);
}