From 2a229d30c87af2ede8bf264c8545b473575b2a6b Mon Sep 17 00:00:00 2001 From: donghualin Date: Mon, 21 Nov 2022 14:39:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E6=9C=80=E8=BF=91=E6=89=93=E5=BC=80=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E5=81=B6=E7=8E=B0=E9=94=81=E5=B1=8F=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在创建应用窗口对象的时候,过滤锁屏的图标 Log: Influence: 进入wayland,任务栏时尚模式,打开显示最新打开应用,锁屏,进入桌面,观察任务栏最近打开区域是否存在锁屏图标 Bug: https://pms.uniontech.com/bug-view-171529.html Change-Id: I43d3d98fea4f2c0cdaec62b551e275ba2960c624 --- src/modules/dock/waylandmanager.cpp | 14 +++++++++++--- src/modules/dock/windowinfok.cpp | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/modules/dock/waylandmanager.cpp b/src/modules/dock/waylandmanager.cpp index 2052e2a..e536da0 100644 --- a/src/modules/dock/waylandmanager.cpp +++ b/src/modules/dock/waylandmanager.cpp @@ -50,10 +50,18 @@ void WaylandManager::registerWindow(const QString &objPath) return; } - QString appId = plasmaWindow->AppId(); - QStringList list {"dde-dock", "dde-launcher", "dde-clipboard", "dde-osd", "dde-polkit-agent", "dde-simple-egl", "dmcs"}; - if (list.indexOf(appId) >= 0) + if (!plasmaWindow->IsValid() || !plasmaWindow->isValid()) { + qWarning() << "PlasmaWindow is not valid:" << objPath; + delete plasmaWindow; return; + } + + QString appId = plasmaWindow->AppId(); + QStringList list {"dde-dock", "dde-launcher", "dde-clipboard", "dde-osd", "dde-polkit-agent", "dde-simple-egl", "dmcs", "dde-lock"}; + if (list.indexOf(appId) >= 0 || appId.startsWith("No such object path")) { + delete plasmaWindow; + return; + } XWindow winId = XCB->allocId(); // XCB中未发现释放XID接口 XWindow realId = plasmaWindow->WindowId(); diff --git a/src/modules/dock/windowinfok.cpp b/src/modules/dock/windowinfok.cpp index 9a8254b..775bdee 100644 --- a/src/modules/dock/windowinfok.cpp +++ b/src/modules/dock/windowinfok.cpp @@ -40,7 +40,7 @@ WindowInfoK::WindowInfoK(PlasmaWindow *window, XWindow _xid) WindowInfoK::~WindowInfoK() { - + delete m_plasmaWindow; } bool WindowInfoK::shouldSkip()