From 0187ab1151937b9e357d32290fe451d46e91b387 Mon Sep 17 00:00:00 2001 From: chenjun Date: Wed, 22 Jul 2020 17:08:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9C=A8Dock=E6=8E=A5=E6=94=B6=E5=88=B0?= =?UTF-8?q?EntryAdded=E4=BF=A1=E5=8F=B7=E6=97=B6=EF=BC=8C=E5=85=88?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E7=9B=B8?= =?UTF-8?q?=E5=90=8CappID=E7=9A=84=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dock的Daemon守护进程在应用打开时,有时会连续发送多次EntryAdded信号,Dock在接收到多个信号时,会在界面上创建多个相同的应用 图标,因此在接收到此信号时,先判断下是否已经存在相同appID的应用图标,如果存在则不再创建图标。 Log: 修复反复启动画板,任务栏会出现双图标问题(bug: 38782) Bug: https://pms.uniontech.com/zentao/bug-view-38782.html Change-Id: I730ca14be1c466f50f579d3237e989fd95a4756e --- frame/controller/dockitemmanager.cpp | 9 +++++++++ frame/controller/dockitemmanager.h | 1 + 2 files changed, 10 insertions(+) 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