From ba695a3fc5415c9d47df58ab4d9dcfd1d4e4b7a8 Mon Sep 17 00:00:00 2001 From: chenzhe Date: Mon, 30 Dec 2019 11:10:36 +0800 Subject: [PATCH] fix:Do not drag when dock icon is deleted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 任务栏图标删除时取消拖拽状态 (task:13009) --- frame/controller/dockitemmanager.cpp | 4 ++++ frame/controller/dockpluginscontroller.cpp | 5 +++++ frame/item/dockitem.cpp | 5 +++++ frame/item/dockitem.h | 1 + 4 files changed, 15 insertions(+) diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index 945d4fe94..3e09e3289 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -223,6 +223,10 @@ void DockItemManager::appItemRemoved(AppItem *appItem) { emit itemRemoved(appItem); m_itemList.removeOne(appItem); + + if (appItem->isDragging()) { + QDrag::cancel(); + } appItem->deleteLater(); } diff --git a/frame/controller/dockpluginscontroller.cpp b/frame/controller/dockpluginscontroller.cpp index babfb149e..7aad842a5 100644 --- a/frame/controller/dockpluginscontroller.cpp +++ b/frame/controller/dockpluginscontroller.cpp @@ -25,6 +25,7 @@ #include #include +#include DockPluginsController::DockPluginsController(QObject *parent) : AbstractPluginsController(parent) @@ -85,6 +86,10 @@ void DockPluginsController::itemRemoved(PluginsItemInterface *const itemInter, c // do not delete the itemWidget object(specified in the plugin interface) item->centralWidget()->setParent(nullptr); + if (item->isDragging()) { + QDrag::cancel(); + } + // just delete our wrapper object(PluginsItem) item->deleteLater(); } diff --git a/frame/item/dockitem.cpp b/frame/item/dockitem.cpp index 2f5fb8ace..ed2111f12 100644 --- a/frame/item/dockitem.cpp +++ b/frame/item/dockitem.cpp @@ -432,3 +432,8 @@ void DockItem::hideNonModel() if (m_popupShown && !PopupWindow->model()) hidePopup(); } + +bool DockItem::isDragging() +{ + return m_draging; +} diff --git a/frame/item/dockitem.h b/frame/item/dockitem.h index f9af38cd8..9b69e4dfe 100644 --- a/frame/item/dockitem.h +++ b/frame/item/dockitem.h @@ -67,6 +67,7 @@ public slots: void hidePopup(); virtual void setDraging(bool bDrag); + bool isDragging(); signals: void dragStarted() const; void itemDropped(QObject *destination, const QPoint &dropPoint) const;