From d60938ed33a5fcd8a32b8c33b9f127c20bb4de61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=81=82=E6=88=90?= Date: Tue, 18 Aug 2020 16:41:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=202D=E6=A8=A1=E5=BC=8F=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=8C=BA=E5=9F=9F=E6=B2=A1=E6=9C=89=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E9=A9=BB=E7=95=99=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2D模式下拖动任务栏的图标,会有移除信息提示 Log: 2D模式下,应用区域没有移除驻留提示 Bug: https://pms.uniontech.com/zentao/bug-view-41285.html Change-Id: I0bcbe61cdf364f24c48fcd6ba083921c455f0e14 Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/2265 Reviewed-by: wangwei Reviewed-by: niecheng Reviewed-by: Tested-by: --- frame/item/components/appdragwidget.cpp | 34 ++++++++++++++++++++----- frame/item/components/appdragwidget.h | 1 + frame/panel/mainpanelcontrol.cpp | 12 ++++----- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/frame/item/components/appdragwidget.cpp b/frame/item/components/appdragwidget.cpp index 28083e3d1..38563df81 100644 --- a/frame/item/components/appdragwidget.cpp +++ b/frame/item/components/appdragwidget.cpp @@ -186,14 +186,23 @@ const QPoint AppDragWidget::topleftPoint() const const QPoint AppDragWidget::popupMarkPoint(Dock::Position pos) { QPoint p(topleftPoint()); + QRect r = rect(); + //关闭特效,原本的图标设置小,然后隐藏,需要手动设置大小保证tips位置正确 + if (!DWindowManagerHelper::instance()->hasComposite()) { + r.setWidth(m_iconSize.width() + 3); + r.setHeight(m_iconSize.height() + 3); + } - const QRect r = rect(); switch (pos) { case Top: p += QPoint(r.width() / 2, r.height()); break; case Bottom: - p += QPoint(r.width() / 2, 0); + if (!DWindowManagerHelper::instance()->hasComposite()) { + p += QPoint(0 , -r.height() / 2); + } else { + p += QPoint(r.width() / 2, 0); + } break; case Left: p += QPoint(r.width(), r.height() / 2); @@ -210,12 +219,20 @@ void AppDragWidget::dropEvent(QDropEvent *event) m_followMouseTimer->stop(); if (isRemoveAble()) { - showRemoveAnimation(); + if (DWindowManagerHelper::instance()->hasComposite()) { + showRemoveAnimation(); + } else { + hide(); + } AppItem *appItem = static_cast(event->source()); appItem->undock(); m_popupWindow->setVisible(false); } else { - showGoBackAnimation(); + if (DWindowManagerHelper::instance()->hasComposite()) { + showGoBackAnimation(); + } else { + hide(); + } } } @@ -226,9 +243,14 @@ void AppDragWidget::hideEvent(QHideEvent *event) void AppDragWidget::setAppPixmap(const QPixmap &pix) { - // QSize(3, 3) to fix pixmap be cliped - setFixedSize(pix.size() + QSize(3, 3)); + if (DWindowManagerHelper::instance()->hasComposite()) { + // QSize(3, 3) to fix pixmap be cliped + setFixedSize(pix.size() + QSize(3, 3)); + } else { + setFixedSize(QSize(10, 10)); + } + m_iconSize = pix.size(); m_object->setAppPixmap(pix); m_object->setTransformOriginPoint(pix.rect().center()); } diff --git a/frame/item/components/appdragwidget.h b/frame/item/components/appdragwidget.h index 1a1601815..ae683fc71 100644 --- a/frame/item/components/appdragwidget.h +++ b/frame/item/components/appdragwidget.h @@ -79,6 +79,7 @@ private: Dock::Position m_dockPosition; QRect m_dockGeometry; QPoint m_originPoint; + QSize m_iconSize; Dock::TipsWidget *m_removeTips; DockPopupWindow *m_popupWindow; /** diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index 624ed5492..a2c6e88ec 100755 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -683,18 +683,16 @@ void MainPanelControl::startDrag(DockItem *item) appDrag->appDragWidget()->setOriginPos((m_appAreaSonWidget->mapToGlobal(item->pos()))); appDrag->appDragWidget()->setDockInfo(m_position, QRect(mapToGlobal(pos()), size())); + const QPixmap &dragPix = qobject_cast(item)->appIcon(); + + appDrag->setPixmap(dragPix); + m_appDragWidget->show(); if (DWindowManagerHelper::instance()->hasComposite()) { - appDrag->setPixmap(pixmap); - m_appDragWidget->show(); - static_cast(m_appDragWidget)->viewport()->installEventFilter(this); } else { - const QPixmap &dragPix = qobject_cast(item)->appIcon(); - appDrag->QDrag::setPixmap(dragPix); - appDrag->setHotSpot(dragPix.rect().center() / dragPix.devicePixelRatioF()); - } + } drag = appDrag; } else {