Revert "feat: 修复双击企业微信图标状态异常问题"

This reverts commit 1f280805a947f1064ea7db0deee2273973c65c78.

Change-Id: Ib7c7aeae6c066021ca36d26565c69c5359cc7fd0
This commit is contained in:
songwentao 2021-11-19 16:06:07 +08:00
parent 2ebc719c3e
commit a5bb734b36
3 changed files with 14 additions and 45 deletions

View File

@ -384,6 +384,8 @@ void AbstractContainer::onWrapperDragStop()
if (m_currentDraggingWrapper == wrapper) {
m_currentDraggingWrapper = nullptr;
} else {
Q_UNREACHABLE();
}
saveCurrentOrderToConfig();

View File

@ -87,11 +87,6 @@ XEmbedTrayWidget::XEmbedTrayWidget(quint32 winId, xcb_connection_t *cnn, Display
, m_valid(true)
, m_xcbCnn(cnn)
, m_display(disp)
, m_gestureInter(new Gesture("com.deepin.daemon.Gesture"
, "/com/deepin/daemon/Gesture"
, QDBusConnection::systemBus()
, nullptr))
, m_longPress(false)
{
wrapWindow();
@ -108,10 +103,6 @@ XEmbedTrayWidget::XEmbedTrayWidget(quint32 winId, xcb_connection_t *cnn, Display
setMouseTracking(true);
connect(m_sendHoverEvent, &QTimer::timeout, this, &XEmbedTrayWidget::sendHoverEvent);
// 不能使用手势服务监听触摸按下事件来处理触摸屏下的拖动业务,因为会影响其他托盘插件右键菜单显示和隐藏的功能
connect(m_gestureInter, &Gesture::TouchSinglePressTimeout, this, &XEmbedTrayWidget::setTouchDown, Qt::UniqueConnection);
connect(m_gestureInter, &Gesture::TouchUpOrCancel, this, &XEmbedTrayWidget::setTouchEnd, Qt::UniqueConnection);
m_updateTimer->start();
}
@ -152,12 +143,13 @@ void XEmbedTrayWidget::paintEvent(QPaintEvent *e)
void XEmbedTrayWidget::mousePressEvent(QMouseEvent *e)
{
AbstractTrayWidget::mousePressEvent(e);
// 支持触摸屏触摸按下,显示右键菜单
if (e->source() == Qt::MouseEventSynthesizedByQt) {
// 右键-出现
m_startPos = e->pos();
sendClick(XCB_BUTTON_INDEX_3, QCursor::pos().x(), QCursor::pos().y());
QTimer::singleShot(100, this, [ & ] {
// 右键
sendClick(XCB_BUTTON_INDEX_3, QCursor::pos().x(), QCursor::pos().y());
});
return;
}
}
@ -165,23 +157,17 @@ void XEmbedTrayWidget::mouseMoveEvent(QMouseEvent *e)
{
AbstractTrayWidget::mouseMoveEvent(e);
if (e->source() == Qt::MouseEventSynthesizedByQt && m_longPress) {
// 模拟拖动时隐藏右键菜单效果, 所以间距设置为5个像素值
if (qAbs(e->pos().x() - m_startPos.x()) > 5 || qAbs(e->pos().y() - m_startPos.y()) > 5) {
sendClick(XCB_BUTTON_INDEX_2, QCursor::pos().x(), QCursor::pos().y());
return;
}
// ignore the touchEvent
if (e->source() == Qt::MouseEventSynthesizedByQt) {
// 临时方案隐藏微信等应用的右键菜单
// 左键
sendClick(XCB_BUTTON_INDEX_2, QCursor::pos().x(), QCursor::pos().y());
return;
}
m_sendHoverEvent->start();
}
void XEmbedTrayWidget::mouseReleaseEvent(QMouseEvent *e)
{
// 鼠标释放事件不往父类传递
QWidget::mouseReleaseEvent(e);
}
void XEmbedTrayWidget::configContainerPosition()
{
auto c = IS_WAYLAND_DISPLAY ? m_xcbCnn : QX11Info::connection();
@ -603,13 +589,3 @@ bool XEmbedTrayWidget::isBadWindow()
return result;
}
void XEmbedTrayWidget::setTouchDown()
{
m_longPress = true;
}
void XEmbedTrayWidget::setTouchEnd()
{
m_longPress = false;
}

View File

@ -23,7 +23,6 @@
#define XEMBEDTRAYWIDGET_H
#include "abstracttraywidget.h"
#include <com_deepin_daemon_gesture.h>
#include <QWidget>
#include <QTimer>
@ -31,7 +30,6 @@
#include <xcb/xcb.h>
typedef struct _XDisplay Display;
using Gesture = com::deepin::daemon::Gesture;
class XEmbedTrayWidget : public AbstractTrayWidget
{
@ -55,7 +53,6 @@ private:
void paintEvent(QPaintEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override;
void mouseReleaseEvent(QMouseEvent *e) override;
void configContainerPosition();
void wrapWindow();
@ -68,8 +65,6 @@ private slots:
void setX11PassMouseEvent(const bool pass);
void setWindowOnTop(const bool top);
bool isBadWindow();
void setTouchDown();
void setTouchEnd();
private:
bool m_active = false;
@ -83,10 +78,6 @@ private:
bool m_valid;
xcb_connection_t *m_xcbCnn;
Display* m_display;
Gesture *m_gestureInter;
QPoint m_startPos;
bool m_longPress;
};
#endif // XEMBEDTRAYWIDGET_H