From d0c38bccc47db1dcce56ed378dddc8580199234e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Mon, 19 Mar 2018 11:33:16 +0800 Subject: [PATCH] update app item timeline settings Change-Id: Idb252f1928b8789cccf779695789c93b98b4620a --- frame/item/appitem.cpp | 24 ++++++++++++++++-------- frame/item/appitem.h | 1 + frame/util/dockpopupwindow.cpp | 2 +- frame/window/mainwindow.cpp | 1 + 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index 7c62255e8..17a531e98 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -176,6 +176,8 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) AppItem::~AppItem() { + stopSwingEffect(); + m_appNameTips->deleteLater(); m_appPreviewTips->deleteLater(); } @@ -529,8 +531,7 @@ void AppItem::updateWindowInfos(const WindowInfoMap &info) if (DockDisplayMode == DisplayMode::Fashion) playSwingEffect(); } else { - // stop swing effect - m_swingEffectView->setVisible(false); + stopSwingEffect(); } update(); @@ -589,11 +590,9 @@ void AppItem::cancelAndHidePreview() void AppItem::playSwingEffect() { - if (m_itemAnimation.timeLine()) + stopSwingEffect(); + if (!m_itemAnimation.timeLine()) { - m_itemAnimation.timeLine()->stop(); - m_itemAnimation.clear(); - } else { QTimeLine *tl = new QTimeLine(1200, this); tl->setFrameRange(0, 60); tl->setLoopCount(1); @@ -603,8 +602,6 @@ void AppItem::playSwingEffect() m_itemAnimation.setTimeLine(tl); } - m_itemScene->clear(); - const auto ratio = qApp->devicePixelRatio(); const QRect r = rect(); const QPixmap &icon = m_appIcon; @@ -636,6 +633,17 @@ void AppItem::playSwingEffect() m_swingEffectView->setVisible(true); } +void AppItem::stopSwingEffect() +{ + // stop swing effect + m_swingEffectView->setVisible(false); + + if (m_itemAnimation.timeLine()) + m_itemAnimation.timeLine()->stop(); + m_itemAnimation.clear(); + m_itemScene->clear(); +} + void AppItem::checkAttentionEffect() { QTimer::singleShot(1000, this, [=] { diff --git a/frame/item/appitem.h b/frame/item/appitem.h index a55a1def1..b4891c57a 100644 --- a/frame/item/appitem.h +++ b/frame/item/appitem.h @@ -84,6 +84,7 @@ private slots: void showPreview(); void cancelAndHidePreview(); void playSwingEffect(); + void stopSwingEffect(); void checkAttentionEffect(); private: diff --git a/frame/util/dockpopupwindow.cpp b/frame/util/dockpopupwindow.cpp index 0df47bf15..454f45615 100644 --- a/frame/util/dockpopupwindow.cpp +++ b/frame/util/dockpopupwindow.cpp @@ -123,7 +123,7 @@ bool DockPopupWindow::eventFilter(QObject *o, QEvent *e) // FIXME: ensure position move after global mouse release event if (isVisible()) - QTimer::singleShot(0, this, [=] { show(m_lastPoint, m_model); }); + QTimer::singleShot(10, this, [=] { show(m_lastPoint, m_model); }); return false; } diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index b2437e541..36c8c588f 100644 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -322,6 +322,7 @@ void MainWindow::internalMove(const QPoint &p) } } + // using platform window to set real window position windowHandle()->handle()->setGeometry(QRect(rp.x(), rp.y(), wx, hx)); }