diff --git a/src/modules/dock/dock.cpp b/src/modules/dock/dock.cpp index c1a989c..fa7de80 100644 --- a/src/modules/dock/dock.cpp +++ b/src/modules/dock/dock.cpp @@ -536,7 +536,7 @@ bool Dock::requestDock(QString desktopFile, int index) return false; entry->startExport(); - m_entries->append(entry); + m_entries->insert(entry, index); saveDockedApps(); return true; diff --git a/src/modules/dock/entries.cpp b/src/modules/dock/entries.cpp index 65de055..a77d923 100644 --- a/src/modules/dock/entries.cpp +++ b/src/modules/dock/entries.cpp @@ -52,15 +52,15 @@ Entry *Entries::getByInnerId(QString innerId) void Entries::append(Entry *entry) { - // 如果当前应用在列表中存在(通常是该应用为最近打开应用但是关闭了最近打开应用的接口或者当前为高效模式) - if (m_items.contains(entry)) - m_items.removeOne(entry); - insert(entry, -1); } void Entries::insert(Entry *entry, int index) { + // 如果当前应用在列表中存在(通常是该应用为最近打开应用但是关闭了最近打开应用的接口或者当前为高效模式) + if (m_items.contains(entry)) + m_items.removeOne(entry); + if (index < 0 || index >= m_items.size()) { // append index = m_items.size(); diff --git a/src/modules/dock/entries.h b/src/modules/dock/entries.h index 13a8059..328d0de 100644 --- a/src/modules/dock/entries.h +++ b/src/modules/dock/entries.h @@ -41,6 +41,7 @@ public: QVector filterDockedEntries(); Entry *getByInnerId(QString innerId); void append(Entry *entry); + void insert(Entry *entry, int index); void remove(Entry *entry); void move(int oldIndex, int newIndex); Entry *getByWindowPid(int pid); @@ -61,7 +62,6 @@ public: private: void insertCb(Entry *entry, int index); void removeCb(Entry *entry); - void insert(Entry *entry, int index); private: QList m_items;