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();