fix popup window position error when item is moved

Change-Id: Ie22736efbeffc8733a3db99671d298616bf92cff
This commit is contained in:
石博文 2018-02-05 10:23:37 +08:00
parent 8ee616a682
commit 2012f1b6bf
Notes: Deepin Code Review 2018-02-05 11:13:10 +08:00
Verified+1: Anonymous Coward #1000004
Verified+1: wangyingtao <wangyingtao@deepin.com>
Code-Review+2: 石博文 <sbw@sbw.so>
Submitted-by: 石博文 <sbw@sbw.so>
Submitted-at: Mon, 05 Feb 2018 11:13:10 +0800
Reviewed-on: https://cr.deepin.io/31426
Project: dde/dde-dock
Branch: refs/heads/master
2 changed files with 20 additions and 10 deletions

View File

@ -58,13 +58,13 @@ DockItem::DockItem(QWidget *parent)
m_popupTipsDelayTimer->setInterval(500);
m_popupTipsDelayTimer->setSingleShot(true);
m_popupAdjustDelayTimer->setInterval(100);
m_popupAdjustDelayTimer->setInterval(10);
m_popupAdjustDelayTimer->setSingleShot(true);
setGraphicsEffect(m_hoverEffect);
connect(m_popupTipsDelayTimer, &QTimer::timeout, this, &DockItem::showHoverTips);
connect(m_popupAdjustDelayTimer, &QTimer::timeout, this, &DockItem::updatePopupPosition);
connect(m_popupAdjustDelayTimer, &QTimer::timeout, this, &DockItem::updatePopupPosition, Qt::QueuedConnection);
}
DockItem::~DockItem()
@ -83,6 +83,23 @@ void DockItem::setDockDisplayMode(const DisplayMode mode)
DockDisplayMode = mode;
}
bool DockItem::event(QEvent *event)
{
if (m_popupShown)
{
switch (event->type())
{
case QEvent::Paint:
if (!m_popupAdjustDelayTimer->isActive())
m_popupAdjustDelayTimer->start();
break;
default:;
}
}
return QWidget::event(event);
}
void DockItem::updatePopupPosition()
{
Q_ASSERT(sender() == m_popupAdjustDelayTimer);
@ -99,13 +116,6 @@ void DockItem::paintEvent(QPaintEvent *e)
QWidget::paintEvent(e);
}
void DockItem::moveEvent(QMoveEvent *e)
{
QWidget::moveEvent(e);
m_popupAdjustDelayTimer->start();
}
void DockItem::mousePressEvent(QMouseEvent *e)
{
m_popupTipsDelayTimer->stop();

View File

@ -67,8 +67,8 @@ signals:
void requestRefershWindowVisible() const;
protected:
bool event(QEvent *event);
void paintEvent(QPaintEvent *e);
void moveEvent(QMoveEvent *e);
void mousePressEvent(QMouseEvent *e);
void enterEvent(QEvent *e);
void leaveEvent(QEvent *e);