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

View File

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