diff --git a/frame/item/components/appdragwidget.cpp b/frame/item/components/appdragwidget.cpp index 0524535f1..473318e39 100644 --- a/frame/item/components/appdragwidget.cpp +++ b/frame/item/components/appdragwidget.cpp @@ -141,38 +141,8 @@ void AppDragWidget::dragEnterEvent(QDragEnterEvent *event) void AppDragWidget::dragMoveEvent(QDragMoveEvent *event) { - bool model = true; - Dock::Position pos = Dock::Position::Bottom; - - DockPopupWindow *popup = m_popupWindow; - if (isRemoveAble()) { - QWidget *lastContent = popup->getContent(); - if (lastContent) - lastContent->setVisible(false); - - switch (pos) { - case Top: popup->setArrowDirection(DockPopupWindow::ArrowTop); break; - case Bottom: popup->setArrowDirection(DockPopupWindow::ArrowBottom); break; - case Left: popup->setArrowDirection(DockPopupWindow::ArrowLeft); break; - case Right: popup->setArrowDirection(DockPopupWindow::ArrowRight); break; - } - popup->resize(m_removeTips->sizeHint()); - popup->setContent(m_removeTips); - - const QPoint p = popupMarkPoint(pos); - if (!popup->isVisible()) - QMetaObject::invokeMethod(popup, "show", Qt::QueuedConnection, Q_ARG(QPoint, p), Q_ARG(bool, model)); - else - popup->show(p, model); - - m_object->setOpacity(0.5); - m_animOpacity->setStartValue(0.5); - } else { - m_object->setOpacity(1.0); - m_animOpacity->setStartValue(1.0); - if (popup->isVisible()) - popup->setVisible(false); - } + Q_UNUSED(event); + showRemoveTips(); } const QPoint AppDragWidget::topleftPoint() const @@ -370,4 +340,46 @@ void AppDragWidget::enterEvent(QEvent *event) && m_animGroup->state() != QParallelAnimationGroup::Running) { hide(); } +} + +void AppDragWidget::showRemoveTips() +{ + bool model = true; + Dock::Position pos = Dock::Position::Bottom; + + DockPopupWindow *popup = m_popupWindow; + if (isRemoveAble()) { + QWidget *lastContent = popup->getContent(); + if (lastContent) + lastContent->setVisible(false); + + switch (pos) { + case Top: popup->setArrowDirection(DockPopupWindow::ArrowTop); break; + case Bottom: popup->setArrowDirection(DockPopupWindow::ArrowBottom); break; + case Left: popup->setArrowDirection(DockPopupWindow::ArrowLeft); break; + case Right: popup->setArrowDirection(DockPopupWindow::ArrowRight); break; + } + popup->resize(m_removeTips->sizeHint()); + popup->setContent(m_removeTips); + + const QPoint p = popupMarkPoint(pos); + if (!popup->isVisible()) + QMetaObject::invokeMethod(popup, "show", Qt::QueuedConnection, Q_ARG(QPoint, p), Q_ARG(bool, model)); + else + popup->show(p, model); + + m_object->setOpacity(0.5); + m_animOpacity->setStartValue(0.5); + } else { + m_object->setOpacity(1.0); + m_animOpacity->setStartValue(1.0); + if (popup->isVisible()) + popup->setVisible(false); + } +} + +void AppDragWidget::moveEvent(QMoveEvent *event) +{ + Q_UNUSED(event); + showRemoveTips(); } \ No newline at end of file diff --git a/frame/item/components/appdragwidget.h b/frame/item/components/appdragwidget.h index f311d96f7..888fc22d3 100644 --- a/frame/item/components/appdragwidget.h +++ b/frame/item/components/appdragwidget.h @@ -55,7 +55,8 @@ protected: void dragMoveEvent(QDragMoveEvent *event) override; void dropEvent(QDropEvent *event) override; void hideEvent(QHideEvent *event) override; - void enterEvent(QEvent *event); + void moveEvent(QMoveEvent *event) override; + void enterEvent(QEvent *event) override; private: void initAnimations(); @@ -66,6 +67,7 @@ private: QAbstractAnimation::State oldState); const QPoint popupMarkPoint(Dock::Position pos); const QPoint topleftPoint() const; + void showRemoveTips(); private: AppGraphicsObject *m_object;