From f37ffc86022b97a3fd320d3f7c9faf7fd8a70883 Mon Sep 17 00:00:00 2001 From: liuxing Date: Tue, 16 Mar 2021 12:35:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8F=92=E4=BB=B6=E5=8C=BA=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E9=BB=98=E8=AE=A4=E9=A1=BA=E5=BA=8F=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 不开窗口特效时,多任务视图会从插件中移除,导致刷新插件顺序,此时插件并没有加载完成,导致默认顺序出错 Log: 插件区应用默认顺序不正确问题修复 Bug: https://pms.uniontech.com/zentao/bug-view-61127.html Change-Id: I4a8d487f1dd5f70529a04ac8e2dfe3ed092ac613 --- frame/controller/dockitemmanager.cpp | 13 +++++++++++-- frame/controller/dockitemmanager.h | 5 +++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index df4b8bf95..cb3d38ce2 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -84,6 +84,7 @@ DockItemManager::DockItemManager(QObject *parent) : QObject(parent) , m_appInter(new DBusDock("com.deepin.dde.daemon.Dock", "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus(), this)) , m_pluginsInter(new DockPluginsController(this)) + , m_loadFinished(false) { //固定区域:启动器 m_itemList.append(new LauncherItem); @@ -117,7 +118,7 @@ DockItemManager::DockItemManager(QObject *parent) connect(m_pluginsInter, &DockPluginsController::pluginItemRemoved, this, &DockItemManager::pluginItemRemoved, Qt::QueuedConnection); connect(m_pluginsInter, &DockPluginsController::pluginItemUpdated, this, &DockItemManager::itemUpdated, Qt::QueuedConnection); connect(m_pluginsInter, &DockPluginsController::trayVisableCountChanged, this, &DockItemManager::trayVisableCountChanged, Qt::QueuedConnection); - connect(m_pluginsInter, &DockPluginsController::pluginLoaderFinished, this, &DockItemManager::updatePluginsItemOrderKey, Qt::QueuedConnection); + connect(m_pluginsInter, &DockPluginsController::pluginLoaderFinished, this, &DockItemManager::onPluginLoadFinished, Qt::QueuedConnection); // 刷新图标 QMetaObject::invokeMethod(this, "refershItemsIcon", Qt::QueuedConnection); @@ -364,7 +365,9 @@ void DockItemManager::pluginItemRemoved(PluginsItem *item) m_itemList.removeOne(item); - updatePluginsItemOrderKey(); + if (m_loadFinished) { + updatePluginsItemOrderKey(); + } } void DockItemManager::reloadAppItems() @@ -420,3 +423,9 @@ void DockItemManager::manageItem(DockItem *item) connect(item, &DockItem::requestRefreshWindowVisible, this, &DockItemManager::requestRefershWindowVisible, Qt::UniqueConnection); connect(item, &DockItem::requestWindowAutoHide, this, &DockItemManager::requestWindowAutoHide, Qt::UniqueConnection); } + +void DockItemManager::onPluginLoadFinished() +{ + updatePluginsItemOrderKey(); + m_loadFinished = true; +} diff --git a/frame/controller/dockitemmanager.h b/frame/controller/dockitemmanager.h index dc9dc4153..79f89d316 100644 --- a/frame/controller/dockitemmanager.h +++ b/frame/controller/dockitemmanager.h @@ -61,6 +61,9 @@ public slots: void itemMoved(DockItem *const sourceItem, DockItem *const targetItem); void itemAdded(const QString &appDesktop, int idx); +private Q_SLOTS: + void onPluginLoadFinished(); + private: explicit DockItemManager(QObject *parent = nullptr); void appItemAdded(const QDBusObjectPath &path, const int index); @@ -80,6 +83,8 @@ private: QList> m_itemList; QList m_appIDist; + + bool m_loadFinished; // 记录所有插件是否加载完成 }; #endif // DOCKITEMMANAGER_H