From 984a269d4825c7630aa15d3d4a53cec79b29c2e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Fri, 18 Aug 2017 13:13:56 +0800 Subject: [PATCH] hide preview when mouse leave item Change-Id: Ic9f8ed4d9fcd04200ad5a22dc71658e767d712b6 --- frame/item/appitem.cpp | 8 ++++++++ frame/item/appitem.h | 1 + frame/item/components/previewcontainer.cpp | 5 +++++ frame/item/components/previewcontainer.h | 1 + 4 files changed, 15 insertions(+) diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index 1df4521b1..49a368870 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -408,6 +408,14 @@ void AppItem::dropEvent(QDropEvent *e) m_itemEntry->HandleDragDrop(uriList); } +void AppItem::leaveEvent(QEvent *e) +{ + DockItem::leaveEvent(e); + + if (m_appPreviewTips->isVisible()) + m_appPreviewTips->prepareHide(); +} + void AppItem::showHoverTips() { if (!m_titles.isEmpty()) diff --git a/frame/item/appitem.h b/frame/item/appitem.h index 6fb909080..cb494e90a 100644 --- a/frame/item/appitem.h +++ b/frame/item/appitem.h @@ -42,6 +42,7 @@ private: void dragEnterEvent(QDragEnterEvent *e); void dragMoveEvent(QDragMoveEvent *e); void dropEvent(QDropEvent *e); + void leaveEvent(QEvent *e); void showHoverTips(); void invokedMenuItem(const QString &itemId, const bool checked); diff --git a/frame/item/components/previewcontainer.cpp b/frame/item/components/previewcontainer.cpp index df37e5bad..0c252c2c3 100644 --- a/frame/item/components/previewcontainer.cpp +++ b/frame/item/components/previewcontainer.cpp @@ -103,6 +103,11 @@ void PreviewContainer::checkMouseLeave() } } +void PreviewContainer::prepareHide() +{ + m_mouseLeaveTimer->start(); +} + void PreviewContainer::adjustSize() { const int count = m_snapshots.size(); diff --git a/frame/item/components/previewcontainer.h b/frame/item/components/previewcontainer.h index 2365f4435..b789c3bc0 100644 --- a/frame/item/components/previewcontainer.h +++ b/frame/item/components/previewcontainer.h @@ -38,6 +38,7 @@ public: public slots: void updateLayoutDirection(const Dock::Position dockPos); void checkMouseLeave(); + void prepareHide(); private: void adjustSize();