From fd19bc4cf2f8527bc644dcba12207066b68e07fc Mon Sep 17 00:00:00 2001 From: donghualin Date: Fri, 29 Jul 2022 10:21:21 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E4=BB=8E=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=A0=8F=E6=8B=96=E5=8A=A8=E5=9B=BE=E6=A0=87=E5=88=B0?= =?UTF-8?q?=E5=9B=9E=E6=94=B6=E7=AB=99=E5=90=8E=E7=A7=BB=E9=99=A4=E9=A9=BB?= =?UTF-8?q?=E7=95=99=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对于非驻留图标,调用unDock接口的时候,让其直接从列表中移除 Log: 增加从任务栏拖动图标到回收站后移除驻留的功能 Influence: 任务栏-拖动图标到回收站,观察该图标是否移除 Bug: https://pms.uniontech.com/bug-view-147699.html Change-Id: I99ac17f905e10855b77bed5752b7bafa30883cee --- src/modules/dock/dock.cpp | 10 ++++++++++ src/modules/dock/entry.cpp | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/modules/dock/dock.cpp b/src/modules/dock/dock.cpp index 2569030..19c7d42 100644 --- a/src/modules/dock/dock.cpp +++ b/src/modules/dock/dock.cpp @@ -137,6 +137,9 @@ bool Dock::dockEntry(Entry *entry, bool moveToEnd) QString newDesktopFile; if (app) { QString newFile = scratchDir + app->getInnerId() + ".desktop"; + // 在目标文件存在的情况下,先删除,防止出现驻留不成功的情况 + if (QFile::exists(newFile)) + QFile::remove(newFile); if (file.copy(app->getFileName(), newFile)) newDesktopFile = newFile; } else { @@ -196,6 +199,13 @@ void Dock::undockEntry(Entry *entry, bool moveToEnd) { if (!entry->getIsDocked()) { qInfo() << "undockEntry: " << entry->getId() << " is not docked"; + // 在当前未驻留的情况下执行取消驻留操作,则让其直接从当前列表中移除 + // 这种情况一般是在从最近打开应用中拖动应用到回收站的时候执行的操作 + if (!entry->hasWindow()) { + // 没有子窗口的情况下,从列表中移除 + removeAppEntry(entry); + saveDockedApps(); + } return; } diff --git a/src/modules/dock/entry.cpp b/src/modules/dock/entry.cpp index 6fa6826..b9f1cb7 100644 --- a/src/modules/dock/entry.cpp +++ b/src/modules/dock/entry.cpp @@ -627,6 +627,10 @@ void Entry::forceQuit() } } } + // 所有的窗口已经退出后,清空m_windowInfoMap内容 + m_windowInfoMap.clear(); + // 退出所有的进程后,及时更新当前剩余的窗口数量 + updateExportWindowInfos(); } void Entry::presentWindows()