diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index 96cf53f48..e6db5857c 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -190,6 +190,12 @@ void DockItemManager::appItemAdded(const QDBusObjectPath &path, const int index) } AppItem *item = new AppItem(path); + + if (m_appIDist.contains(item->appId())) { + delete item; + return; + } + manageItem(item); connect(item, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection); @@ -197,6 +203,7 @@ void DockItemManager::appItemAdded(const QDBusObjectPath &path, const int index) connect(item, &AppItem::requestCancelPreview, m_appInter, &DBusDock::CancelPreviewWindow); m_itemList.insert(insertIndex, item); + m_appIDist.append(item->appId()); if (index != -1) { emit itemInserted(insertIndex - 1, item); @@ -220,6 +227,8 @@ void DockItemManager::appItemRemoved(const QString &appId) appItemRemoved(app); } } + + m_appIDist.removeAll(appId); } void DockItemManager::appItemRemoved(AppItem *appItem) diff --git a/frame/controller/dockitemmanager.h b/frame/controller/dockitemmanager.h index 37b45352d..e74c4fb16 100644 --- a/frame/controller/dockitemmanager.h +++ b/frame/controller/dockitemmanager.h @@ -79,6 +79,7 @@ private: static DockItemManager *INSTANCE; QList> m_itemList; + QList m_appIDist; }; #endif // DOCKITEMMANAGER_H