From ef9776dd9fcc1fca8176e5c0a7a9f79c117e9e08 Mon Sep 17 00:00:00 2001 From: Wu Jiangyu Date: Wed, 12 Aug 2026 12:03:28 +0800 Subject: [PATCH] fix(dock): raise dock to LayerOverlay on Wayland MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 点击任务栏插件区图标(网络/音量)弹出面板时,通知横幅(bubble)层级显示在面板上层。 根因:dock 为 LayerTop,bubble 为 LayerOverlay,dock 弹窗经 get_popup 继承 dock 层故低于 bubble。 修复:Wayland 下 dock 升至 LayerOverlay,弹窗继承 Overlay 后同层后映射在上压过 bubble。 X11 维持 LayerTop——x11dlayershellemulation 将 LayerOverlay 映射为 Notification 窗口类型, 会导致 KeepShowing 模式下 exclusionZone/strut 失效回归。 Log: 升级 dock 至 LayerOverlay(Wayland) 修复弹窗被通知横幅遮挡 Influence: dock 弹窗与通知横幅/通知中心/OSD 的 z-order 关系 PMS: BUG-373349 --- panels/dock/package/main.qml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/panels/dock/package/main.qml b/panels/dock/package/main.qml index a9a01f077..fef5fc541 100644 --- a/panels/dock/package/main.qml +++ b/panels/dock/package/main.qml @@ -69,8 +69,10 @@ Window { } DLayerShellWindow.anchors: position2Anchors(positionForAnimation) - DLayerShellWindow.layer: DLayerShellWindow.LayerTop - DLayerShellWindow.exclusionZone: Panel.hideMode === Dock.KeepShowing ? Applet.dockSize : 0 + // Wayland: 升至 LayerOverlay,使 dock 弹窗经 get_popup 继承本层后压过通知横幅(bubble)。 + // X11: 维持 LayerTop——x11dlayershellemulation 将 LayerOverlay 映射为 Notification 窗口类型, + // 会导致 KeepShowing 模式下 exclusionZone/strut 失效(见 x11dlayershellemulation.cpp:110 FIXME)。 + DLayerShellWindow.layer: Qt.platform.pluginName === "wayland" ? DLayerShellWindow.LayerOverlay : DLayerShellWindow.LayerTop DLayerShellWindow.scope: "dde-shell/dock" DLayerShellWindow.keyboardInteractivity: DLayerShellWindow.KeyboardInteractivityNone