feat: prevent unexpected trigger

Change-Id: Ie60299680e8442598fbf9c9fa67c73cbd1cf3d61
This commit is contained in:
haruyukilxz 2018-11-07 15:26:56 +08:00 committed by 流年匆忙
parent 598978d350
commit 7ea3341aca
Notes: gerrit 2018-11-08 16:23:45 +08:00
Verified+1: <jenkins@deepin.com>
Code-Review+2: 流年匆忙 <justforlxz@gmail.com>
Submitted-by: 流年匆忙 <justforlxz@gmail.com>
Submitted-at: Thu, 08 Nov 2018 16:23:44 +0800
Reviewed-on: https://cr.deepin.io/39550
Project: dde/dde-dock
Branch: refs/heads/master
2 changed files with 20 additions and 13 deletions

View File

@ -32,6 +32,7 @@
#include <QPainter> #include <QPainter>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QSizeF> #include <QSizeF>
#include <QTimer>
struct SHMInfo struct SHMInfo
{ {
@ -51,14 +52,12 @@ struct SHMInfo
}; };
AppSnapshot::AppSnapshot(const WId wid, QWidget *parent) AppSnapshot::AppSnapshot(const WId wid, QWidget *parent)
: QWidget(parent), : QWidget(parent)
, m_wid(wid)
m_wid(wid), , m_title(new TipsWidget)
, m_closeBtn(new DImageButton)
m_title(new TipsWidget), , m_waitLeaveTimer(new QTimer(this))
m_closeBtn(new DImageButton), , m_wmHelper(DWindowManagerHelper::instance())
m_wmHelper(DWindowManagerHelper::instance())
{ {
m_closeBtn->setFixedSize(24, 24); m_closeBtn->setFixedSize(24, 24);
m_closeBtn->setNormalPic(":/icons/resources/close_round_normal.svg"); m_closeBtn->setNormalPic(":/icons/resources/close_round_normal.svg");
@ -67,6 +66,9 @@ AppSnapshot::AppSnapshot(const WId wid, QWidget *parent)
m_closeBtn->setVisible(false); m_closeBtn->setVisible(false);
m_title->setObjectName("AppSnapshotTitle"); m_title->setObjectName("AppSnapshotTitle");
m_waitLeaveTimer->setInterval(200);
m_waitLeaveTimer->setSingleShot(true);
QHBoxLayout *centralLayout = new QHBoxLayout; QHBoxLayout *centralLayout = new QHBoxLayout;
centralLayout->addWidget(m_title); centralLayout->addWidget(m_title);
centralLayout->addWidget(m_closeBtn); centralLayout->addWidget(m_closeBtn);
@ -79,7 +81,9 @@ AppSnapshot::AppSnapshot(const WId wid, QWidget *parent)
connect(m_closeBtn, &DImageButton::clicked, this, &AppSnapshot::closeWindow, Qt::QueuedConnection); connect(m_closeBtn, &DImageButton::clicked, this, &AppSnapshot::closeWindow, Qt::QueuedConnection);
connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, this, &AppSnapshot::compositeChanged, Qt::QueuedConnection); connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, this, &AppSnapshot::compositeChanged, Qt::QueuedConnection);
connect(m_waitLeaveTimer, &QTimer::timeout, this, [=] {
emit entered(wid);
});
QTimer::singleShot(1, this, &AppSnapshot::compositeChanged); QTimer::singleShot(1, this, &AppSnapshot::compositeChanged);
} }
@ -198,10 +202,12 @@ void AppSnapshot::enterEvent(QEvent *e)
{ {
QWidget::enterEvent(e); QWidget::enterEvent(e);
if (!m_wmHelper->hasComposite()) if (!m_wmHelper->hasComposite()) {
m_closeBtn->setVisible(true); m_closeBtn->setVisible(true);
else }
emit entered(m_wid); else {
m_waitLeaveTimer->start();
}
update(); update();
} }
@ -211,6 +217,7 @@ void AppSnapshot::leaveEvent(QEvent *e)
QWidget::leaveEvent(e); QWidget::leaveEvent(e);
m_closeBtn->setVisible(false); m_closeBtn->setVisible(false);
m_waitLeaveTimer->stop();
update(); update();
} }

View File

@ -88,7 +88,7 @@ private:
QRectF m_snapshotSrcRect; QRectF m_snapshotSrcRect;
TipsWidget *m_title; TipsWidget *m_title;
QTimer *m_waitLeaveTimer;
DImageButton *m_closeBtn; DImageButton *m_closeBtn;
DWindowManagerHelper *m_wmHelper; DWindowManagerHelper *m_wmHelper;
}; };