fix: 拖动任务栏上的图标移动后移除残留在桌面上

原因是手指操作存在多指操作,导致拖拽应用图标残留桌面

Log: 拖动任务栏上的图标移动后移除残留在桌面上
Bug: https://pms.uniontech.com/zentao/bug-view-40987.html
Change-Id: Id1279ac0f8ca48f8242682740f1b91ea7926910b
Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/5595
Reviewed-by: <mailman@uniontech.com>
Reviewed-by: fanpengcheng <fanpengcheng@uniontech.com>
Tested-by: <mailman@uniontech.com>
This commit is contained in:
wangnengdeng 2020-09-19 21:20:35 +08:00 committed by fanpengcheng
parent 777f8f5141
commit 9dfca71863
2 changed files with 47 additions and 33 deletions

View File

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

View File

@ -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;