mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
fix: 解决"Remove"提示残留在桌面上的问题
问题的原因是因为在拖拽Widget中使用了一个静态的提示”移除“对象,这个可能在一定条件下 出现没有消失的情况。因此将此弹出提示的Widget改成拖拽对象的成员变量,这样当拖拽对象 销毁时,弹出提示对象也会一并给清除,从而解决”移除“提示不消失的问题 Log: 拖动任务栏上的图标移动后,"Remove"提示仍残留在桌面上 Task: https://pms.uniontech.com/zentao/bug-view-40987.html Change-Id: I42d28c97e80b1cc1522d5a984d11a1a7a4f8eeef Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/1065 Reviewed-by: fanpengcheng <fanpengcheng@uniontech.com> Reviewed-by: <mailman@uniontech.com> Reviewed-by: niecheng <niecheng@uniontech.com> Tested-by: <mailman@uniontech.com>
This commit is contained in:
parent
a68b828c7e
commit
6e104465eb
@ -23,7 +23,6 @@
|
||||
#include "appdragwidget.h"
|
||||
#include <QGSettings>
|
||||
|
||||
QPointer<DockPopupWindow> AppDragWidget::PopupWindow(nullptr);
|
||||
class AppGraphicsObject : public QGraphicsObject
|
||||
{
|
||||
public:
|
||||
@ -70,7 +69,8 @@ AppDragWidget::AppDragWidget(QWidget *parent) :
|
||||
m_animOpacity(new QPropertyAnimation(m_object, "opacity", this)),
|
||||
m_animGroup(new QParallelAnimationGroup(this)),
|
||||
m_goBackAnim(new QPropertyAnimation(this, "pos", this)),
|
||||
m_removeTips(new TipsWidget(this))
|
||||
m_removeTips(new TipsWidget(this)),
|
||||
m_popupWindow(nullptr)
|
||||
{
|
||||
m_removeTips->setText(tr("Remove"));
|
||||
m_removeTips->setObjectName("AppRemoveTips");
|
||||
@ -84,8 +84,8 @@ AppDragWidget::AppDragWidget(QWidget *parent) :
|
||||
arrowRectangle->setShadowXOffset(0);
|
||||
arrowRectangle->setArrowWidth(18);
|
||||
arrowRectangle->setArrowHeight(10);
|
||||
PopupWindow = arrowRectangle;
|
||||
PopupWindow->setRadius(18);
|
||||
m_popupWindow = arrowRectangle;
|
||||
m_popupWindow->setRadius(18);
|
||||
|
||||
m_scene->addItem(m_object);
|
||||
setScene(m_scene);
|
||||
@ -114,6 +114,10 @@ AppDragWidget::AppDragWidget(QWidget *parent) :
|
||||
|
||||
AppDragWidget::~AppDragWidget()
|
||||
{
|
||||
if (m_popupWindow != nullptr) {
|
||||
delete m_popupWindow;
|
||||
m_popupWindow=nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void AppDragWidget::mouseMoveEvent(QMouseEvent *event)
|
||||
@ -136,7 +140,7 @@ void AppDragWidget::dragMoveEvent(QDragMoveEvent *event)
|
||||
bool model = true;
|
||||
Dock::Position pos = Dock::Position::Bottom;
|
||||
|
||||
DockPopupWindow *popup = PopupWindow.data();
|
||||
DockPopupWindow *popup = m_popupWindow;
|
||||
if (isRemoveAble()) {
|
||||
QWidget *lastContent = popup->getContent();
|
||||
if (lastContent)
|
||||
@ -209,7 +213,7 @@ void AppDragWidget::dropEvent(QDropEvent *event)
|
||||
showRemoveAnimation();
|
||||
AppItem *appItem = static_cast<AppItem *>(event->source());
|
||||
appItem->undock();
|
||||
PopupWindow->setVisible(false);
|
||||
m_popupWindow->setVisible(false);
|
||||
} else {
|
||||
showGoBackAnimation();
|
||||
}
|
||||
|
@ -78,8 +78,8 @@ private:
|
||||
Dock::Position m_dockPosition;
|
||||
QRect m_dockGeometry;
|
||||
QPoint m_originPoint;
|
||||
Dock::TipsWidget * m_removeTips;
|
||||
static QPointer<DockPopupWindow> PopupWindow;
|
||||
Dock::TipsWidget *m_removeTips;
|
||||
DockPopupWindow *m_popupWindow;
|
||||
/**
|
||||
* @brief m_distanceMultiple: 倍数
|
||||
* dock栏上应用区驻留应用被拖拽远离dock的距离除以dock的宽或者高(更小的一个)的比值
|
||||
|
Loading…
x
Reference in New Issue
Block a user