diff --git a/src/modules/dock/dock.cpp b/src/modules/dock/dock.cpp index c1a7384..1cf5499 100644 --- a/src/modules/dock/dock.cpp +++ b/src/modules/dock/dock.cpp @@ -1274,15 +1274,6 @@ void Dock::markAppLaunched(AppInfo *appInfo) dbusHandler->markAppLaunched(desktopFile); } -/** - * @brief Dock::deleteWindow 删除窗口 TODO 检查必要性 - * @param xid - */ -void Dock::deleteWindow(XWindow xid) -{ - entries->deleteWindow(xid); -} - /** * @brief Dock::getForceQuitAppStatus 获取强制关闭应用状态 * @return diff --git a/src/modules/dock/dock.h b/src/modules/dock/dock.h index 2fc3069..06b260d 100644 --- a/src/modules/dock/dock.h +++ b/src/modules/dock/dock.h @@ -81,7 +81,6 @@ public: AppInfo *identifyWindow(WindowInfoBase *winInfo, QString &innerId); void markAppLaunched(AppInfo *appInfo); - void deleteWindow(XWindow xid); ForceQuitAppMode getForceQuitAppStatus(); QVector getWinIconPreferredApps(); diff --git a/src/modules/dock/entries.cpp b/src/modules/dock/entries.cpp index 44bfa39..02ff600 100644 --- a/src/modules/dock/entries.cpp +++ b/src/modules/dock/entries.cpp @@ -188,16 +188,6 @@ void Entries::handleActiveWindowChanged(XWindow activeWindId) } } -void Entries::deleteWindow(XWindow xid) -{ - for (auto entry : items) { - if (entry->containsWindow(xid)) { - entry->deleteWindow(xid); - break; - } - } -} - void Entries::updateEntriesMenu() { for (auto entry : items) { diff --git a/src/modules/dock/entries.h b/src/modules/dock/entries.h index 5dde76e..298b38f 100644 --- a/src/modules/dock/entries.h +++ b/src/modules/dock/entries.h @@ -47,7 +47,6 @@ public: Entry *getDockedEntryByDesktopFile(const QString &desktopFile); QString queryWindowIdentifyMethod(XWindow windowId); void handleActiveWindowChanged(XWindow activeWindId); - void deleteWindow(XWindow xid); void updateEntriesMenu(); void insertCb(Entry *entry, int index); void removeCb(Entry *entry); diff --git a/src/modules/dock/entry.cpp b/src/modules/dock/entry.cpp index ba7d3f9..3b5077d 100644 --- a/src/modules/dock/entry.cpp +++ b/src/modules/dock/entry.cpp @@ -439,6 +439,7 @@ void Entry::updateExportWindowInfos() Q_EMIT windowInfosChanged(infos); } + // 更新导出的窗口信息 exportWindowInfos = infos; } @@ -447,7 +448,11 @@ bool Entry::detachWindow(WindowInfoBase *info) { info->setEntry(nullptr); XWindow winId = info->getXid(); - deleteWindow(winId); + if (windowInfoMap.contains(winId)) { + WindowInfoBase *info = windowInfoMap[winId]; + windowInfoMap.remove(winId); + delete info; + } if (windowInfoMap.isEmpty()) { if (!isDocked) { @@ -509,16 +514,6 @@ bool Entry::containsWindow(XWindow xid) return windowInfoMap.find(xid) != windowInfoMap.end(); } -void Entry::deleteWindow(XWindow xid) -{ - if (windowInfoMap.contains(xid)) { - WindowInfoBase *info = windowInfoMap[xid]; - windowInfoMap.remove(xid); - exportWindowInfos.remove(xid); - delete info; - } -} - // 处理菜单项 void Entry::handleMenuItem(uint32_t timestamp, QString itemId) { @@ -639,7 +634,7 @@ void Entry::active(uint32_t timestamp) dock->doActiveWindow(xid); } else { bool found = false; - bool hiddenAtom = XCB->getAtom("_NET_WM_STATE_HIDDEN"); + XWindow hiddenAtom = XCB->getAtom("_NET_WM_STATE_HIDDEN"); for (auto state : XCB->getWMState(xid)) { if (hiddenAtom == state) { found = true; diff --git a/src/modules/dock/entry.h b/src/modules/dock/entry.h index a85b535..93d42df 100644 --- a/src/modules/dock/entry.h +++ b/src/modules/dock/entry.h @@ -76,7 +76,6 @@ public: bool attachWindow(WindowInfoBase *info); void launchApp(uint32_t timestamp); bool containsWindow(XWindow xid); - void deleteWindow(XWindow xid); void handleMenuItem(uint32_t timestamp, QString itemId); void handleDragDrop(uint32_t timestamp, QStringList files);