mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
feat: prevent unexpected trigger
Change-Id: Ie60299680e8442598fbf9c9fa67c73cbd1cf3d61
This commit is contained in:
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
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user