bugfix: disable item enter-event when menu or preview show

Change-Id: I3c8b5790b3fe01d726f771c448e24a614f2121c1
This commit is contained in:
杨万青 2015-10-10 18:59:12 +08:00
parent 229fa218a1
commit 6b6f582162
Notes: Deepin Code Review 2016-06-14 07:19:47 +00:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: <mr.asianwang@gmail.com>
Submitted-by: <mr.asianwang@gmail.com>
Submitted-at: Sat, 10 Oct 2015 19:47:18 +0800
Reviewed-on: https://cr.deepin.io/7663
Project: dde/dde-dock
Branch: refs/heads/master
7 changed files with 30 additions and 1 deletions

View File

@ -55,7 +55,8 @@ void PluginItemWrapper::enterEvent(QEvent *)
{
emit mouseEntered();
showPreview();
if (hoverable())
showPreview();
}
void PluginItemWrapper::leaveEvent(QEvent *)

View File

@ -445,6 +445,9 @@ void Panel::showPanelMenu()
QPoint tmpPos = QCursor::pos();
PanelMenu::instance()->showMenu(tmpPos.x(),tmpPos.y());
m_appLayout->itemHoverableChange(false);
m_pluginLayout->itemHoverableChange(false);
}
void Panel::loadResources()

View File

@ -81,6 +81,16 @@ QPoint AbstractDockItem::getNextPos()
{
return m_itemNextPos;
}
bool AbstractDockItem::hoverable() const
{
return m_hoverable;
}
void AbstractDockItem::setHoverable(bool hoverable)
{
m_hoverable = hoverable;
}
void AbstractDockItem::setNextPos(const QPoint &value)
{
@ -187,6 +197,9 @@ void AbstractDockItem::showMenu()
m_dbusMenu = new DBusMenu(op.path(), this);
connect(m_dbusMenu, &DBusMenu::ItemInvoked, this, &AbstractDockItem::invokeMenuItem);
connect(m_dbusMenu, &DBusMenu::MenuUnregistered, [=] {
setHoverable(true);
});
QJsonObject targetObj;
targetObj.insert("x", QJsonValue(globalX() + width() / 2));
@ -195,6 +208,8 @@ void AbstractDockItem::showMenu()
targetObj.insert("menuJsonContent", QJsonValue(getMenuContent()));
m_dbusMenu->ShowMenu(QString(QJsonDocument(targetObj).toJson()));
setHoverable(false);
}
}

View File

@ -55,6 +55,9 @@ public:
QPoint globalPos();
QPoint getNextPos();
bool hoverable() const;
void setHoverable(bool hoverable);
signals:
void dragStart();
void dragEntered(QDragEnterEvent * event);
@ -75,6 +78,7 @@ signals:
protected:
bool m_moveable = true;
bool m_isActived = false;
bool m_hoverable = true;
PreviewFrame *m_titlePreview = NULL;
HighlightEffect * m_highlight = NULL;
ItemTitleLabel *m_titleLabel = NULL;

View File

@ -310,6 +310,9 @@ void AppItem::onMouseRelease(QMouseEvent *event)
void AppItem::onMouseEnter()
{
if (!hoverable())
return;
emit mouseEntered();
m_appBackground->setIsHovered(true);
showPreview();

View File

@ -41,6 +41,7 @@ void DockLayout::insertItem(AbstractDockItem *item, int index)
connect(item, &AbstractDockItem::dragExited, this, &DockLayout::slotItemExited);
connect(item, &AbstractDockItem::widthChanged, this, &DockLayout::relayout);
connect(item, &AbstractDockItem::moveAnimationFinished,this, &DockLayout::slotAnimationFinish);
connect(this, &DockLayout::itemHoverableChange, item, &AbstractDockItem::setHoverable);
m_ddam->Sort(itemsIdList());
@ -212,6 +213,7 @@ bool DockLayout::eventFilter(QObject *obj, QEvent *event)
case QEvent::MouseMove:
// case QEvent::Enter:
// case QEvent::Leave:
emit itemHoverableChange(true);
if (m_dragItemMap.isEmpty())
break;
restoreTmpItem();

View File

@ -51,6 +51,7 @@ signals:
void itemDropped();
void contentsWidthChange();
void frameUpdate();
void itemHoverableChange(bool hoverable);
public slots:
void removeSpacingItem();