fix: 插件区应用默认顺序不正确

不开窗口特效时,多任务视图会从插件中移除,导致刷新插件顺序,此时插件并没有加载完成,导致默认顺序出错

Log: 插件区应用默认顺序不正确问题修复
Bug: https://pms.uniontech.com/zentao/bug-view-61127.html
Change-Id: I4a8d487f1dd5f70529a04ac8e2dfe3ed092ac613
This commit is contained in:
liuxing 2021-03-16 12:35:23 +08:00
parent d7f3698714
commit f37ffc8602
2 changed files with 16 additions and 2 deletions

View File

@ -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;
}

View File

@ -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<QPointer<DockItem>> m_itemList;
QList<QString> m_appIDist;
bool m_loadFinished; // 记录所有插件是否加载完成
};
#endif // DOCKITEMMANAGER_H