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